Son zamanlarda kendimi “programcı olarak hedefim nedir, nereye doğru yol alıyorum, kendimi nasıl geliştirmeliyim, neler öğrenmeliyim” gibi soruların cevaplarını ararken yakalıyorum. Yaşlanıyorum ve bu beni mesleki evrimsel gelişimimin nasıl olması gerektiği konularına itmeye başladı. Bu konular hakkında kafa yorarken, bu blog yazısını yazma fikri doğdu ve düşüncelerimi sizlerle paylaşmak istedim.
Bir programcının evrimi nasıl olmalı? Cevabını aradığım soru bu. Bu ve buna benzer konularda daha önce bir takım yazılar kaleme almışım:
- 20 Yaş, 30 Yaş, 35 Yaş ve Bugünki Programcı Ben
- Hangi Programlama Dilini Öğrenmeliyim?
- Başkalarının Kodu Okunarak Daha İyi Programcı Olunabilir mi?
- Çok Gezen mi Bilir, Çok Okuyan mı?
- Acı Çekmeden Üstad Olunmaz
- Kişisel Gelişim
- Kod Kata ve Pratik Yapmanın Önemi
Kısaca özetlemek gerekirse, bir programcı yaptığı işin hakkını verebilmek için bir öğrenme makinası olmak zorunda. Yeniliklere adapte olabilmek için sürekli öğrenmek gerekiyor. Benim aklıma burada ilk olarak “neyi öğrenmeliyim” sorusu geliyor. Öğrenilmeyi bekleyen o kadar çok konu var ki, saymakla bitmez. Karşımıza çıkan her şeyi öğrenmek zorunda mıyız? Bu sorunun cevabının evet olduğunu düşünecek olursak, öğrenme sürecini nasıl şekillendirmeliyiz? Eğer her şeyi öğrenmek zorunda değilsek, hangi konulara odaklanmalıyız? Soru üstüne soru. İşin içinden çıkmak kolay değil. Bu sorular ve sağladığımız cevaplar programcı olarak evrimimizin nasıl gerçekleşmesi gerektiği konusuna ışık tutuyorlar. Bu sorularla yüzleşmek ve cevaplarının peşine düşmek zorundayız. Aksi taktirde ortada ne programcı kalır, ne de onun evrimi.
İsterseniz doğadaki canlıları kapsıyan evrimsel sürecin nasıl işlediğine bir göz atalım. Belki oradaki tespitlerimiz kendi mesleki evrimimizin nasıl olması gerektiğine ışık tutabilirler.
Doğadaki haliyle evrim, iyileştirme ve bulunulan ortama daha iyi adapte olma çabasıdır. Bu yaşadığımız gezegende milyonlarca yıllardır cereyan eden bir süreçtir. Her türlü canlı evrimsel gelişime tabidir. Evrimi gerekli kılan üzerinde yaşadığımız gezegenin dinamikleridir. Örneğin dünyanın kuzey kutbunda yaşayan canlılar oradaki soğuklara dayanıklı iken, benzer türdeki canlıların ekvator yakınlarında sıcaklarla yaşamayı becerdiklerini gözlemleyebilmekteyiz. Bir deney kapsamında bu canlıların yerleri değiştirilse, çok kısa bir zamanda telef olurlardı, çünkü sahip oldukları yetenekler karşılaştıkları yeni durumla baş edici seviyede değildirler. Yeni yeteneklerin gelişmesi ve bulunan ortam için gerekli adaptasyon zaman gerektirmektedir. Evrim zamanla işleyen bir süreçtir ama hayatta kalabilmek için zaruridir.
Kuzey kutbunda çalışan bir programcıyı ekvatorda çalışmaya zorlasaydık durum nasıl olurdu? Programcının sıcaklardan şikayet edeceği aşikar, ama telef olmayacağını da biliyoruz. Neden? Çünkü insan yüksek derecede bulunduğu ortama adapte olabilme yetisine sahiptir. Bu insanlar için evrimsel gelişimin bir getirisi. Ama bu konuyu derinleştirmeden, doğadaki diğer canlıların evrimsel gelişimlerine bir göz atalım. Aşagıda gezegenimizde vücut bulan yaşamı temsil eden evrim ağacını görmektesiniz.
Evrim ağacının en alt bölümünde tek hücreli amipler yer almaktadır. Ağaç yükseldikçe tek hücreli canlılardan türeyen diğer canlıları görmekteyiz. Ağacın tepesinde yaşadığı ortamın bilincinde ve zekasıyla karar alabilen canlıları görmeteyiz. Bu kesimde insanlar da yer almaktadır. Dallara ve bu dallardaki yapraklara doğru gidildiğinde, bulunduğu ortama yüksek derecede adapte olmuş ve uzmanlaşmış canlıları görmekteyiz. Buna çölde yaşayan kertenkele ya da eksi elli derecede yumurtadan yavrusunun çıkmasını bekleyen, kuluçkaya yatmış pengueni örnek verebiliriz. Bu canlılar bulundukları ortama adapte olmuş ve orada yaşayabilmek için gerekli beceri ve biyolojik yapıyı geliştirmişlerdir. Yaşadıkları ortamların bir anda değişmesiyle birlikte bu tür uzmanlasmış canlılar da yok olmaktadırlar, çünkü meydana gelen değişikliğe karşı kolayabilecek donanımda değildirler. Burada sadece insanlar büyük bir istisna oluşturmaktadırlar.
Alanında uzmanlaşmış yani bulunduğu ortama adapte olmuş bir canlıyı bir insan ile kıyasladığımızda, en büyük farklılığın uzmanlık seviyelerinde yattığını görmekteyiz. İnsan doğası itibari ile hiçbir şeyi iyi derecede yapamayan bir canlıdır. Bir yunus balığından daha iyi yüzemez, bir panterden daha iyi koşamaz, bir pireden daha iyi zıplayamaz, ama iyi olduğu bir alan var: çok hızlı öğrenir ve adapte olur. Gerekirse yüzmeye başlar ve çok iyi bir yüzücü olma yetilerini geliştirir. Uçamaz ama, uçak icat edip, en hızlı uçan canlıdan bile hızlı uçar. Kuzey kutbundan alınıp, ekvatora konduğunda, bunu dert etmez, hemen adapte olur. Bir yolunu bulur ve ayakta kalır.
İnsanların evrimleri sürecinde uzmanlıktan uzaklaşıp, her türlü durum ve ortama adapte olabilen canlılar olmayı tercih ettiklerini görmekteyiz. İnsanların hayatta kalmalarını sağlayan, bir konuda uzman olmamaları yani generalist olmalarıdır. Sahip oldukları zeka onların gerekli yetileri kısa sürede geliştirmelerini ve bulundukları ortama adapte olmalarını sağlamaktadır. Görüldüğü gibi uzmanlık ortam değiştiğinde yok olmayı beraberinde getirmektedir. İnsanlar hayatta kalabilmek için uzmanlığı terk etmişlerdir. Dünya ismini taşıyan bu gezegenin insanların kontrolünde olmasının tek sebebi, uzmanlık nedir bilmeyen bir canlı türünün süregelen evrimidir.
Yukarıda yer alan ağaca tekrar bir göz atalım. Orada bir merkez çizgi görmektesiniz. Merkez çizgisine olan uzaklık uzmanlaşma derecesini ifade etmektedir. Merkez çizgiye en uzakta olan canlılar bulundukları ortamda ayakta kalabilmek için uzmanlaşmış canlılardır. En ufak bir ortamsal değişiklikle bu canlılar yok olurlar. İnsanlar ağacın en tepesinde ve merkez çizgisinin üzerinde bulunmaktadırlar. Bu onların en gelişmiş canlılar olmaları yani sıra uzmanlık alanları olmayan, lakin her ortama ayak uydurabilen canlılar oldukları anlamına gelmektedir. Peki bunların bir programcının evrimi ile ne ilgisi olabilir. Açıklamaya çalışayım.
Gerçek hayatta da olduğu gibi uzmanlaşma belli şartlar altında yok olma tehlikesini beraberinde getiriyor. Yazılımın bir dalında uzmanlaşmış bir programcının akibeti uzman olduğu alanın yaşam süresiyle doğru orantılıdır. Bu alanın yok olması ile birlikte uzman yazılımcı da yok olur. Bu yok olma başka bir alana kayma ya da tamamen yazılım dışında kalma anlamına gelebilir. Uzman yazılımcının burada büyük bir riziko ile yaşadığını görmekteyiz. Yazılımcının bunun önüne geçmek için uzmanlığı terk edip, ustalığı seçmesi gerekmektedir.
Sadece bir programlama dilini kullanmak bir uzmanlaşma belirtisidir. “Hangi Programlama Dilini Öğrenmeliyim?” başlıklı yazımda aktarmaya çalıştım. Tek bir dile olan hakimiyet, o dilin revaçtan düşmesi ile programcının zora girmesi anlamına gelecektir. Bu yüzden dil ögrenim süreci tek bir dile değil, birçok dile yönelik olmalıdir. Birçok dil bilen bir programcı belki kullandığı dillerin hiçbirinde uzman değildir, lakin ortama göre dil seçerek, yok olmaya karşı koyabilir.
Programcı olarak nihayi amacımız merkez çizgisine yakın bir yerlerde konuşlanma olmalıdır. Bir yaprak oldugumuz taktirde, gelen güz rüzgarları ile evrim ağacından koparılacağımız şüphesizdir. Ana dallara ne kadar yakın olursak (merkez çigzi), daldan dala atlayarak, rüzgarlardan korunmamız mümkün olacaktır. Önemli olan daldan dala atlayabilecek konumda olabilmemizdir.
Programcı öğrenme makinasıdır demiştim. Uzmanlaşma fikrini bir kenara bırakmamız, bilgi edinme çabalarımızı durdurabiliriz anlamına gelmemektedir. Aksine, usta bir yazılımcı olmak için daha çok alanda faal olmamız gerekmektedir. Bu sadece yazılım konularıyla sınırlı değil. Programcının müzik, elektronik ya da sportif faaliyetleri programcı yeteneklerini pekiştirmede faydalı olacaktır. Bir şiir kitabındaki tek bir mısranın programcının dünya görüşünü değiştirme gücüne sahip olabildiğini düşündüğümüzde, birçok çicekten bal almanın mesleki başarı için de ne kadar önemli olduğunun kanıtı olarak kabul edebiliriz.
EOF (End Of Fun)
Özcan Acar
Yorumlar
“Programcının Evrimi” için 3 yanıt
Çok güzel bir yazı daha 🙂
[…] Programcının Evrimi […]
Beni vuran nokta: ‘Birçok dil bilen bir programcı belki kullandığı dillerin hiçbirinde uzman değildir, lakin ortama göre dil seçerek, yok olmaya karşı koyabilir.’ oldu.
Saygılar hürmetler abi