S.A. Arkadaşlar,
Bildiğiniz üzere sektörde çokça karşılaştığımız 2 şirket kültürü var. Biri kurumsal şirketler (yazının bazı bölümlerinde büyük firmalar da diyorum) diğeri de startup şirketleri (yazının bazı bölümlerinde orta ve küçük şirketler dediğim de oluyor). Aslında bunlardan farklı olarak da çeşitli yazılım kültürleri mevcut, fakat genel açıdan benim odaklanmak istediğim bu ikisi. Sizleri yazıyla baş başa bırakmadan önce paylaştıklarımın öznel düşünceler olduğunu belirtmek isterim...
Daha önce de üzerine çokça düşündüğüm bir konu. Eskiden beri mühendis yetiştirmek, yardım kültürü, kişisel gelişim gibi konuları düşünürken bunlara ek olarak düşünme mantığı da eklenince bu düşündüklerimi bir yazı altında toplamaya karar verdim. Amacım dağınık olan bu düşüncelerimi toparlamak. Ayrıca buları okumak isteyenler çıkabilir, bununla birlikte fikirlerini belirtip tecrübelerini de bizimle paylaşmak isteyenlere de vesile olur diye yazıyorum.
Yazılım kariyerimin ilk başlarında daha çok kurumsal firmalarda çalışırken daha sonra orta ve küçük startup firmalarında çalıştım. İlk deneyimlerim çok da olumlu olmadığı için kurumsal firmalara karşı hep bir olumsuz bakış açım oldu. Bunu yıllar içinde kırmak da pek kolay olmadı, hala da tam kırmış sayılmam. Daha sonra çalıştığım nispeten daha küçük firmalarda da daha mutlu olunca mutluluğun şirketin büyüklüğüyle ters orantılı olduğunu düşünmeye başladım (tabi ki tek parametre değil, sadece ufak bir genelleme). Aslında bu yazıyı bana yazdıran da bu sebeplerin neden ve nasıl oluştuğu ve şu an geldiğim son noktada nasıl olgunlaştığıyla ilgili.
Konuya derinlemesine giriş yapmadan önce bu bakış açısının tamamen bana özel olduğunu ve gerçeğin farklı kişi ve firmalar için tabii ki de farklı olabileceğini hatırınızda tutmanızı rica edeceğim.
Mezun olup sektöre girmeye çalışmak sanıyorum bu işe gönül veren çoğu kişinin karşılaştığı bir problemdir. En azından benim için öyleydi (tabi ki son dönemlerde çok kaliteli genç arkadaşlar yetişiyor olsa da sanıyorum çoğunluk her şeye rağmen böyle). Bir şekilde oldukça büyük bir firmada işe başladım. Başlangıçlar pek kolay olmuyor tahmin edeceğiniz üzere. Çok azimli olduğum halde (öyle olduğumu düşünüyorum en azından :) ) orada tutunmakta zorlandım. Bunun beni ilgilendiren kısımları da var, firmayla ilgili kısımlar da var. Hiçbir şeyin tek taraflı olduğuna inanmadım. Bu da öyle bir şey. Asıl problemin (firmadan bağımsız söylüyorum) alınan kişiyi yetiştirmek ve yönlendirmek olduğuna inanıyorum. Yani yeni mezun bir kişiyi işe almakla bu iş çözülmüyor. Temelinde bunun farkında olmak lazım. Bir kişi işe alındıktan sonra o kişinin gelişimi ve kimlerle nasıl çalışacağı, nasıl adapte olacağı kafa yorulması gereken konular olduğunu düşünüyorum. Yoksa yüzme bilmeyen (en azından okyanuslarda yüzme tecrübesi olmayan) bir kişiyi direkt olarak okyanusa bırakıp hadi "yüz" demek doğru bir davranış mıdır? Yoksa öncelikle ona bir yol haritası çizip bunu takip etmelisin dedikten sonra aşamalı olarak daha derin sulara göndermek mi doğru bir davranıştır?
Bir diğer konu ise bir kişi işe alındıktan sonra bu meslektaşımızın sorularına kimin cevap vereceği de önemli bir sorundur. Şöyle ki, yeni meslektaşımız işe girdi ve bir proje grubuna da dahil edildi. Ona iş ataması da yapıldığını kabul edelim (bazen bunlar bile olmuyor, günlerce aylarca geldiği halde sadece bunu oku, şunu izle veya şu kodları incele tarzında baştan savma işler de yaptırılıyor. Bu işler önemsiz demiyorum, yapılış tarzı yanlış olabilir diyorum. Lütfen dikkat.). Kodların içinde yüzmeye başladı belki problemi çözdü belki de boğulmaya başladı ve bu vesileyle soru sorma ihtiyacı ortaya çıktı. Asıl problem şimdi başlıyor. Bu arkadaş kime, nasıl soru soracak, soracağı arkadaşın yoğunluğu nasıl gibi sorular öne çıkmaktadır. Bu konuda karşılaştığım bir problem de bir kişiye soru sormuştum, soruyu sorarken zaten bir mahcubiyetle soruyorsun, karşı taraf da hiç sorma der gibi davranması sonraki günler için işin içinden çıkılmaz hale getiriyor. Burada tecrübeli olan arkadaşın kendi sprint'ini yetiştirmesi, onun üzerindeki baskılar da göz önüne alındığında belki anlaşılabilir bir durum ortaya çıkmaktadır, benim söylediğim şey bu işin bireylere kalmaması gerektiğidir. Bu iş daha önceden organize edilmiş olmalıdır. Maalesef daha da kötüsünü gördüm, uzman olan arkadaşa soru sorduğu için iş verenden azar işiten yazılımcı arkadaşlara şahit oldum. (1.anlattığım olay büyük firmada, 2'si nispeten daha küçük firmalardan birinde oldu.). Benim olaya küçük firmalar açısından daha umutlu bakmanın sebebi ise nispeten küçük bir firmada işe başlayıp oradaki arkadaşlarımın çok yardımsever olması ve bununla birlikte bir aile ortamın olması, sorularımı rahatlıkla sorup istediğim cevapları almam beni bu bakış açısına yöneltti, fakat burada bile ekip biraz büyüdükten sonra yeni arkadaşlar işe alındı ve işlerin de yoğun olması sebebiyle günlerce sadece gelip gidenler oldu, bunun üzerine ben inisiyatif alıp arkadaşlara elimden geldiğince yardımcı olmaya çalışıyordum. Olaya her ne kadar büyük küçük firma gözüyle baksak da asıl olay şirket kültüründedir diye düşünüyorum.
Aklıma gelen bir başka konu ise küçük firmalarda olan bağlılığın daha yüksek olması. Bu açıdan da bakıldığında yardımlaşma, muhabbet, birlikte yemeğe çıkma, iş dışında da görüşme gibi konular olabilmektedir. Bu tarz şeyler iş içerisinde de bir problem olduğunda herkesin taşın altına elini koyması ve çıkan bu problemi birlikte çözmekte inisiyatif almasını sağlıyor. Bireysel olarak tek tek ele alındığında belki çok usta olmayan yazılımcıların ortaya çıkardığı iş saygı duyulası olabiliyor. Tabi bu işleri yönetip çeviren nispeten tecrübeli birinin olması da kayda değer bir olgudur.
Büyük firmalarda yetenek, bilgi-birikim olarak daha başarılı kişilerin olduğu bir gerçek. Bunun sebebi şirketin yeni mezun yetiştirmeye ihtiyaç duymaması, bu usta yazılımcıları çalıştıracak maddi gücün olması gibi birçok parametre olmaktadır. Bu yetenekli, başarılı insanların bilgisi ölçüsünde mütevazilik duyguları yoksa maalesef problem burada ortaya çıkmaktadır. Saatlerce doğru olanı değil, kendi düşüncesi kabul edilsin diye işi yokuşa sürebilmektedirler. O yüzden hep söylediğim bir şey var "Başak gibi olmak lazım. Öğrendikçe eğilemiyorsan, öğrendiklerin sana yük olur." Ben kendi adıma ne kadar başardım ya da başarabildim mi bunun cevabını beni tanıyanlar versin, ama elimden geldiğince uygulamaya çalıştığımı samimiyetle belirtmek isterim.
Şimdiye kadar insani bakış açısı, planlama açısından konuyu değerlendirdik, fakat buna bir de teknik bakış açısını katmalıyız diye düşünüyorum. Github'ta kodladığım bir projeyi ünlü e-ticaret sitesinde çalışan, nispeten daha tecrübeli, 2 meslektaşım code review yaptı. Daha sonra da kodla ilgili yorumlarını aldım. Aslında bilip de unutmuş olduğum bir şeyi bana tekrardan hatırlattılar. Benim kodlarken belki de üzerinde hiç durmadığım birkaç konuda özellikle titiz davrandılar. Kodla ilgili yorumlarına girmek istemiyorum ama genel düşünce yapısının çok titiz olduğuydu. O an yaptıklarımın bazılarını açıklarken bazılarını da çok önemsemeden yaptığımı itiraf etmeliyim. Sonradan bunun neden böyle olduğunu düşündüğümde küçük büyük şirket faktörünün öne çıktığını düşündüm. Neden mi böyle düşündüm? Çünkü kendilerinin kurulu ve yoğun trafik alan bir sistemleri var ve bu sistemin bu yoğunluk karşısında performanslı ve makul bir şekilde çalışması çok önemli. Burada yapılacak işlerin belki bir tık daha yavaş olması fakat kodun çalışan herhangi bir yapıyı bozmaması, performansını kötü etkilememesi gerekir. Bununla birlikte küçük şirketlerdeki ürünler nispeten daha az trafikli daha hızlı geliştirmeler yapma zorunluluğu olduğundan (her firma için böyle değildir) işlerin hızlı bir şekilde tamamlanması ön koşuldur ve şunu da samimiyetle söyleyebilirim, çok büyük şirketlerden nispeten daha küçük şirketlere gelen arkadaşların bu hızlı iş çıkarma konusunda bocaladığını ve o hızlı işleyen sisteme ayak uyduramadıklarını çok gördüm. Tersi bir bakış açısıyla da küçük firmadaki arkadaşların büyük firmalarda kaliteli iş çıkarma açısından zorluklar yaşadığına şahit oluyorum. Bu birisini iyi diğerini kesinlikle kötü yapmaz. Sadece o kültürü alan bir yazılımcının tekrardan diğer kültüre adapte olması zaman alabilir manası çıkmaktadır.
Teknik tarafa dahil edilecek bir diğer konu ise İngilizce'dir. Herkes okuduğunu anlayacağın kadar İngilizce ister, zaten olmazsa da olmazdır okuduğunu anlamak, fakat bunun yanında birçok şirket konuşma yetisi de ister. Büyük şirketlerde (proje yönetici (project manager), ürün sahibi (product owner) , analistler (BA) gibi bu işi yapacak birçok kişi oluyor, bunun olması da doğaldır, çünkü yazılımcının sadece yaptığı işe odaklanmasını isterler. Bununla birlikte bir hiyerarşi vardır ve herkes üstüne düşeni yapmalıdır. Bu yüzden bu konularda size sıra gelmeyebilir. Küçük ve orta ölçekli şirketlerde ise bu yetinizi kullanmanız açısından avantajlı olabiliyorsunuz. Çünkü yukarıda saydığımız roldeki kişilerin biri ve birkaçı olmayabilir, hatta bazen hiçbiri bile olmayabilir :) O yüzden müşteri ile muhatap olup bu işi de sizin çözmeniz gerekebiliyor. Bu güzel mi değil mi kişiden kişiye göre değişir. Hangi açıdan baktığınıza bağlı olarak değişir.
İşin özeti küçük şirketlerde siz birçok işi halletmek zorunda kalırsınız. Bu öğretici olduğu kadar yorucu da olur. Ayrıca bir konuda uzmanlaşmayı da zorlaştırır. Büyük şirketlerde ise belki de sadece bir işten sorumlu olacaksınız. Sistemin sadece bir çarkı olacaksınız ve uzmanlığınızı derinleştirme olanağı bulurken, tüm sisteme olan hakimiyetiniz zayıf kalabilir. Bununla ilgili benim inandığım bir değer vardır. "Her şeyin avantaj ve dezavantajları vardır." Önemli olan size hangisinin lazım olduğudur.
Bu yazıyı yazmamdaki amaç bir kültürü övüp diğerini yermek değil, her iki şirket kültürünün de avantaj ve dezavantajlarını olduğunu ve naçizane kendi karşılaştığım tecrübelerle harmanlayarak paylaşmaktı. Umarım herkes için faydalı olmuştur. Sizler de düşüncelerinizi ekleyerek benim de sizlerin tecrübelerinizden yararlanma imkanı verirseniz ne mutlu.
Nerede olursak olalım, elimizden gelenin en iyisini yapmak dileğiyle.
Hiç yorum yok:
Yorum Gönder