10 Yılda Programlama Öğrenin
Bugün ileriseviye.org sitesinde Peter Norvig‘in "10 Yılda Programlama Öğrenin" yazısının Çağıl Uluşahin tarafından çevrisine rastladım. Yazı oldukça faydaı bilgiler içermektedir. Hele hele, programlama gönül vermiş ve aceleyle bir yerlere gelmek isteyen gençlere öğüt niteliğinde.
Yazısının ana konusu; 24 saat, 3 gün, 1 hafta veya 1 yılda iyi bir programcı olunamayacağını ve bu yönde yazılmış kitapların hiç bir işe yaramayacağının altını çizmektedir.
Öncelikle bu yazıyı bize kazandıran Çağıl Uluşahin ve ileriseviye.org camiasına teşekkür ediyorum. Bu tip makaleler her dönemde bizlerin kulaklarını çekmeye ve titreyerek kendimize gelmemizi sağlıyorlar.
Bu tip makaleri okumayı sevenler Joel Spolsky‘ın yazılarını da bilirler. Mutlaka bilişim sektöründekilerin okuması gereken yazılardır. Joel Spolsky‘ın Türkçe’ye çevrilmiş makaleleri için tıklayınız.
Peter Norvig soruyor; Neden herkes böyle telaş içinde?
Herhangi bir kitapçıya gittiğinizde Teach Yourself Java in 7 Days (7 Günde Java Öğrenin) benzeri, size birkaç günde veya birkaç saatte Visual Basic, Windows, Internet (vs.) öğretmeyi vadeden kitaplarla karşılaşırsınız.
Evet, 7 günde JAVA veya başka bir dil gerçekten öğrenilir mi? Öğrenilmez elbette. Bunu sadece Peter Norvig değil, bu işinde 10 yıldan fazladır içinde olan her bilişim adamı söyler. Peki bu acele neden, ve bu acelelicilik neden sadece Bilgisayar camiası kitaplarında var.
Birkaç günde, Beethoven, Kuantum Fiziği ya da köpek eğitimi öğreten kitaplar yok. Bu sonuçlara bakılırsa, ya insanlar bilgisayar hakkında yeni şeyler öğrenmek için çok hevesli ve aceleci ya da bu iş bir şekilde inanılmaz derecede kolay.
Garip gerçekten, çoğunlukla Bilgisayar kitaplarında ivedilikle öğrenin gazıyla yazılmış yazılmış kitaplar bir hayli fazla. Çok nadir de olsa farklı alanlarda da "falanca süre içinde öğrenin" kitapları da mevcut.
Peter Norvig, bu makalesini 2001 senesinde yazmış ve o günlerde bu yazıyı yazmaya ihtiyaç duyacağı gelişmelere şahit olmuş. Kim bilir yeni yetmelerin çoğalması ve onların guru’lara "sen ne biliyorsun" tarzı yaklaşımları, çömezlerin heyecanlı ve bir o kadarda insanlık dışı tavırları Peter Norvig’i yıldırmıştır. Sadece Peter değil, belki Peter’in çevresindeki bir çok Guru aynı tepkiyi göstermişlerdir de Peter bu makaleyi kaleme alma ihtiyacı duymuştur.
Peter Norvig, makalesi içindeki küçük alıntılarla bir şeyler anlatma çabası içinde:
Yarı bilgili olmak çok tehlikelidir.
(Alexander Pope)Programla mantığınızı etkilemeyen bir dili öğrenmiş olmanın bir değeri yoktur.
(Alan Perlis)Herhangi bir alanda kusursuzluğun, bir ömürboyu o iş için çalışmaktan daha hafif bir bedeli yoktur.
(Samuel Johnson)Bir sanatı öğrenmek çok uzun sürer, ama hayat da çok kısadır.
(Chaucer )
Sonrasında, Peter Norvig bize öğütler veriyor:
Benim programcılıkta başarı için tavsiyelerim şunlardır:
- Sırf ne kadar eğlenceli olduğunu görmek için programcılıkla biraz uğraşın, programlar yazın. Programcılığın, on sene uğraşmak istemenizi sağlaycak kadar eğlenceli olan boyutunu kaybetmemesini sağlayın.
- Diğer programcılarla konuşun, başka programları okuyun. Bu herhangi bir kitap veya kurstan daha önemli ve yararlıdır.
- Programlar yazın. Öğrenmenin en iyi yolu pratiktir. Daha teknik bir şekilde ifade edecek olursak; "Bireylerin performanslarının en üst düzeyine, elde edilen tecrübelerle erişilemez, fakat çok deneyimli bireylerin bile gelişme yönündeki yoğun çabaları performanslaını yükseltmeye yeter." (s.366) ve "En verimli öğrenme şekli, bireyin seviyesine uygun bir konu üzerinde, bilgilendirici geri beslemeler, tekrarlama fırsatları ve hataların düzeltilmesi gibi çalışmalar gerektirir." (s.20-21) " Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life" isimli kitap bu bakış açısı için ilginç bir referans olabilir.
- İsterseniz, üniversitede alacağınız dört yıllık bir eğitim ile (veya yüksek lisans için daha fazlası ile) bazı işler için gereken referansları elde edebilirsiniz. Ayrıca bu sayede konu üzerinde derinlemesine çalışmalar yapma şansı da bulabilirsiniz. Ama okuldan keyif almıyorsanız, biraz daha fazla çaba ile iş ortamında da bu tecrübeyi kazanabilirsiniz. Her iki durumda da kitaplardan öğrendikleriniz yetersiz kalacaktır. The New Hacker’s Dictionary(Yeni Hacker Sözlüğü) yazarı Eric Raymond "Sadece boya ve fırça sizi iyi bir ressam yapmayacağı gibi bilgisayar bilimleri eğitimi de, hiçkimseyi uzman bir programcı haline getirmez" der. İşe aldığım en iyi programcılardan biri sadece lise mezunuydu. Çok güçlü ve çok iyi yazılımlar üretti, kendi USENET haber grubuna sahipti ve hiç şüphe yok ki hisse senetleri sayesinde şu anda benim hiçbir zaman olamayacağım kadar zengin.
- Başka programcıların da katıldığı projelerde yer alın. Bazı projelerde en iyi, bazılarında en kötü programcı siz olun. Ekibin en iyisi siz olduğunuzda, bir projeyi yönetebilme becerinizi test edebilme imkanı ve vizyonunuzla takım arkadaşlarınızı etkileme fırsatı bulacaksınız. En kötü olduğunuz durumda ise, ustaların neler yaptıklarını ve neleri yapmaktan hoşlanmadıklarını (ki bu size yaptırdıklarıdır) gözlemleme şansı bulacaksınız.
- Başka programcıların katıldığı projelerde onlardan sonra yer alın. Başka bir programcının yazdığı programı anlayabilecek seviyeye gelin. Yazılımın yazarı yokken onu anlamak ve düzeltmek neler gerektiriyor görün. Kendi yazdığınız programları da sizden sonra üzerinde çalışacakların işini kolaylaştıracak şekilde nasıl tasarlayacağınızı düşünün.
- En az yarım düzine programlama dili öğrenin. Bunların içinde, sınıf soyutlamalarını içeren bir dil (Java veya C++ gibi), fonksiyonel soyutlamaları destekleyen bir dil (Lisp veya ML gibi), sözdizimi soyutlamalarını destekleyen bir dil (Lisp gibi), tanımlama özelleştirmelerini içeren bir dil (Prolog veya C++ kalıpları gibi), eşrutinleri destekleyen bir dil (Icon ve Scheme gibi) ve paralelliği destekleyen bir dil (Sisal gibi) mutlaka bulunsun.
- "Bilgisayar bilimleri"nde "bilgisayar"ın da olduğunu unutmayın. Bilgisayarınızın bir komutu çalıştırmasının, ön ya da ana bellekten bir kelime yakalamasının, ardıl kelimeleri diskten okumasının ve disk üzerinde yeni bir yer bulmasının ne kadar zaman aldığını öğrenin. (Cevaplar aşağıda.)
- Dil standartlaştırma çalışmalarından birinde yer alın. Bu ANSI C++ komitesi de olabilir, yerel programcılar olarak içe kaydırma standartlarınızın seviyesini belirleyecek bir çalışma da. Her iki durumda da diğer programcıların bir dilde neyi, ne kadar ve biraz da şanslıysanız neden sevdiklerini öğrenebilirsiniz.
- Bu dil Standartlaştırma çalışmalarından bir an önce ayrılabilecek sağduyuya sahip olun.
Hani bir çoğumuz otomobil kullanmayı biliriz de ballandıra ballandıra övünürüz. Ama bir çoğumuz otomobil kullanmanın sadece direksiyon hakimeti olduğunu sanıyor ve büyük bir yanılgıya düşüyoruz. Eğer böyle olmasa idi, yollarda su kaynatan, yağ yakan ve hatta benzini bittiği için yolda kalan sürücüleri görmezdik.
İyi bir otomobil kullanıcısı yani bir profesyonel yukarıdaki sürücülerin durumuna düşmezler. Onlar motorun nasıl çalıştığını ve prensiplerini çok iyi bilirler. İbrelerin işaret ettiği şeylerin anlamlarını bilirler.
Peter Norvig’de bunun gibi bir şeyi anlatıyor olacak ki, kaç programcı bilgisayarın nasıl çalıştığını biliyor demek istiyor:
"Bilgisayar bilimleri"nde "bilgisayar"ın da olduğunu unutmayın. Bilgisayarınızın bir komutu çalıştırmasının, ön ya da ana bellekten bir kelime yakalamasının, ardıl kelimeleri diskten okumasının ve disk üzerinde yeni bir yer bulmasının ne kadar zaman aldığını öğrenin. (CEVAP)
Peter Norvig’in Türkçe’ye çevrilmiş makalesini mutlaka bir kaç defa okuyun, ve hatta Joel Spolsky’ın makalerini de okuyun. Bu tip makaleleri okumaktan kaçınmayın, tecrübeniz ne ölçüde olursa olsun muhakkak size feyz verecektir. Ukalalık sizi hiç bir yere getirmeyecektir.
Comments
Bir yorum var
“10 Yılda Programlama Öğrenin”
Bir yorumda siz yapın

Yazı güzel. Yalnız sol üst köşede “7 günde ingilizce konuşun” diye bir google reklamı var.
Şimdi bu reklama inanabilir miyiz?