Abuzittin Framework Developer

Türerkan İnce
5 min readJun 19, 2017

--

Bu yazıyı okumak için iki yıllık Abuzittin Framework deneyimi zorunludur

Yazılım bir iş alanı olarak çok yeni. Diğer mesleklerin binlerce yıllık tarihi, oturmuş pratikleri, standartları varken bizim hemen hemen hiçbir şeyimiz sabit değil. Sektörün gençliğinden ötürü yazılımı satın alan ve yöneten insanların çoğu hala yazılıma yabancı. Dolayısı ile yazılım emeğinin niteliğini ve niceliğini başarılı şekilde değerlendirebilmekten çok uzak. Öte yanda başka mesleklerde olduğu gibi bir standartlaşma da yok.

Tıp alanında TUS, sağlık bakanlığı, mimarlıkta oda, ruhsat, iskan, yapı denetim kurumları gibi devasa ve korkutucu önlemler mevcut. Bu sayede gittiğiniz doktorun adını bilmeseniz de, CV’sini incelemeseniz de, “insanın kaç parmağı olur?” diye FizzBuzz soruları sormasanız bile soğuk algınlığını tedavi etmek için burnunuzu sırtınıza dikmeyeceğini bilirsiniz.

Türk müteahhitlerin üstün çabalarına rağmen yeni aldığınız ev içine adım attığınız anda tepenize çökmez. Mimar size dönüp “pardon binaya bir reset atalım bi dahaki sefere ölmezsiniz, siz de fazla zıplamayın şu balkonda!” demez.

Yazılımda hem alıcı işin özünden bi haber, hem denetim yok, hem de standartlaşma yok. Bunun getirdiği sonuç şudur: Korku Ekonomisi. Yani sektördeki oyuncular tüm planlarını riskler ve olumsuz senaryolar üzerine kurar. Sektör sonsuz bir kriz yönetimi halinde işler.

Yazılım sektöründe iş yönetimi adına ortaya çıkan akımlar hep yönetici sınıfın korkularını yatıştırmak üzere tasarlanmıştır. Mesela Agile ve dipnotu olarak Scrum denilen metodolojiler özünde yöneticilere “Belirli bir ritüeli uygularsanız tek dişi kalmış yazılımcı canavarı sizi ısırmaz” der. Yazılımcının çalışmasını mikro düzeyde denetlemek, sürekli kısa vadeler içinde ticari değer yaratılmasını zorunlu kılmak, tüm performans ölçümünü ticari fayda düzleminde yapmak, teknik alanda bir performans tanımı yapmaktan kaçınmak, süre tahmini yaparken farklı çalışanların tahminlerini çapraz olarak karşılaştırmak (Scrum Poker) bunun belirtileridir.

Haksızlar mı derseniz, yazılımcıların gerçek dışı hayallerin peşinde koştuğuna çok şahit olduğum için haksızlar diyemiyorum. Bir nevi tavuk-yumurta paradoksudur bu.

Devletler düzeyinde ekonomiden bahsederken hep güvenden bahsedilir ve büyüme için ne kadar önemli olduğundan dem vurulur. Fazlasıyla soyut bir ekonomi dilini buraya taşımak istemiyorum. Ama basit bir örnek vereceğim: Japonya dünyanın en güvenilir ekonomilerinden birine sahiptir. Japon işçisi çok çalışır. Ama işi stabildir. Önemli bir kısmı ilk girdiği şirketten emekli olur. Japon işçisi emekli olduğunda elinde tüm dünyayı gezecek imkanları olur. Sağlık, barınma vb. konularda sorun yaşamaz. Japon, buna güvenmese gençliğinde o kadar sıkı çalışmaz.

Orta Afrika’da feodal çatışmaların sürdüğü ülkelerde ise insanlar çok daha az çalışır. Aslında fakir bir bölgenin insanlarından daha çok çalışmalarını beklersiniz değil mi? Ama geleceğe yapılan yatırımın karşılığının alınabileceği konusunda güven duyulmayan yerde herkes günü kurtarmaktan öteye plan yapmaz. Korku ekonomisi ile güven ekonomisi arasındaki fark budur.

Yerele inersek, Türkiye’de bir tıp doktoru en az on sene eğitim görür. Bu geleceğe bir yatırımdır. Uzun vadeli yatırım yapılır, çünkü tıp ekonomisine bir güven vardır. O sistemden eğitilerek geçecek adamın geleceğe ilişkin belirli rahatlıkları vardır. O diplomanın kapı gibi geçerliliği vardır. Herşeyden önce hasta o diplomaya güven duymaktadır. O güveni boşa çıkartmanın bedeli çok ağır olduğu için o güven kolay kolay boşa çıkmamaktadır.

Yazılımın bir korku ekonomisi olması bizi tribal düzeyden öteye organize olmaktan alıkoyar. Yazılımcı kendini geliştirmez. Kendini geliştireceği özgürlük alanı ona verilmez. Şirket kısa vadeli sorunları çözmekten öteye gitmez. Şirketler büyümez. Taşeronlaşma yaygınlaşır. Uzmanlaşma yerine yöneticiliğe kayılır, çünkü uzmanlaşmaya bir değer atfedilmez. İyi ile kötüyü ayırmak imkansız kabul edildiği için herkes kötüye mahkum olur. Çoğunluğumuz için meslek “yazılım ameleliği” düzeyinde kalır.

