Maaşını Hak Eden Mühendisin Sırrı: "Bilinmeyeni (Ambiguity)" "Yapılabilir Şeye" Dönüştürme Becerisi
(terriblesoftware.org)Temel noktalar:
- Kıdemli ve orta seviye mühendisleri ayıran belirleyici fark, belirsiz ve muğlak problemleri somutlaştırma becerisidir.
- Kıdemli bir mühendisin değeri, kodlama becerisinin kendisinden değil; projenin risklerini ortadan kaldırıp onu uygulanabilir bir plana dönüştürmesinden gelir.
- Mevcut işe alım pratikleri (algoritma testleri vb.) bu yetkinliği değerlendirmekte başarısız kalıyor.
- Gerçek gelişim, kod yazmadan önce problemi net biçimde tanımlama pratiğiyle başlar.
Giriş: Kıdemli mühendisin tanımını yeniden düşünmek
- Genellikle kıdemli mühendis; mimari tasarım, iletişim, liderlik gibi çeşitli beceri listeleriyle tanımlanır.
- Ancak unvan, maaş ve kıdem yılı çıkarıldığında, kıdemli ve üstü mühendisleri ayıran tek temel beceri "muğlaklığı azaltma yeteneğidir".
- Diğer tüm yetkinlikler (teknik uygulama vb.), bu temel beceriden türeyen sonuçlardır.
Ana bölüm
1. Problem çözme yaklaşımındaki fark: netlik ve muğlaklık
- Orta seviye (Mid-level) mühendis: Açık bir spec ve kısıtlar verildiğinde çok iyi performans gösterir. İyi tanımlanmış problemleri çözmede ustadır.
- Kıdemli mühendis: "Performansın iyileştirilmesi gerekiyor", "kullanıcı şikayetleri artıyor", "ölçeklenebilirlik düşünülmeli" gibi belirsiz ve soyut talepler geldiğinde farkını ortaya koyar.
- Kıdemli mühendis, muğlak problemi yalnızca yerine getirmez; onu analiz eder, parçalar ve somut görevlere dönüştürür.
2. Kıdemlinin temel rolü, proje risklerini ortadan kaldırmaktır
-
Kıdemli mühendis, büyük ve soyut bir problem karşısında belirsizliği şu yaklaşımlarla giderir:
-
Başkalarının sormadığı özsel soruları sorar.
-
Önemli sinyalleri gürültüden (Noise) ayırır.
-
Hemen yapılacaklarla ertelenebilecekler arasında öncelik belirler.
-
Bu süreç, projenin riskini düşürür (De-risking) ve "ne olduğu bilinmeyen durumu" "uygulanabilir küçük projeler ve elenecek unsurlar" olarak düzenler.
-
Kıdemli mühendis bunu iyi yaptığında proje akıcı biçimde ilerler ve dışarıdan bakıldığında kolay görünür; oysa bu, önceden yapılmış büyük miktarda 'görünmeyen iş'in sonucudur.
3. Muğlaklığı gidermek için somut yaklaşım
- Kıdemli mühendis, kodlamadan önce problemi netleştirmek için şu soruları sorar:
- Problemin özü: İstediğimiz çözüm değil, çözmeye çalıştığımız gerçek kök problem nedir?
- Kullanıcının tanımı: Tam olarak kimin hangi acısını çözmeye çalışıyoruz? ("kullanıcı" gibi kapsayıcı bir kelimeden kaçınarak)
- Varsayım doğrulama: Mevcut planın içinde saklı yanlış varsayımlar neler?
- Risk değerlendirmesi: Kararımız yanlış çıkarsa oluşabilecek en kötü senaryo nedir?
4. İşe alım sisteminin sınırları ve hatalı kıdemli seçimi
- Çoğu şirket işe alımda teknoloji yığını listelerine veya algoritma problem çözme becerisine (LeetCode) odaklanır.
- Bu yöntem, muğlak ürün gereksinimlerini uygulanabilir planlara dönüştürme becerisini doğrulayamaz.
- Sonuç olarak, kodlama becerisi güçlü ama eksik spec karşısında hiçbir şey yapamayan, yalnızca adı kıdemli olan mühendisler çoğalır.
Sonuç: Gelişim için öneri
- Mimari ya da iletişim becerileri de önemlidir, ancak bunlar ancak "neyin yapılacağının" netleşmesinden sonra değer üretir.
- Muğlaklık azaltılmadan sergilenen teknik mükemmellik, sadece 'yanlış problemi zarif biçimde çözmek'ten ibarettir.
- Bir kişinin kıdemli seviyede olup olmadığını anlamanın ölçütü, soyut bir görev aldığında başkalarının netleştirmesini bekleyip beklemediği ya da ekibin uygulayabileceği somut hale kendisinin getirip getirmediğidir.
- Bu, doğuştan gelen bir yetenek değil, pratik alanıdır; bu yüzden muğlak bir ticket (iş) geldiğinde hemen kod yazmak yerine problemi somutlaştırma alıştırmasına başlamak gerekir.
5 yorum
Kıdemli geliştiricileri "algoritma kodlama testi" ile doğrulama sürecinin ben de.. işe alım sisteminin bir sınırı olduğunu düşünüyorum. Sorunun özüne yaklaşmış olan ya da yaklaşabilecek olan kişinin, maaşının karşılığını veren kıdemli geliştirici olduğunu düşünüyorum.
Bu yazıdan, bakış açısına göre bunun kişiden kişiye değişebildiğini öğreniyorum. Benim ölçütüme göre kıdemli mühendis ile orta seviye mühendisi ayıran kriter yalnızca kapsamdır.
Belirsizliği somutlaştırmak bir mühendisin temel niteliğidir ve bence en azından orta seviye bir mühendis bunu yapabiliyor olmalı ki “mühendis” unvanı gerçekten uygun olsun. Bu yüzden benim için bu yazı, orta seviye mühendis ile başlangıç seviyesindeki (
associate) mühendisi ayıran bir ölçüt olabilir.Sorun net biçimde tanımlanmamışken
teknik mükemmeliyet, sadece “yanlış problemi zarifçe çözmek”ten ibarettir.
Gerçekten tüyler ürpertici bir cümle
Kıdemli geliştirici testinde programlama testi olmasına bir yere kadar anlayış gösterebilirim,
ama algoritma sorusu sorarlarsa gerçekten çok saçma geliyor (öyle afalladım ki ne olduğunu bile hatırlamıyorum)
1. Soru sorma becerisi ve sosyal sermaye (Social Capital)
2. Özerklik ve risk yönetimi (Autonomy & Risk)
3. Unvan enflasyonu ve işe alımdaki yapısal çelişki
4. Basit kıdem süresi (Tenure) ve kasıtlı gelişim
If) işlemeye odaklanırken, kıdemliler koşullar değişirse ne olacağını (What-if) varsayar ve buna hazırlanır.5. Kıdemli unvanına kuşkucu bakış