12.05.2015 | Yazar : Murat | Kategori :

Yazılımcı Konsantrasyonu, Beyin Akış Modu ve Bölünmeler

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 dakika zaman 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 smile ifade simgesi )
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.

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)

yorumlar

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Afiseaza emoticoanele Locco.Ro