On bir yılın ardından: bir geliştiricinin değişen önceliği
Bu günlüğün on bir yılında bir geliştiricinin önceliklerinin hızdan dayanıklılığa, koddan karara nasıl kaydığının değerlendirmesi.
Bu günlüğü 2014’te tutmaya başladım. On bir yıl, bir geliştiricinin nasıl değiştiğini görmek için yeterince uzun bir süre. Yıl sonuna yaklaşırken, geçmiş yazılarıma dönüp baktım ve değişen şeyin teknolojiler olmadığını fark ettim — onlar zaten değişir. Değişen, neye öncelik verdiğimdi.
Hızdan dayanıklılığa
İlk yılların yazılarında tekrar eden bir kelime var: hız. Bir şeyi ne kadar hızlı kurabildiğim, bir aracın işimi ne kadar hızlandırdığı. O dönemde iyi geliştirici, hızlı teslim eden geliştiriciydi.
Bugün hız hâlâ önemli ama artık birincil ölçü değil. Şimdi bir çözüme bakarken sorduğum ilk soru şu: bu, altı ay sonra değiştirilmesi gerektiğinde ne kadar acıtacak? Hızlı yazılmış ama dokunulamaz bir kod, yavaş yazılmış ama esnek bir koddan pahalıya geliyor. Önceliğim hızdan dayanıklılığa kaydı.
Bu kayma kademeli oldu. Bir noktada, “bu nasıl çalışır?” sorusundan çok “bu neden bu şekilde çalışıyor?” ve “bunu başkası okuyunca ne anlar?” soruları sormaya başladığımı fark ettim. Kodun bugün işe yaraması yetmez; altı ay sonra onu değiştirmek zorunda kalan birinin — çoğunlukla kendimin — işini kolaylaştırması gerekiyor.
Koddan karara
Mid-level dönemimde işimin merkezinde kod vardı — yazmak, çalıştırmak, düzeltmek. Yazılarım da öyleydi: “şunu nasıl yaptım”.
Yıllar içinde işimin ağırlık merkezi koddan karara kaydı. Bugün değer kattığım yer, çoğu zaman bir satır kod değil; “bunu yapmayalım”, “bunu şimdi değil”, “bu problemi şu dille çözelim” gibi kararlar. Kod, kararın yalnızca son adımı. Yazdığım en iyi şeylerden bazıları, yazmadığım kodlar oldu.
Bu değişimin en belirgin göstergesi şu: eskiden bir toplantıda soru sormak için sırama beklerdim. Şimdi toplantıyı yönlendirmek, soru sormak yerine çerçeve kurmak benim işim haline geldi. Teknik kararlar hâlâ benim alanım; ama o kararların neden alındığını, kiminle nasıl paylaşıldığını, hangi sırayla hayata geçirileceğini düşünmek de işin içine girdi.
Tek dilden çok dile
On bir yıl önce kendimi bir PHP geliştiricisi olarak tanımlıyordum. Bugün PHP hâlâ omurgam ama kendimi bir dille tanımlamıyorum. Go, Python, JavaScript dünyasında da çalışıyorum. Bu, bir koleksiyon hevesi değil; her problemin kendi diline yöneldiğim bir noktaya geldim. Polyglot olmak, bir hedef değil yılların doğal bir sonucu oldu.
Her yeni dili öğrenirken beklenmedik bir şey fark ettim: yeni bir dil, ana dilde nelerin “dilin kendisi” olduğunu, nelerin “alışkanlık” olduğunu gösteriyor. Go’da hata yönetimini öğrenmek, PHP’de istisnaları nasıl kullandığımı ve ne zaman gereksiz yazdığımı yeniden sorgulatı. Dil öğrenmek, salt kelime hazinesi değil; farklı düşünme pratikleri edinmek.
Değişmeyen şey
Bunca değişimin içinde değişmeyen bir şey var: öğrenmenin sürmesi. On bir yıl önce de yeni bir şey öğreniyordum, bugün de. Fark şu ki artık her yeni şeyi öğrenmem gerekmediğini biliyorum; neyi öğrenmeyeceğime karar vermek de bir beceri.
Bir de yazmak değişmedi. Bu günlük on bir yıldır benim için bir düşünme aracı oldu. Bir şeyi yazana kadar onu tam anlamadığımı defalarca gördüm.
Sonraki yıl
Önceliklerimin nereye kayacağını tam bilmiyorum. Ama yönü tahmin edebiliyorum: daha az “nasıl”, daha çok “neden” ve “ne zaman değil”. On bir yıl önce iyi bir geliştirici olmak, çok şey yapabilmekti. Bugün, doğru şeyi seçebilmek. Bu günlük, o değişimin kaydı olmaya devam edecek.