Giriş
Yazılım geliştirme yaratıcı bir iş
çıkartmayı hedefleyen bir süreç olup, mutlak dikkat ve konsantrasyon
gerektirir. Chicago Üniversitesi Psikoloji Bölüm Başkanı Mihaly
Csikszentmihalyi tarafından yapılan bir çalışmada yazılımcıların beyinlerinin
sanatçıların çalışma tarzına sahip olduğu görülmüştür. Programlama sırasında
beyin bir“akış” (flow) moduna geçmekte, etrafla ilişkisini kesmekte ve bir
probleme günlerce konsantre olabilmektedir. Ciddi bir çevresel izolasyon
gerektiren akış moduna girildiğinde, üretkenlik maksimum düzeydedir ve tüm
kritik kodlamalar bu seviyede yapılır.
Akış
moduna giriş, zaman alan ve karmaşık bir süreç olup, çözülmesi gereken
problemle veya yapılması gereken işle ilgili gerekli bilgiler toplanır.
Örneğin:
§ Olası çözümler
§ İlgili metotlar
§ Değişkenler
§ Parametreler
§ Kullanıcı ara yüzleri
§ Nesneler ve veri
yapıları
§ İş akışları
Bu süreçte bu bilgiler beynin kısa süreli
hafızasında (short term memory space) biriktirilir, harmanlanır ve çalışmaya
hazır hale gelinir. Yapılan farklı çalışmalara göre yazılımcının beyninin
“akış” moduna geçmesi yaklaşık 15 dakikazaman almaktadır. Tam akış moduna
girmiş ve programlamaya devam ederken yazılımcının herhangi bir nedenden
dolayı bölünmesi (interruption) beyninin kısa süreli hafızasındaki
topladığı bilgilerin silinmesine neden olur. Dolayısı ile yazılımcının tekrar
işe dönüp çalışması yine 10-15 dakika daha zaman alacaktır.
Bölünme (Interruption) Nedir?
Akış
modunda olsun veya olmasın, yazılımcının dikkatinin dağılmasına ve
konsantrasyonunun bozulmasına neden olan her şey bölünmedir? Bölünmeler değişik
türlerde ve zamanlarda gerçekleşebilirler. Tipik bölünmeler:
§ Odaya bir kişinin
girmesi
§ Odada gürültü olması
§ Tam bir işin
ortasındayken başka acil bir işin gelmesi (Daha sonra ondan da acil işin
gelmesi)
§ Telefon gelmesi
§ Acil konulu e-posta
gelmesi
§ Anlık mesajlaşmalar
§ Arkadaş soruları
§ Bu fonksiyon tam olarak
nasıl kullanılıyor anlamadım?
§ Bir hata aldım debug
etsem de çözemiyorum. Evet dediğin yerlere baktım ama yine de işin içinden
çıkamıyorum. Sonrasında daha üzerimde bekleyen çok acil hatalar var. Yardım
edebilir misin? (Klasik ama etkili :) )
§ Kalemini alabilir miyim?
§ Çay alacağım sen de
ister misin?
§ Şurada indirim var
duydun mu?
§ Tatildeki fotoğraflarıma
bakalım mı?
§ Dünkü maçı izledin mi?
Gerçek hayattan bir örnek: Akış sürecine
girmiş bir yazılımcının yanına gidip soru ile onu bölmeye çalıştığınızda;
öncelikle size bir süre (5-10 saniye) garip garip bakabilir. Tam da bu noktada
yazılımcının beyni akıştan çıkmamak için direnç göstermeye başlamıştır.
Öncelikle olabildiğince sizi uzaklaştırabilecek basit cevaplar verir (Evet,
Hayır, 2 dakika sonra vb.). Bu cevapları üretip tekrar kaldığı yerden devam
etmesi bile 2-3 dakika zaman almaktadır. Baktı ki karşısındaki kişi tatmin
olmuyor ve sormaya devam ediyorsa, yazılımcı pes edip akış modunu keser ve
ciddi bir zaman kaybı yaşanır.
Bazı Çalışmalar
Parnin tarafından yapılan
çalışmada Eclipse ve Visual Studio kullanan 86 programcının yaptığı 10,000
programlama oturumu ve 414 programcının anket analizi sonrasında aşağıdaki
sonuçlar ortaya çıkmıştır.
§ Bir yazılımcının
herhangi bir bölünme sonrasında tekrar kodlamaya başlaması yaklaşık (ortalama)
10-15 dakika sürmektedir.
§ Yazılımcılar günde
sadece 2 saatlik kesilmeden çalışabilmektedirler.
Yazılımcılar bu bölünmelerle
baş etmek ve tekrar hızlıca kodlamaya dönebilmek için aşağıdaki yöntemleri
denemektedirler.
§ Kağıtlara notlar alırlar
§ Derleme hatasına neden
olacak hatırlatıcılar veya breakpoint’ler koyarlar
§ Son kaldıkları kod
satırından devam etmeye çalışırlar (Genelde başarısız olurlar, bu satıra nasıl
geldiklerini hatırlamak veya işlerini garantiye almak için başa dönerler)
§ Kaynak kod tarihçesine
dönerler ve kaynak kod farklarına bakarlar (30 dakika önce yaptıklarını hatırlamak
için)
Kaynaklar
Hiç yorum yok :
Yorum Gönder