Kariyer sitelerinde şöyle ilanlar çıkar: “Abuzittin Framework Developer Aranıyor”. Oysaki gribal enfeksiyon doktoru, ebeveyn banyosu mimarı gibi şeyler arayanı hiç görmedim. Belki de tıp ve mimari gibi entelektüel örnekler vererek hata ediyorum: Arabanızı bir oto sanayi sitesine götürdüğünüzde kapısında Ford yazan tamircinin Renault marka arabanızı tamir edebileceğinden şüphe duymazsınız. Bir doğramacı evinize geldiğinden “ben yanlızca PimaPen © takmayı biliyorum” demez. Çünkü bu işlerin ekonomisinde dahi yazılıma oranla daha yüksek bir oturmuşluk, standartlaşma ve güven vardır.

Evet, oto sanayideki rastgele ustaya olan güven düzeyimiz, rastgele bir bilgisayar mühendisliği mezununa duyduğumuz güvenden daha yüksek. Bir düşünün ve bana “öyle değil” deyin.

Oysaki, yazılımcının en temel özelliği adaptasyondur. Yazılımın kendisi bir amaç değildir. Toplumun “yazılım” diye isimlendirdiği bir ihtiyaç kalemi yoktur. Yazılım için yazılım yapılmaz. Yazılım kendisinin haricindeki sorunları çözmek için vardır. Yazılımcı bilmediği bir alandaki problemi analiz eder, matematiksel olarak ifade eder ve program kodu ile çözümler. Bu yüzden yeni bir şey ile karşılaşmak yazılımcının gündelik hayatıdır. Yazılımcı öğrenerek yaşar. Çoğunlukla da şahsına faydası olmayan şeyleri. Mesela müşterinin sektörel jargonunu, muhasebesini nasıl tuttuğunu, fiziksel bir tepkimenin denklemlerini ve kim bilir daha neler…

Yazılımcının en temel değeri olan analiz yeteneğini hiçe sayan, onu bir problem çözücüden “araç operatörü”ne indirgeyen “_____ Developer” kalıpları sektörümüzdeki korku ortamının bir sonucudur. İş veren, elle tutamadığı, ölçemediği, güvenemediği, onun için adeta bir kara kutudan ibaret olan yazılımcıyı şekilsel olarak kategorize ederek kendini rahatlatır.

Ben piyasadaki oyunculara, yani iş veren ve çalışana “birbirinize neden güvenmiyorsunuz?” demem. Bu bir sorun değil, sorunun kendini gösteriş biçimidir. Gelecekte sektörün daha güvenilir yazılım üretme süreçleri yaratacağından eminim. Ama bu menzile doğru hareket etmek için bile yazılımcıların kendi saygınlıklarını yaratmaya ve korumaya ihtiyacı var.

Bu bağlamda mesleki olarak geleceğini tasarlama aşamasındaki genç arkadaşlara kendilerini bir “araç operatörü” olarak tasavvur etmemelerini, sektör o yönden bastırsa bile kendilerini tek bir araç veya dile hapsetmemelerini, genel problem çözme ve modelleme yeteneklerini geliştirmelerini tavsiye ediyorum. Developer’lık akar gider, geriye mühendislik kalır.

Bir framework veya bir dil, bir uzmanlaşma alanı değildir. Sinyal işleme, grafik, önyüz, veritabanı, network, güvenlik, kriptografi gibi konular birer uzmanlaşma alanıdır. Bu alanlar dahilinde sonsuz sayıda araç gelir, gider.

X dil ile bilmem kaç yıl, Y araç ile bilmem kaç yıl deneyimizin olup olmadığını sorgulayan iş ilanları sizi yönlendirmesin. Bunlar bahsettiğimiz güvensizliği idare etmek için uydurulmuş şeylerdir. Araçlar, diller, paradigmalar açısından yeterli bir genel kültürünüzün olması, X yıl bir tanesini kullanmış olmanızdan daha önemlidir.

Eğildiğiniz alanda size verilen bir problemi analizden çözüme taşıyabilme yeteneğini kazanmak, elinize alabileceğiniz en önemli değerdir. Web geliştiricileri arasında hem backend hem frontend geliştirenlere “full stack” derler. Bence “full stack”ın hası frontend ile backend’i birbirine bağlamak değil, sorun ile çözümü birbirine bağlamaktır. Analiz ve modelleme kabiliyetinin eksik kaldığı durumda birden fazla alandaki araçlarla deneyim sahibi olmak yetersiz kalır.

Piyasanın yazılımcıyı elle tutulur bir araç operatörüne indirgeme refleksi, analiz kabiliyeti olan yazılımcı eksikliği doğmasına da yol açıyor. Kimi zaman projeler bu yüzden yanlış yollara sapıp başarısız oluyor. Kimi zaman yapılabilecek şeyleri kafamızda sınırlandırıyor, yapmaktan geri kalıyoruz.

Genç yazılımcı arkadaşlar sektörün genel kültüründeki bu sorunları ne kadar erken fark ederlerse o kadar faydasını görürler. Unutmayın, biraz eleştirel olmak her zaman faydalıdır:)

Vakit ayırdığınız için teşekkürler.

turerkan@houseofapps.com

--

--