Saksiya sigmamak yazilimcilarin sik is degistirmesi uzerine

Posted on Sep 16, 2020

Bahçe işleriyle uğraşmayı seven biriyim ancak bir bahçem yok, bunun yerine terasımda saksılarda eşimle birlikte bir bahçe kurduk. İçerisinden gül, şeftali ağacı, limon, fasülye, domates, pazı vb şeyler yetiştirmeyi seviyoruz.

Saksıda bitki yetiştirmeyi biliyorsanız bazı bitkilerin, özellikle meyve veren bitkilerin, küçük bir saksıda başlayan macerası zamanla boy boy saksı değiştirerek ilerliyor. Geçenlerde bir bitkinin saksısını büyütmeyi geciktirdiğim için büyümesi durdu ve haliyle saksıyı bir an önce değiştirmem gerekti. Saksıdan bitkiyi çıkarttığımda köklerinin neredeyse saksıyı delip çıkmak üzere olduğunu ve içindeki toprağın her yerine yayıldığını farkettim.

Saksı küçük kaldığı için kökler büyüyemiyor ve bu da bitkinin yaşamını direkt olarak etkiliyor.

Yazılım sektöründe düstur haline gelmiş ve bence yanlış yönde ilerleyen bir algı var. Silikon vadisinde dahi normalleştirilmiş olan şey; yazılımcıların şirketler arasında atlamasının, kısa sürelerde iş değiştirmelerinin normal olduğu algısı.

Bir yazılımcı neden iş değiştirir? Herkesin bireysel nedenleri olabilir ancak genel tabloya baktığımızda sorunlar gayet net görünebilir.

Maddi kaygılar, şirket içi sosyal problemler ve mesleki tatminsizlik konuları, iş değiştirme sebebi olarak başı çekiyor.

Maddi kaygılar konusunda yapabilecek pek bir şey yok. Her şirket belli bütçelere sahip ve yazılımcılar başka bir şirkette daha iyi kazanabileceklerini düşünüyorlarsa o yazılımcıyı tutmanın pek bir yöntemi olmuyor. Bu tarz yazılımcılar kendi stratejilerini belirlerken doğru kararlar alırlarsa 3-4 şirket sonunda optimum kazanca eriştiklerini düşünerek uzun dönemli çalışma hayatına kendiliğinden geçiyorlar. Yanlış kararlar alanlar ise sektör tarafından güvenilmez olarak varsayılıp buna göre muamele görüyorlar. Gelişimini bildiğim bir kaç yazılımcı ülke içerisindeki şirketlerde itibarını kaybedince mecburiyetten yurtdışı şirketlere yönelmek durumunda kaldılar.

Şirket için sosyal problemler konusuna kültürel uyumsuzluğu da dahil edebiliriz. Her şirket mobbing veya mikro yönetim uygulamasa dahi yazılımcılar her şirkete adapte olamayabiliyor. Yönetimsel problemler gayet net ortaya koyulabileceği için, böyle sorunları olan şirketler istedikleri zaman bu sorunları çözebiliyor. Çözmeyenler ise, yine yakinen bildiğim şirketlerden yola çıkarak söylüyorum, çalışan dönüşümünün normal olduğuna, ortada bir sorun olmadığına kendilerini inandırarak varoluşlarını sancılı da olsa sürdürmeye devam ediyorlar. Yazılımcı dönüşümünden doğan sorunları çoğunlukla pazarlama departmanının yüksek performansıyla dengeleyip şirketi ayakta tutabiliyor.

Saksıya sığmamak diyebileceğimiz mesleki tatminsizlik konusu ise çözülmesi çok zor olan, çoğu şirketin mecburiyetten yazılımcı dönüşümüne razı geldikleri bir sorun.

Yıllardır birikmiş olan iyi kötü bir alt yapıdan gelir elde etmeye devam eden bir şirket, haklı olarak, yüksek bir dönüşümün olduğu bir sektörde herhangi bir yazılımcıya güvenemediği için yazılımcılara yeterli oyun alanı bırakma riskini göze alamıyor. Çok keskin sınırlara sahip bir çevrede iş geliştirmek zorunda olan yazılımcı ise, öğrendiği teknikleri varolan uygulamada kullanamadığı için tatminsiz oluyor. Bu tatminsizlik boş zamanında daha fazla şey öğrenmesi için yazılımcıyı teşvik ediyor ve kökler büyümeye devam ediyor. Bir noktadan sonra saksısına sığamayacağını anlayan yazılımcı çareyi daha özgür olacağına inandığı, bir boy büyük saksıya geçmekte buluyor.

