![]()
From: SkyMind (skymind@latonnere.com)
Date: Tue 07 Dec 2004 - 14:56:56 EET
Bir arkadasim bana bir mail forwardlamisti bu konu ile ilgili aynen asagiya
yapistiriyorum.
[harezmi@yahoogroups.com, yazar: MEHMET SINAN ESGIN]
Merhabalar bu gruba ilk yazı yazışım olacak, gruba geçen sene Bedir hocamın
tavsiyesi ve daveti ile katılmıştım. Yeni mezun olduğum için şu ana kadar
sadece okuyarak kendimi geliştirmeye çalışıyordum ama bu yazının hoşunuza
gidebileceğini düşündüm. Umarım beğenirsiniz. Yoğun tempomuza hoş bir ara
olur umuduyla...
Programcılıkta sabahlamanın verdiği huzur ve tatmin çok meşhur. Programcılar
sabaha kadar çalışma konusunda herkesi şaşırtan derecede istekli ve
beceriklidir. Bu gece çalışması boyunca beyin bir "akış" yakalayarak
saatlerin su gibi geçtiği bir çalışma ortamı oluşur. Bu çalışma sırasında
beyin en derin konsantrasyon düzeylerine erişir ve genellikle zor programlar
bu kesintisiz, onlarca saat süren çalışmalarda ortaya çıkar. Beyin bu stilde
çalışırken kişilerin mutlu oldukları, mutluluk düzeylerinin arttığı bilimsel
çalışmalarla gözlemlenmiştir. Bu çalışmalar eski Chicago Üniversitesi
Psikoloji Bölüm Başkanı Mihaly Csikszentmihalyi tarafından yapılmıştır.
Çalışmalarda çeşitli disiplinlerden yüzlerce kişinin günlük uğraşları
incelenmiş ve bu sırada "mutluluk" düzeyleri gözlemlenmiştir. Bu
çalışmaların programcılar tarafındaki bulguları ise ilginçtir. Her ne kadar
programcılık bir bilim dalı (Computer Science), bir mühendislik (Software
Engineering) olarak düşünülse de programcıların beyninin sanatçıların
çalışma stiline sahip olduğu ortaya çıkmıştır. Programcılık sırasında beyin
bir "akış" moduna geçmekte, etraftan ilişkisini kesmekte ve bir probleme
günlerce konstantre olabilmektedir.
Başarılı programcıların çoğu konsantrasyon yetenekleri ile çevrelerini
şaşırtır. Saatlerce sıkılmadan bir ekran başında vakit harcayabilirler. Bu
saatler bir çok kez günlere kadar uzayabilir. Yaşamsal faaliyetler dışında
hemen hemen her şeyden izolasyon gereklidir.
Microsoft'ta Office yazılım geliştirme ekibinden bir programcının kendini
odasına kilitleyip "bitmeden çıkmayacağım" demesi, Bill Gates'e bile kapıyı
açmaması meşhurdur. Bu olay daha sonra Douglas Coupland'ın Microserfs (1996)
kitabına konu olmuştur.
Bu sırada kendini odaya kilitleyen programcının arkadaşlarının süper
marketten gidip yassı yiyecekler alması ve kapının altından odaya atmaları,
programcılar arasındaki dayanışmanın güzel ve sevimli bir örneği.
Bu çalışma sırasında programcı en derin düşüne moduna geçer ve etraftan
kendini izole etmeye çalışır. Bir çok programcı bu amaçla müziği kullanır.
Ancak müziğin programcılık sırasında beyne olan etkileri üzerine yapılan
çalışmaların bulguları şaşırtıcıdır. Kreatif programlama ile müzik dinleme
sırasında kullanılan beyin bölgesi aynıdır. Beyin bir müziğe konsantre
olmuşken çok derin programcılık yapılamıyor. Ya da yeteri kadar iyi
yapılamıyor. Programcının müziği kapatınca etraftaki gürültünün etkisi ile
müziği dinlediğinde beynin gerekli bölgesinin meşgul edilmesi arasında bir
tercih yapması gerekir. Tahminen bu nedenle izolasyon amaçlı müzik
kullanımında elektronik müziğin, hard rock, alternatif rock ve heavy metal
gibi müzik türlerinin daha fazla tercih edildiği görülür. Müzik, beyin ve
programcılar üzerinde çalışmalar halen sürüyor, bu derin konu araştırılmaya
devam ediyor. Şu anki bulgular, kritik kodların geliştirilmesi ve müzik
dinleme sırasında kullanılan beyin bölgelerinin aynı olduğunu gösteriyor.
Monoton kodlama (maintenance) diyebileceğimiz program geliştirme kısmı ise
beynin başka bir bölümünde gerçekleşir. Bu tür kodların geliştirilmesi
sırasında müziğin programlamaya herhangi bir negatif etkisi görülmemiştir.
Programcının kritik kodları yazmak için ihtiyaç duyduğu "akış" modunu
koruyabilmesi için izolasyona ihtiyacı bulunur. Bu izolasyon arttıkça
çalışma derinleşir, ilk önce beyinde yazılmak istenen programın çatısı
oluşur, problem önce beyinde çözülür, daha sonra beyinde çözülen bu problem
koda çevrilir.
Programcının beyni pencereden dışarıyı seyrederken ya da gözler sabit bir
yere bakıp dalıp gittiği zaman bu problem çözülmeye çalışılır. Hatta
programcının beyni bu problemi uyurken, araba sürerken ve diğer başka
monoton işleri yaparken ele almaya devam eder. Bu durumda sıfırdan ve baştan
yazılan bir programa bakıldığında kodlama toplam sürenin oldukça az bir
bölümünü almaktadır.
Bu çalışma sırasında beyin son derece karmaşık bir aktivite içerisine
girmiştir. Var olmayan bir çözümü oluşturmak için "kreatif" süreç
başlamıştır. Bu süreç duyu organlarını izole etmiş ve yaratıcılığa
yoğunlaşmıştır. Bu süreç sırasında programcı onlarca konuda karar
vermektedir. Değişken isimlerinden, akış yöntemlerine, parametrelerin
cinsinden, kullanıcı ara birimine kadar bir programcı sürekli bir "karar
alma"
uğraşısı içerisindedir. Programcılar bu nedenle bir günde yüzlerce kararın
altına imza atma becerisine sahip iyi birer karar vericidirler.
Tam bu yoğun programlama sırada birisinin programcının omzuna dokunduğu
zaman bir "ara verme" operasyonu başlar. Bu ara verme operasyonu tam gaz
giden bir arabada aniden frene basma gibidir. Derinleşen "kreatif" süreç
derinliğini yitirir ve duyu organları "açılarak" omuza dokunan kişi ile
iletişime geçilir.
Bu geçiş çoğu zaman o kadar kolay olmamakta ve programcılar bu nedenle zor
iletişim kurulan kişiler olarak görülmektedir. Bir soru sorulmaktadır. Eğer
bu soru şu an üzerinde çalışılan konuyla ilgili ise mevcut kreatif süreç bu
soruyu cevaplamakta kullanılır. Sorunun "bağlam" ile ilgili olması, sürecin
durdurulmasını gerektirmez. Örneğin bir veri tabanı tasarımında yandaki
programcı bir tablodaki alanın ne işe yaradığını sorduğunda süreç
durdurulmadan cevap verilebilir. Cevabın verilmesi için gerekli bütün
malzeme, zaten o sırada beynin çalışma bölgesine getirilmiş hazır halde
bulunmaktadır.
Ama eğer bu soru bambaşka konularla ilgiliyse: "Bu iş ne zaman bitecek"ten
tutun da , "dün maçı seyrettin mi?" ye kadar değişik açılardan gelen bir
soru olabilir. Bu durumda ancak bu kreatif süreç durdurularak bu soruya
cevap verilebilmektedir. Ya da çoğu programcı bu soruyu "duyacak" ama
"algılamayacaktır". O an durumu kurtaracak bir cevap
vereceklerdir: "yarına biter" vs gibi. Yapılan
basittir: kreatif süreç bölünmeden çalışmaya devam etmek istenmektedir. Bu
sırada soruyu soran kişi doğal olarak programcıların zor iletişim kurulan
kişiler olduğunu düşünecektir. Oysa programcının beyni hız kesmemeye
çalışmaktan başka bir şey yapmamaktadır.
Programcılar çoğu zaman konuşmayı pek sevmeyen ve zor iletişim kuran kişiler
olarak bilinmektedir. Bu yanlış inancın temelinde, programcıların konsantre
olma yetenekleri ve bölünmelere karşı geliştirdikleri iletişim "önlemleri"
yatmaktadır. Oysa yazılım geliştirme ekipleri oldukça konuşkan olabilirler.
Fark konuşulan konularda yatmaktadır... "Windows mu iyidir, Linux mu?"
tartışmalarını dinleseniz programcıların az iletişim kurdukları konusundaki
fikirleriniz tam tersi yönde değişecektir.
Eğer bölündüğü sırada programcı soruyu tam olarak algılayıp doğru bir cevap
vermeye çalışırsa, soru "bağlam" dışı ise kreatif sürecin durması
gerekmektedir. Duran bu akışın yeniden eski kaldığı noktaya geri
dönebilmesi, kişiye çok bağlı olmakla beraber, on beş dakikaya kadar
çıkabilmektedir.
Konsantre olma yeteneği yüksek olan programcılar bölünen bu süreci daha
hızlı bir sürede eski noktaya getirebilmektedir.
Programcılık sırasında beynin bu çalışma stilinin anlaşılması programlama
ortamlarının ne kadar özenle seçilmesi gerektiği konusunda önemli ipuçları
sağlamaktadır. Programcıların bu bölünmelerden korunması gereklidir. Daha da
önemlisi programcıların kendilerini bu bölünmelerden korumaları
gerekmektedir.
Csikszentmihalyi ve ekibin yaptığı çalışmalar bu derin çalışma sürecinin ne
kadar kırılgan olduğunu ve izolasyona ihtiyaç duyduğunu açığa çıkarmaktadır.
Kanımca bir çok yazılım hatası (bug) bu bölünmeler sırasında ortaya
çıkmaktadır. Televizyonda bir motor yağı reklamını izlediğimi hatırlıyorum.
Reklamda "motor ısınıncaya kadar olan sürede aşınır yıpranır oysa bu motor
yağı mıknatıs özelliklerine sahiptir ve motor çeperine yapışık kalarak
ısınma sırasında bile motorun yıpranmasını önler" diyordu. Bu reklamda
anlatılan olayı programcılıkta çok gördüğümüzü düşünüyorum. Yeteri kadar
ısınmadan, soğuk bir "beyinle" yapılmaya başlanılan programcılık sonucunda
oldukça "hatalı (bogus)" kodlar üretildiğini düşünüyorum.
Meslek hayatımda karşılaştığım binlerce yazılım hatasını masaya yatırdığımda
bu tür hatalarla karşılaştığımı görüyorum. Hataların bu kreatif sürecin
hangi aşamasında yazılmış olabileceğini tahmin etmeye çalışıyorum. Bir
programcı bölünme ile karşılaştığı zaman -üstelik bu bölünme bir SMS mesajı
yazmak gibi zor ve zahmetli olup, beyni oldukça uğraştıran cinsten
ise- programlama sürecinin beyinde eski aktivite düzeyine yükselmesi çoğu
zaman yaklaşık 15 dakika sürecektir. Bu süreç sırasında hatasız bir kod
üretimi için programcının kritik bir kod yazmaması gereklidir.
Konsantrasyonun tam sağlanamayacağı bu ısınma dönemi, unutulan kontroller,
atlanan olasılıklar ve hiç kodlanmayan program akış dallarına neden
olacaktır.
Çağımızda bu bölünmelerin başlıca sebepleri cep telefonları, gelen SMS
mesajları ve Instant Messaging programlarıdır. Bölünmemek için
iletişimsizliğe ihtiyacımız varken çağımız bir iletişim çağı olmuştur.
Watts Humprey, Software Engineering Institute tabanlı Personal Software
Process'in (Kişisel Yazılım Süreci -
PSP) geliştiricilerinden birisidir. Kendisi uzun yıllar IBM'de çalışmış,
OS390 projesinde yer almış ve yazılım geliştirmenin önemli duayenlerinden
birisi olmuştur. PSP bir programcının iyi program yazması konusunda kendini
nasıl geliştireceğinin ana hatlarını çizer. Humprey'in PSP'yi anlattığı
"Introduction to PSP" kitabını aldığımda şaşırdığım bir konu olmuştu.
Kitabın ilk bölümlerinin zaman yönetimi ve bu bölünmelere karşı mücadele
olduğunu görüp şaşırmıştım.
Humprey, programcıları bu bölünmelerle mücadele konusunda bilinçlendirmeye
çalışıyordu.
Yazılım geliştirme sürecinin tam verimiyle çalışması için bu sürecin
korunmaya ihtiyacı olduğu çok açık.
Bir programcının etrafında oturanlar, yöneticileri, ona SMS gönderenler bu
sürecin geç cevap alacaklarının farkında olmalıdır. Böyle bir zihinsel
durumdaki yazılım geliştirmeciyle olan iletişim senkron (eş
zamanlı) değil asenkron (farklı zamanlarda) olmalıdır.
Şu sıralar programcılıkta popüler olan yeni bir akım var. Entegre edilen
sistemlerin birbirleriyle senkron bağlantılar yerine "loosely coupled"
(gevşek
eşleştirme) dediğimiz asenkron yöntemlerle bağlanması.
Sanırım "akış" anını yakalamış bir programcı ile iletişimin de en sağlıklısı
"loosely coupled" türden olacaktır.
MEHMET SINAN ESGIN
YAPI VE KREDI BANKASI A.S. / TEKNOLOJI YONETIMI
www.ykteknoloji.com
_____
From: linux-sohbet-bounces@liste.linux.org.tr
[mailto:linux-sohbet-bounces@liste.linux.org.tr] On Behalf Of baris kafa
Sent: Tuesday, December 07, 2004 2:23 PM
To: linux-sohbet@liste.linux.org.tr
Subject: [Linux-sohbet] kodlama - konstantrasyon -verimlilik
kod yazarken konsantrasyon problemi zaman zaman yaşarmısınız? evet ise bunu
nasıl aşıyorsunuz, yoksa o da ne ben tam bir kod makinesiyim boyle sorunlar
yaşamam, kutur kutur yazarimmi dersiniz?
coding yada diğer alanlarda verimlilik ölçütleriniz neler, değerlendirme
yapıyorsunuz, yada bununla ilgili kaynak gösterebilirmisinz?
tesekkurler&selamlar&saygilar
Barış KAFA
_____
Sadece üyelik karti sahiplerine özel adiniz@hotmail.com.tr adresi! Burayi
tiklayin! <http://g.msn.com/8HMBENTR/2740??PS=47575>
_______________________________________________
Linux-sohbet mailing list
Linux-sohbet@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-sohbet
![]()