Bir yazılımcıyı iyi yapan 'şey' nedir ?
Hepimiz hergün bir sürü problemle boğuşuyoruz.Bunlar, yerine göre küçük yerine göre de büyük problemler olabiliyor.İlk bakışta verdiğimiz kararlar daha sonra karşımıza problem olarak da gelebiliyor. Bir çok işin doğasında bu var.Tabi konumuz yazılım ve yazılımcı. Titr olarak bakıldığında yazılımcı yazılım ile uğraşan kişi anlamında konumlanabiliyor ancak bu demir ve demirci ilişkisi gibi değil. Demirci demir ile uğraşan biri midir? Yani demiri ısıtır eğer şekil verir tekrar ısıtır ve bir forma sokar. Bu durumda elde başta demir vardı sonda da demir var olur. Bu durumda demirci gerçekten demir ile uğraşan kişi olmuş oluyor. Gel gör ki yazılım dünyasında hiçbir şey demir kadar anlaması kolay değil (yapması demiyorum please). Yazılım dendiğinde hemen aklımıza gelen tamamlayıcı kelimeler şunlar olabiliyor(en azından benim için) mesela proje, takım ve ingilizce bir kaç kelime(life cycle gibi). Keşke herşey demirci kadar sade olsa. Ancak değil. Yazılım ve 'ci' eki almış hali ile yazılımcı tamamen farklı dünyalar aslında. Yazılımcı demek sadece yazılım yapan demek değildir, projeye katkı sunan ürünü bilen ürün özelinde rakiplerini bilen paydaşlarla iletişime giren sıralamakla bitmiyor işte. Bir şeyin sonuna koyduğumuzda verilen meslek tabiri burada işe yaramıyor. Yine yazılımın resmi dili olan ingilizceden örnek vermek gerekirse buna developer diyoruz. Mantıken daha fazla kapsayıcı bir söz. Bizdeki karşılığı geliştirici. Ya da Almanlar entwickler diyor. Entwicklung=Development=Geliştirme
Buradan bakınca geliştirici demek daha mantıklı geliyor(ancak başlıkta yazılımcı demişim). Çünkü trajekomik bir durum var ortada. Ürünü geliştirirken kendini de gelistirmen gerekiyor. Yaklaşık 3 yıldır mesleklerin geçmişlerini araştırıyorum. Son zamanlarda doktorluk ile ilgili araştırma içerisindeyim. Bir tanıdığım yazilimciligin doktorluktan daha zor olduğu önermesi ile koyuldum bu yola. Kabaca edindiğim bir kaç tespit oldu. Yazılım yapan kişi kendini gelstirmezse kısa bir süre sonra FOMO tarafından kusatilmaya başlıyor. Yani birşeyleri kaçırıyormuş hissi. Büyük şehirlerde yaşayanlar bilir, sürekli birşeyleri kaçırdığını düşünürsün. Bu yeri geldiğinde sinemadaki bir film, bir spor müsabakası ya da bir otobüs(!). Sürekli birşeyleri ya gerçekten kaçırırsın ya da kaçırdığını düşünürsün ki düşünmek daha acı. Çünkü görmediğin şeyden korkabilirsin. Konumuza dönecek olursak, yazılımda gelişim sürekli bir devir daim içerisinde (hem oley hem maalesef). Mevzubahis doktorluk olduğunda ki araştırmam reflü ile ilgiliydi(mide asidinin yemek borusuna kaçması). Reflü ameliyatının 100 yıldır aynı teknikle yapıldığını okuduğumda çok şaşırmıştım. Ancak bu sadece devede kulak bir konu da olabilir. Tıp sonuçta çok geniş bir kavram. Şimdi yapılan reflü ameliyatları belki daha teknolojiktir(artık ne demekse) ancak teknik tekniktir(değil mi). Kodu klavye ile yazmayıp zihninle yazmak gibi birşey mi acaba?? Mamafih, reflü ameliyatında kullanılan mesh tekniği, teknoloji ilerlese dahi aynı yöntemle yapılıyor.Demekki adamlar doğruyu bulup daha da ellemeyelim demişler. Yazılım dünyasındaki fenomenler ver personalar maalesef öyle çalışmıyor. Zamanla içine düştüğümüz tekrarı (crud,db,apı üçlemesi) yine yeni bir teknoloji ve tool ikilemiyle aşmaya çalışırken kendi klavyemize sıkıyoruz. Maalesef sidikle abdest alınmıyor işte. Yazılımda dünyasında ortaya çıkan yeni bir teknoloji, sıcak br patates gibi kimi zaman elden ele atılıyor. Sonra biri çıkıp sahipleniyor ve community'si kuruluyor (yersen).Her ne kadar kendi içinde oluşturduğu girdaplar olsa da yazılım yapmak, yapmamaktan daha iyidir (bu da bir motivasyondur).Bu arada motivasyon da bir motivasyon sorunudur buna başka bir yazıda değinmek isterim. Toplayacak olursak(toplayamadı) bu konuştuklarımız yazılımın genetiğinde olan şeyler bunlar zamanla da edinilmiş ve genetik olarak kalıcı hale gelmiş. Su unutulmamalıdır ki bir yazılımcıyı iyi yapan şey PHP8'de attribute kullanması mi yoksa yine PHP8'de property promotion kullanması mi yoksa projede ORM kullanması mi yoksa, Docker üzerinde projeyi koşturması mı, yoksa microservis mimari ile yapıyı ayakta tutmak mi, yoksa DDD ile projeyi geliştirip eventsourcing yapmak mi, notepad++ açıp kod yazak mı, yoksa mavi ekranda Pascal yazmak mı, Intellij'de Java footprinti ile boğuşmak mı, Go diye bir dil var oh yeah süper falan demek mi, Rust ile concurrency'nin içinden geçip parser yazmak mi, C ile bir dil yazabilmek mi, PHP öldü be abi diyebilmek mi, JavaScript ben demiştim abi demek mi, Deno daha secure diyebilmek mi, DotNet 5, tek dil tek bayrak tek din demek mi, React'te paranormal aktivitelere katılmak mı?
Sözüm assembly'den içeri, iyi bir yazılımcı olabilmenin temel kuralı iletişimdir, iletişim. Bol iletişimli günler dileğiyle.
Zeus protect you.