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

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 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 🙂 )
    • 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 [1] 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)

Konuyla ilgili bundan sonraki yazılarımızda “Yazılımcı bölünme maliyeti” ve “Yazılımcıların bölünmesine karşı önlemler” üzerinde duracağız.

Kaynaklar

  1. http://blog.ninlabs.com/

Dr. Deniz KILINÇ

(Visited 338 times, 1 visits today)

41 Comments

  1. ibrahim sarı 15 Ağustos 2013 at 07:45

    Mükemmel olmuş hocam, devamını sabırsızlıkla bekliyorum.

    Reply
    1. Deniz KILINÇ 15 Ağustos 2013 at 16:14

      Teşekkürler İbrahim, gücüm yettiğince devam 🙂

      Reply
  2. Yiğit Pilevne 15 Ağustos 2013 at 17:48

    Harika bir araştırma. Bunun eziyetini çok çektim. İddia ediyorum, personeline istediği ortamı sağlayanlar daha performanslı çalışanlara kavuşacaklar.

    Performans arttırmak isteyen yöneticilere duyurulur.
    Lanet olası federaller 🙂

    Reply
    1. Deniz KILINÇ 15 Ağustos 2013 at 18:29

      Teşekkürler Yiğit. Aslında bu konuda sıkıntı yaşamayan yazılımcı yok 🙂 Kayıp ise milyonlarca TL/dolar. Ancak çözümler de mevcut. Yeter ki bu problem kabul edilsin ve üzerine gidilsin…

      Reply
      1. Yiğit Pilevne 15 Ağustos 2013 at 18:43

        Benim bir ara çalıştıgım bir ofiste, bir abi, ara ara gelip, “Peynir geldi, peynir isteyen var mı?” diye bağırırdı. Kimse de demiyor ki, “Burada konsantrasyon en önemli şey, bağırma” 🙂 En azından peynirci abiyi uzaklaştırsalar, başlangıç için yeterli olur sanırım 🙂

        Reply
        1. Deniz KILINÇ 15 Ağustos 2013 at 18:45

          Bak bu iyiymiş Yiğit 🙂 Bu adam yazılımcı değildir inşallah 🙂

          Reply
          1. Yiğit Pilevne 15 Ağustos 2013 at 18:47

            Yok değildi, memleketinden peynir gelince almak isteyenlere satan bir abiydi. Ofisin ortasına gelir ve bağırırdı. Seni görür, kulağında kulaklık mesela, el sallar, peynir istiyormusun der gibi gözüne bakardı 🙂

  3. Deniz KILINÇ 15 Ağustos 2013 at 18:50

    Vereceğim derslerde bu olayı mutlaka kullanacağım, çok iyiymiş 🙂

    Reply
  4. secgincaner 6 Kasım 2013 at 23:35

    Çok güzel bir yazı olmuş daha detaylı ve daha çok öneri sunan yazılarınızı bekliyom.Emeğinize sağlık.

    Reply
    1. Deniz KILINÇ 7 Kasım 2013 at 07:23

      Teşekkür ederim. İnşallah zaman buldukça yazılarıma devam edeceğim.

      Reply
    1. Deniz KILINÇ 4 Aralık 2013 at 08:54

      Teşekkürler Furkan, Pomodoro teori olarak bildiğim ancak bir fiil tecrübe etmediğim bir teknikti. Özellikle gönderdiğin linkteki Pomodoro yazılımını çok beğendim. Basit ve kullanışlı.

      Müsait olursan bana pratikte edindiğin tecrübelerin artı ve eksi yollarını mail atabilir misin? İstersen burada da paylaşabilirsin.

      Reply
      1. Furkan Kaynak 15 Aralık 2013 at 21:23

        Tabiki de paylasirim. Biraz gec cevap yazdim gormemisim cunku 🙂

        Reply
  5. serkanyarbas 6 Aralık 2013 at 20:10

    2 saat kesilmeden çalışabildiğim gün şükredecem 😀

    Reply
    1. Deniz KILINÇ 6 Aralık 2013 at 20:16

      2 saat bir çok iyi bir süre 🙂 Özellikle iş yerinde neredeyse imkansız gibi 🙂

      Reply
  6. ismail kocacan 6 Aralık 2013 at 23:20

    Hocam süper tespit olmuş
    Her cümleyi okuduğumuzda kendimizi bulduk 😀
    Devamını bekliyoruz 🙂

    Reply
    1. Deniz KILINÇ 7 Aralık 2013 at 19:03

      Teşekkürler İsmail. Devamını mutlaka getireceğim 🙂

      Reply
  7. ismailkocacan 6 Aralık 2013 at 23:50

    Hocam süper tespit olmuş
    Her cümlede kendimizi bulduk 😀
    Devamını bekliyoruz 🙂

    Reply
  8. Kadir Caner Ergün 17 Aralık 2013 at 10:16

    Konu o kadar güzel özetlenmiş ki tebrik ederim 🙂 Proje yöneticilerinin okuması gereken bir konu :p

    Reply
  9. Uğur Karadeniz 23 Aralık 2013 at 17:56

    Hocam çok güzel olmuş 🙂 Her ne kadar okuldaki yazılım sınavlarımız da da aynı durum olsa da gerçekten çok doğru. 🙂

    Reply
  10. mirza alkazar 8 Ocak 2014 at 07:40

    çok güzel bir makale olmuş fakat motivasyonun önemli olduğunun farkında olan bazı mecralar, motivasyon vermek yerine antimovitasyon verdiklerinin farkında değiller…

    Reply
    1. Deniz KILINÇ 8 Ocak 2014 at 08:34

      Teşekkür ederim Mirza. Haklısın insanların/yöneticilerin bu yanlışa düşmesinin sebebi, öncelikle karşısındaki kişiyi insan yerine koymamalarından kaynaklanıyor diye düşünüyorum. Biraz tanımaya bile tenezzül etmeyebiliyorlar. Dolayısıyla daha işin teknik boyutuna giremeden, çuvallıyoruz. Öncelikle karşımızdakini tanımak belirli özelliklerini bilmek sonrasında ilgili motivasyon tekniğini şeffaf bir şekilde uygulamak gerekiyor. Tabi bunlar büyük zahmet ve zaman kaybı olarak da görülebilir 🙂 Anlayana 🙂

      Reply
  11. Emre Kıyak 24 Ocak 2014 at 19:04

    Harika bir araştırma. Bilişim sektörü iş verenleri bu konuda mutlaka fikir sahibi olmalılar. Bir yazılımcı olarak günde ortalama 3 saatlik bir çalışma gerçekleştirdiğimizi söylediğimde sebebini kavrayamayanlar için cevap niteliğinde.

    Reply
    1. Deniz KILINÇ 25 Ocak 2014 at 11:38

      Teşekkürler Emre. Verimli 3 saat, verimsiz 8 saatten iyidir.

      Reply
  12. Mesut Yılmaz 16 Temmuz 2014 at 13:00

    Okulda en çok sıkıntı çektiğim sorun.Üniversite yurdunda 4 kişilik odada kalıyorum ve sırf kendime kod yazabilecek alan,sessizlik yaratılabilmek için çevremdekilerle muhattabı kesiyorum hatta bazen sevilmeyen kişi olabiliyorum.Hatta bazen oda da bir kaç günlük küs havası yaratıp o bir kaç günün sessizliğini kod yazmak için kullanıyorum, yetiyor mu tabi ki yetmiyor yine istediğim notların altında kalıyorum, çok daha iyisini yapabileceğimi bildiğim halde.O yüzden yazdığınız şeyleri kendi üzerimde coğu defa tespit etmiş bu dertten son derece muzdarip bir mühendis adayıyım.Çoğu zaman kendimi bu bölünmeler ve dikkat dağıtan insanlar, sesler yüzünden patinaj çekiyor gibi hissediyorum, çalışıyorum ama ilerleyemiyorum, % 30-40 verimle çalışıyorum. %60-70 verime çıkabildiğim günler ise benim için nimet. 🙂

    Reply
    1. Deniz KILINÇ 17 Temmuz 2014 at 07:20

      Selam Mesut, Bazı öğrencilerim de aynı durumdan müzdarip olmuş ve senin gibi denemeler yaptıktan sonra anlaşabilecekleri dört arkadaş eve çıkmışlardı. Belki denemişsindir ama kulaklık takarak (müzik dinle veya dinleme) çalışmak senin adına bir çözüm olabilir. Basit ama etkilidir. Firmalarda birçok yazılımcıyı ortam çok sesli olmasa dahi kulaklıkla çalışırken görebilirsin, şimdiden alışmış olursun 🙂

      Reply
  13. uur 13 Aralık 2014 at 09:07

    Deniz bey , çok güzel bir makale olmuş, keyif alarak okudum. Bahsettiğiniz durumları çok sık yaşamıyorum. Çok şükür odada tek başıma çalışma imkanım var . Bahsettiğiniz gibi, biri gelip soru sorduğunda soran kişinin yüzüne boş boş baktığım anlar gözümün önüne geldi :). Yazdıklarınızın hepsi yazılımla uğraşan insanların başından geçmiştir. Mükemmel tespit.

    Reply
  14. Arda 23 Mayıs 2015 at 22:12

    dört farklı hepsi de ilk 30 da yer alan büyük perakende şirketlerinin e-ticaret projesinin ana yazılımcısıyım, müşterinin ofisinde çalışıyorsa, pomodoro, timer vs… sökmüyor. Günde 1 saat iş çıkıyorsa şükrediyoruz. Mecburen akşam evimizde, caffe nero da, starbucksta , sessiz bir yerde işi bitirip gündüz de müşteriye bildiğin goygoy yapmaya gidiyoruz 🙂 Work – life balance denen denge bozuluyor, alınan 20+ kilo, yetişmeyen işler … İşi sevmesem bu kadarına katlanamam. Spor, arkadaşlarla gezmek , kitap okumak ki bunlar büyük bir hayal oldu artık.

    Reply
  15. Gökhan Çelik 20 Mayıs 2016 at 04:22

    Anlayan varmış demek ki, özellikle odaya birinin girmesi ve sorular..

    Reply
    1. Deniz KILINÇ 21 Mayıs 2016 at 07:52

      Bu durumda olan pek çok meslektaşımız var, yalnız değilsiniz 🙂

      Reply

Yorum Bırak

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