Sorun daha başlığı atarken başladı. Öyle bir zamana geldik ki, bana insanlar okuduklarını “anlamak” için değil, “alınmak” için okuyorlar. “Eleman” diyemiyorsun mesela. Birileri başkalarını aşağılamak için kullanmış bunu. “Teknik çalışan” desen de olmuyor, birileri o teknik bu değil falan diye dertleniyor. Paragraf doldu, daha konuya giremedik.
Girelim. Yazılım Geliştirme Ekibi, tam organizasyon detaylarından bağımsız olarak, yaptığı hata, üretim sistemlerinde sorun oluşturabilecek herkes anlamına geliyor. En azından benim kafamda böyle. Negatifle tanımlamış olduk ama, sanırım nereden kesmek istediğimi en iyi bu anlatıyor.
Açıkça, kod yazan herkes dahil — front-end’cisi, back-end’cisi, mobilcisi farketmiyor. Analistin her türlüsü de dahil. İş analisti, teknik analist. Keza, “mimar” adı verdiğimiz herkes de bunun içinde.
İçinde olmayanlar? Proje yöneticisi bunun içinde değil, sıfatında “müdür” veya “koordinatör” geçenler de değil. Elbette bunlar da yazılım projelerinin başarısınında çok önemli roller oynarlar, ama derdim bunlar değil.
Sahi, derdim neydi ki? Bu insanları seçme ve değerlendirme üzerine bir şeyler diyecektim. Bir de bugün Lakonik günümde hiç değilim, yazacağım işte aklıma geldiği gibi.
Kriterleri zaman içinde altı taneye indirgedim:
- Yetenek
- İnsan evladı olmak
- Öğrenme isteği
- Profesyonellik
- İletişim
- Teknik bilgi
Şimdi bu kriterlerin ne anlama geldiğinden bahsedelim.
Yetenek
Yetenek derken, zihinsel yetenekten bahsediyoruz doğal olarak. Bu da çok basit bir tanım değil ama, böyle bir şey de var. Sıklıkla da ölçüyoruz. Yeni kavramlara adapte olma, kavrayış hızı, farklı şeyler arasında bağlantı kurabilme, benzerlikleri ve farklılıkları yakalama, çıkarım yapabilme gibi bir sürü alt başlığa bölünebilir. Pratikte ise, bilinen yetenek testlerinden biri uygulanır veya hangi üniversitede okuduğuna bakılır. Üniversitenin önemi, çıkışında değil, girişindedir yani.
İnsan Evladı Olmak
Bunu nerede söylesem, insanlara pek “kurumsal” gelmiyor. Sanırım bunun sebebi, bizim “kurum” diye bildiğimiz şeyin de pek “insan evladı” olmaması. (Bizim “kurum”lar “kur”ma kökünden değil, “soba kurumu”ndan geliyor diye düşünüyorum uzun süredir. İnsanın ağzına-burnuna kaçıyor, rahatsız ediyor, boğuyor…)
Anladınız siz onu da, anlatayım yine de. Güvenilir bir insan mı? Egosu kapıdan sığıyor mu? Kendisini fasulye gibi nimetten mi sayıyor? Bir “üstünlük” derdi mi var? On ekmeği olsa, birini bize verir mi? Bu insanla oturup sohbet etmek ister miyiz? Gücü eline geçirse bize ne yapar?
Anlatmadım ama sordum. İşte insan evladı olmak bu soruların cevaplarına göre belirleniyor.
İkinci sırada yazdım, ama bence en önemli kriter bu. Burada “geçer not” alamayan insan; ekip, şirket, hatta ülke bozar. Geçer not alamayana “toksik” diyoruz.
Öğrenme İsteği
Yazılım işi öyle bir iş ki, sürekli hareket halinde. Hoş, bu çağda böyle bir çok iş var, ama yazılım “bilgi işinin en bilgi işi” olduğu için, en ağır durum da burada var. Öğrenme isteği olmayan, sürekli öğrenme taraftarı olmayan, statikleşecek ve ayağına yer ettikten sonra “istemezük”çü olacak insanların iyi bir ekibin içinde -maalesef- yerleri yok. Yani, “X biliyor musun” diye sorunca, “bilmiyorum ama ıslıkla çıkarabilirim” demesini bekliyorum. Elbette genel tercihleri olabilir; öğrenmek için süre de isteyebilir (hatta istemelidir) ama “ben bildiğimle iş yapayım beni germeyin” diyenler bu kriterden sınıfta kalır.
Profesyonellik
Bu kadar çok söylenip, bu kadar bilinmeyen — hatta yanlış bilinen bir kavram olamaz herhalde. Bunu “anladınız siz onu” varsayımıyla değil, “anlamadınız siz onu” varsayımıyla anlatacağım.
Profesyonelliğin içinde şu bileşenler var:
- Yaptığı işin aslının, müşteriye kıymet teslim etmek olduğu konusunda farkındalık. Bu yoksa, profesyonel falan değildir.
- Kazandığı paranın kendi kıymeti değil, teslim ettiği kıymet karşılığında alınan paranın, şirketin paylaşım modelinden geçmiş hali olduğunu kavrama. Bu yoksa, profesyonellik düşüktür.
- Neyi bilip neyi bilmediğini bilme. Bildiğini ne kadar zamanda nasıl yapacağını da tahmin edebilme. Eğer “beni rahat bırakın şurada kumda oynayayım” diyorsa, profesyonel değil, amatördür hatta çocuktur. Profesyonel her şeyi elbette bilmez; ama bunu açık söyler ve en öncelikli olarak bilinmezleri ortadan kaldırmaya çalışır.
- Müşterinin söylediğiyle ihtiyacını ayırt edebilme. Buradaki durumu formüle edebilme. Elbette bunun yanında biraz da öngörü.
Aslında, “junior” dediğimiz durumdan kurtulmanın kriterlerinin çoğu bu kriterde yatar. Diğer kriterlerden tamamen bağımsız olmasa da, bu kriterin kendisi de net olarak var.
İletişim
İletişim. Doğru iletişmek o kadar zor bir şey ki. Biz de insanları eğitim hayatının bir yerinde “sayısalcı”-”sözelci” olarak ikiye ayırıyoruz ki, mühendis tayfasının iletişim yetenekleri yerlerde olsun. Hepsi öyle değil, ama kendi özel ilgilerine ve yeteneklerine terkettiğimiz de kesin.
Sözlü iletişim: İnsanlarla insan gibi konuşabiliyor mu? Düşündüklerini, sorunları, çözümleri “homganga” dilinde değil de, insan dilinde ifade edebiliyor mu?
Yazılı iletişim: Eposta yazabiliyor mu? Doküman yazabiliyor mu? Yazdığı dokümandan bir şey anlaşılıyor mu? “Al bu dokümanı, ben şimdi sana ne yazdığını anlatayım” mı diyor, yoksa yazdığı doküman tek başına işe yarıyor mu? (Bu son dediğim bulunmaz Hint kumaşı.)
Bu arada, bu böyle damardan yazılımcılar, mimarlar için de geçerli. Yok öyle yani karanlık bodurmda saklanıp kod yazıp ne dediği anlaşılmamak.
Teknik Bilgi
Bu özellikle sonda. Önemsiz olduğu için değil, ancak aşırı önemli görülüp, tek kriter haline getirilme potansiyeli olduğu için. Burada da iki alt kategori var (hoş her türlü bilgi için var):
- Temel bilgiler. Öğrenmesi uzun sürer, ama etkisi de uzun sürer. Mesela, veri yapıları ve algoritmalar. Mesela, veri tabanının ilişki yapıları ve performans özellikleri. Mesela, temel network kavramları. Mesela, mesaj kuyruklarının çalışma prensipleri.
- Arızî bilgiler. Göreli hızlı öğrenilen, etkisi de kısa olan, günden güne değişen bilgiler. Spesifik “framework”ler.
Temel bilgilerin eksikliği, bunların tamamlanması için çok efor gerekeceği anlamına gelir. Buradan, “arızî” bilgileri aşağıladığım anlaşılmasın; arızî bilgiler pratik ve güncel bilgilerdir; onlar olmadan hiçbir şey yapılamaz. Ancak, temel bilgileri sağlam, arızî bilgileri eksik birini, haftanın her günü temel bilgileri eksik, arızî bilgileri dolu birine tercih ederim.
Kriterler nasıl ölçülür konusuna artık çok detaylı giremeyeceğim ama, şu tabloyu da yukarı bırakmış olayım. Siz kendi sonuçlarınızı çıkarın.
Son olarak, şunun da altını çizeyim: Son zamanlarda gündem olan “Altı ayda yazılımcı olunur mu?” sorusu var. Bence buradan onunla ilgili ilginç sonuçlar da çıkar.
Seçme ve seçilme durumundaki herkese kolaylıklar…
Emre Sevinç der ki
Eline ve zihnine saglik!
“Neyi bilip neyi bilmediğini bilme. Bildiğini ne kadar zamanda nasıl yapacağını da tahmin edebilme.” maddesine asagidaki gibi bir ek yapsam kabul olur mu?
– Bilmedigini ne kadar zamanda ogrenebilecegini, dusuk hata payi ile kestirebilme, baska bir deyisle ust seviye (meta?) teknik oz-farkindalik: “X’i Y’ye benzedigi icin su kadar surede ogrenebilirim, Z’i ilk defa duydum, eger M gibi bir seyse su kadar surebilirim katkida bulunur hale gelmem. ω beni asar, beni astiginin farkindayim cunku … en az 3-4 ay her gun oturup calismam gerekir giris seviyesine gelebilmem icin.”