Burada bir kısır döngü oluşmaya başlıyor. Yazılımcı işinden tatmin olmadığı için 6 ay ile 2 yıl içerisinde sürekli bir şirketten diğerine atlıyor, işveren ise elindeki uygulamanın bir organizma olduğunun farkında olduğu için bu kadar kısa sürelerle gelen kişilerin radikal kararlara sebep olmasını istemiyor.

Burada uygulanması gereken bir çok farklı çözüm var. Ancak Türkiye’de bunlar ne kadar işe yarar bilemiyorum.

Varsayımsal olarak konuşmak gerekirse; şirketinizin ana ürününün karmaşık ve bakımsız bir altyapısı vardır ve her giren yazılımcı bir süre sonra mesleki tatminsizlik yüzünden işten ayrılmaktadır. Ekibinizle yaptığınız toplantıda, ekibinizin bu konudaki çözümlerini dinlemek ve eğer ekibinize güveniyorsanız, ekibinizdeki kişilerle uzun süreli iş sözleşmesi yaparak hem mimarinizi geliştirmek hem de ekibinizin mesleki tatmine ulaşmasını sağlamanız mümkün.

Ekibinizin yetersiz olduğunu düşünüyorsanız da; yine ekibinize konu hakkında fikirlerini sorup bir dış yazılım danışmanlık şirketinden, danışmanlık alarak altyapınızı, ekibinizin de çalışmaktan zevk alacağı bir hale çevirebilirsiniz.

Bu süreç sancılı ve çok zor bir süreç olacaktır. Zira hem varolan uygulamanızın müşterilerinize hizmet vermesi, hem yeni uygulamanın geliştirilmesi, hem de eski verilerinizin kayıpsız olarak yeni uygulamanıza aktarılması süreçleri maliyetli olacaktır.

Ancak varsayımsal uygulamanızı legacy halden, maintainable hale getirdikten sonra, hem yazılımcı dönüşüm oranınız düşektir, hem de eski yazılımınızdan kaynaklı sorunlara harcadığınız bütçenizden kar edeceksinizdir.

Burada şu sorun ortaya çıkmaktadır. Teknoloji bu kadar hızlı ilerlerken, yazılımcıların bitmek bilmeyen iştahını nasıl doyuracaksınız? Her 3 yılda bir kodunuzun legacy hale dönmesini nasıl engelleyeceksiniz?

Bilinen bir çok çözümü olmakla birlikte, uygulamanızı sağlıklı bir alt yapıda tutmanın en önemli bir kaç kuralı; dökümantasyon, otomatize testler, ve uygunluğuna göre mikroservis mimarisi, uygulamanızın durağanlaşmasının önüne geçecektir.

Ek olarak ekibinizdeki yazılımcılara, uygulamanız için yazdıkları kod parçalarından bir kısmını açık kaynak olarak paylaşabilme imkanı vermeniz ekibinizin motivasyonunu arttıracaktır.

Ve; yazılımcılar optimum kazanç ve sosyal ilişkilerle ilgili sorunlara sahip değillerse kendilerine güvenilmesini ve karar haklarının olmasını beklerler. Yazılım ekibinizi dinleyip fikirlerine kıymet vermeniz onlar için önemlidir. Her fikirlerini onaylamanız tabi ki mümkün değil, ancak onaylamadığınız fikirleri rasyonel sebeplerle yazılımcılarınıza açıklamanız onları mutlu edecektir.

Son olarak, yazılımcılar oyalanmayı ve uyutulmayı sevmezler. Net olun ve güvenin. Fikirlerine saygı duyduğunuz, güvendiğiniz, teknik karar süreçlerine dahil ettiğiniz ekipler uygulamanızı bebekleri gibi görüp uzun süreler sizinle birlikte olmaya devam edecektirler.