Programlamaya ilk başladığın günü düşün: Ekrana birkaç satır yazarsın, çalıştırırsın ve mucize gerçekleşir. Bilgisayar sana itaat etmiştir. Belki bir değişken tanımladın, belki ekrana merhaba dünya yazdırdın, belki de iki sayıyı toplayan küçük bir program yaptın. O an, evrenin kapısına gizli bir şifre girmiş gibi hissedersin. İçinden bir ses yükselir: Ben bunu çözdüm. Hatta belki biraz daha ileri gider: Silikon Vadisi, geliyorum.
İşte bu an, Dunning-Kruger Etkisi’nin programlama kostümü giymiş halidir. Kişi bir alanda çok az şey öğrendiğinde, henüz bilmediği şeylerin büyüklüğünü de bilmez. Bilgi ufku dar olduğu için dünya da küçük görünür. Bir çocuk nasıl mahalle parkını tüm evren sanabilirse, yeni başlayan programcı da döngüleri öğrenince yazılım mühendisliğini avucuna aldığını düşünebilir.
Sahte Dahi Sendromu: Zihnin Tatlı Tuzakları
Dunning-Kruger Etkisi basitçe şunu söyler: Bir konuda yetersiz olan insanlar, çoğu zaman yetersizliklerini fark edecek bilgiye de sahip değildir. Bu kulağa sert gelebilir, ama aslında insan zihninin savunma mekanizmalarından biridir. Ego, bilinmezliğin uçurumuna bakmayı sevmez. Ona küçük bir başarı ver, hemen taç takmak ister.
Programlamada bu etki özellikle güçlüdür çünkü geri bildirim hızlıdır. Kod çalıştı mı? Evet. O halde doğru. O halde ben iyiyim. O halde ben yetenekliyim. Fakat yazılım dünyasında kodun çalışması, kodun iyi olduğu anlamına gelmez. Bir köprü ayakta duruyor diye mühendislik harikası olmayabilir; belki ilk rüzgarda yıkılacaktır. Aynı şekilde çalışan kod, okunabilir, güvenli, ölçeklenebilir, test edilebilir ve sürdürülebilir olmayabilir.
Yeni başlayan kişinin ilk yanılgısı şudur: Programlama, bilgisayara komut vermektir. Oysa daha derin düzeyde programlama, belirsizliği parçalamak, problemi modellere ayırmak, zihinsel karmaşayı mantıksal düzene çevirmektir. Kod sadece bu düşüncenin görünen tortusudur. Buzdağının üstündeki parlak kısım.
Cehaletin Zirvesinden Ustalığın Vadisine
Öğrenme eğrisi genellikle dramatiktir. Başta hiçbir şey bilmezsin ve bunun farkındasındır. Sonra birkaç temel kavram öğrenirsin: değişkenler, koşullar, döngüler, fonksiyonlar. Birden özgüven fırlar. Bu nokta, kimi kaynaklarda cehaletin zirvesi diye anılır. Manzara güzeldir ama zemin kaygandır.
Sonra gerçek dünya gelir: hata mesajları, bağımlılıklar, sürüm sorunları, asenkron işlemler, veri yapıları, algoritmalar, mimari kararlar, güvenlik açıkları, ekip çalışması, okunabilirlik, teknik borç. Bir anda fark edersin ki, merhaba dünya yazmakla dünyayı değiştirmek arasında birkaç galaksi vardır. Bu farkındalık can yakabilir. Ama iyi haber şu: Gerçek öğrenme tam burada başlar.
Bu düşüş bir yenilgi değildir; erginlenme törenidir. Jungiyen bir dille söylersek, acemi programcı kendi gölgesiyle tanışır. Gölge, bilmediğini bilmediğin o karanlık bölgedir. Onu reddedersen kibir doğar. Onu kabul edersen ustalık başlar. Çünkü olgun zihin, ben biliyorum demekten çok, nerede yanılabilirim diye sorar.
İlk Koddan Sonra Ne Yapmalı?
Birinci kural: Çalışan kodla yetinme, neden çalıştığını anla. Bir satırı kopyaladıysan, o satırın hangi problemi çözdüğünü kendine açıkla. Açıklayamıyorsan, henüz senin bilgin değildir; sadece zihninde kiralanmış bir eşyadır.
İkinci kural: Hata mesajlarından kaçma. Hata mesajı düşman değil, sistemin sana yazdığı dürüst bir mektuptur. Başta kaba görünür, çünkü dili mekaniktir. Ama okumayı öğrenirsen, en iyi öğretmenlerinden biri olur.
Üçüncü kural: Küçük projeler yap, ama onları yeniden yaz. İlk sürümde amaç çalıştırmak olsun. İkinci sürümde okunabilirlik. Üçüncüde yapı. Dördüncüde test. Böylece aynı problemde farklı derinlikleri görürsün. Ustalık, sürekli yeni oyuncaklara koşmak değil, eski problemi daha zarif çözebilmektir.
Dördüncü kural: Özgüvenini koru ama ona tasma tak. Özgüven öğrenmenin yakıtıdır; kibir ise motoru yakan aşırı ısınma. Ben yapabilirim demek iyidir. Ben artık oldum demek tehlikelidir.
Programlamaya girişte hissedilen sahte dahi sendromu utanılacak bir şey değildir. Hatta çoğu kişinin geçtiği komik, insani ve öğretici bir duraktır. Önemli olan orada kamp kurmamaktır. İlk kodunu yazınca kendini dahi gibi hissettiysen, gülümse. Zihnin sana küçük bir zafer töreni düzenledi. Sonra sandalyene otur, terminali aç ve şu daha büyük soruyu sor: Bu kod gerçekten ne yapıyor, ben gerçekten ne anlıyorum?
Çünkü iyi programcı, bilgisayara hükmeden kişi değildir. İyi programcı, kendi cehaletini adım adım haritalandıran kişidir. Ve bazen en parlak satır, ekrana yazdırılan sonuç değil, zihinde beliren şu cümledir: Daha öğrenecek çok şey var.