İyi Yazılımcıları Nasıl Tespit Eder ve İşe Alırsınız? Kimdir bu 10x Developer?

4 yıl önce

Bir çağrı merkezinde çalışan insanların performanslarını doğru bir şekilde ölçebilirseniz, normal bir dağılım ile karşılaşırsınız:

Bir çağrı merkezinde çalışan insanların performanslarını doğru bir şekilde ölçebilirseniz, normal bir dağılım ile karşılaşırsınız:

 

Performans ve o performansı gösteren kişi sayısı histogramı: Normal Dağılım

  • Ufak bir grup, ortalamadan biraz düşük performans gösterecekken (poor performers)
  • Çoğunluk, ortalamaya yakın performans gösterecek (average performers)
  • Yine ufak bir grup, ortalamadan biraz yüksek performans gösterecektir. (high performers)

Dünyadaki diğer meslekler için de benzer bir çalışma yaparsanız; örneğin dişçiler, muhasebeciler, satışçılar vb. yine bir “normal dağılım” elde edersiniz. Elbette bu “normal dağılım” ların standart sapmaları farklı çıkar. Yani ortalama çevresinde yoğunlaşma kimisinde daha fazla; kimisinde daha az olur:

 

Standart sapması farklı olan “normal dağılım” lar.

Örneğin yukarıdaki grafikte Mavi, muhasebecileri; Kırmızı, pazarlamacıları; Sarı ise çağrı merkezi çalışanlarını gösteriyor olabilir. Bu durumda yapacağımız yorum: Pazarlamacıların performansının, çağrı merkezi çalışanlarına göre çok daha dağınık (farklı) olabileceğidir. Bu durumda, bir pazarlamacı işe alırken vereceğimiz kararın sonuçlarının çok daha değişken olacağını, dolayısıyla pazarlamacı işe alırken çok daha dikkatli karar vermemiz gerektiği sonuçlarına varıyoruz.

Performans Açısından Yazılımcılar

Konumuz olan Yazılımcıların performans / kişi sayısı histogramının ise “normal dağılmadığını”; “Power Law” adı verilen bir dağılıma sahip olduğunu gözlemliyoruz:

 

Bu dağılıma göre; yazılımcıların çok büyük kısmı, (sarı boyalı alan) düşük veya ortalama performans gösteriyor iken; ufak bir grup yüksek performans gösteriyor. Ancak; yüksek performans gösterenlerin (yeşil boyalı alan) aralarında da bir uçurum var. Yüksek performans gösterenler içinde bir azınlık diğerleri ile arayı fena şekilde açmış durumda. Hatta öyleki iyi performans gösterenlerin içinde en iyiler — en kötülere göre kat/kat değer yaratıyorlar.

Bu durumu Bill Gates şöyle ifade ediyor:

 

10.000x developer

Biz de kendi dilimizle ama başka bir örnek ile ifade edersek; İyi bir satışçı, kötü bir satışçıdan 4 kat fazla satış yapıyor olabilir. Ancak çok iyi bir yazılımcı, iyi bir yazılımcıdan 10 kat değer yaratıyor olabilir. (Satışta iyi ile kötüyü; yazılımda ise iyi ile çok iyiyi karşılaştırdık)

Benzer bir ifade de Google cephesinden:

One top-notch engineer is worth “300 times or more than the average,” explains Alan Eustace, a Google vice president of engineering. He says he would rather lose an entire incoming class of engineering graduates than one exceptional technologist. Many Google services, such as Gmail and Google News, were started by a single person, he says.

Son olarak; performans ölçümüne ilişkin bilimsel bir yaklaşım oladığı için; bu bilimsel görünümlü grafiklerin aslen bilimsel dayanaklarının olmadığını vurgulamam gerekir. Ama ölçemiyor olmamız; gözlemlerimizin illa da yanlış olacağı anlamına gelmez. Ben de tanıdığım yazılımcıları düşündüğüm zaman benzer gözlemlere sahip oluyorum.


Meslek Edinme ve Motivasyon Açısından Yazılımcılar

Dünyadaki 20 milyon yazılımcının 3'de 2'si, yazılım geliştirmeyi kendi öğrenmiş. Toplamın ise yalnızca %40'ı meslek olarak yazılımcılık yapıyor. Bu yine “yazılımcılık mesleğini” diğer mesleklerden tamamen farklılaştıran bir özellik. Örneğin benzer rakamları dişçiler için asla göremeyiz. İnsanlar hobi olsun diye dişçilik öğrenmez ve hatta belki de öğrenemez. Öğrense bile, hobi olarak dişçiliği öğrenmiş bir kişinin, eğitimini almış bir dişçiden çok daha iyi olmasını beklemek surreel. Öte yandan dişçilik mesleğini icra edenlerin üçte ikisinin dişçilik eğitimini almadığını düşünemeyiz. Dişçilik bir kenara; aynı rakamları örneğin muhasebeciler için de söylemek bir hayli zor.

Yani bu rakamlar bize, yazılımcılık mesleği ile “iç motivasyon” arasında çok kuvvetli bir korelasyon olduğunu gösteriyor. Zira Linus Torvalds’ın “Just For Fun” adlı kitabını okuyanlar, bu bağlantıyı çıplak gözle fark edecektir.

 

“Yalnızca Eğlenmek İçin” Linus Torvalds

Birçok meslek “motive edici dışsal faktörler” ile beslenebilir. Örneğin satış, pazarlama, finans vb. çalışanlarını para / maaş / bonus vb. finansal enstrümanlar ile motive edebilir ve performanslarını arttırabilirsiniz. Ancak yazılımcılarda “iç motivasyon” çok daha önemli bir yer tutuyor. Ama burdan “iç motivasyonu yüksek yazılımcıların parasız da sizin yazılımınız için çalışacağı” gibi bir “safsata” çıkarmamak gerekir. Burdan çıkarılacak doğru yorum; iç motivasyonu düşük olan bir yazılımcının, dışsal faktörler yardımıyla motive edilemeyeceğidir.

 

motivasyonda iç ve dış etkenler

 

İyi Yazılımcıları Nasıl Tespit Ederiz?

Konumuzun başlığına geri dönersek, yaptığımız analizin bir sonucu olarak, işe alımlarda doğru yazılımcıların tespit edilmesi sürecinde aşağıdaki adımları öneriyorum.

  1. Analitik Yetenekleri Yüksek Mi? —nesnel bir süreç ile tespit edin:Analitik yetenekler testi kullanılmasında fayda var. Başka türlü veya daha doğru bir tespit imkanı bence yok. Ancak kimi şirketler puzzle’lar, beyaz tahta başında problemler, algoritma soruları vs de uyguluyor. Bana bu yöntemler “stresle başa çıkma”, “grup içinde konsantrasyon” gibi çok fazla dışsal etkenle “kirletildiği” için, yetenek seviyesini ölçmek için doğru gelmiyor.
  2. İç Motivasyonunu Yüksek Mi? — tespit edin: Eğer yazılımı seviyorsa, iç motivasyonu sayesinde yazılım ve çevresindeki ekosistemde birçok şey biliyor olmalı. Bu durumda eğer bir Java Yazılımcısı arıyor bile olsanız, mülakatınızı bu şekilde kısıtlamayın. Adayın genel olarak yazılım alanında neler bildiğini, bunları neden öğrendiğini ve nasıl öğrendiğini etraflıca araştırın. Online tek yönlü video mülakat soruları ile bir ön eleme yapabilir; daha sonra (çift yönlü) yüzyüze mülakat esnasında bu tür bir “diyaloğu sürdürebilecek” iyi bir yazılımcı ile görüştürebilirsiniz. Amacımız adayın yazılım alanındaki motivasyonunun kaynağını anlamak. Bunun için karşılıklı diyalog esnasında iken birçok kelime sıralayın, hangilerini duyduğunu sorarak keşfi kolaylaştırmayı deneyin. Örnek bir liste şöyle olabilir: Ember JS, PLC, SASS, LESS, Neo4J, Cassandra, EcmaScript, Action Script, SQLite, Lisp, Tomcat … Bu kelimelerden hiçbirini duymamış da olabilir. Amacımız bunları biliyor mu anlamak değil; kendi iç motivasyonu ile neleri kendi öğrendiğini keşfetmek için yolu açmak.
  3. İlgili Teknik Bilgi & Teori Bilgisini ölçün: Örneğin bir Java uzmanı arıyorsanız, elbette biraz Java kodu yazmasını istemelisiniz. Eğer Senior bir Java uzmanı arıyorsanız yazılım patternleri ile ilgili bir kod sorusu sorabilirsiniz. Kod kendisini hızlıca belli edeceği için bence bu aşamayı çok uzatmaya — 1–2 gün sürecek büyük projeler istemeye gerek yok. Adayın 1–2 saatte yazabileceği kodlar yeterli olacaktır. Daha sonra mülakatta ilgili kodun üzerinden geçmek size yine kuvvetli sinyaller verir.
  4. İngilizce Seviyesini Ölçün: Adayın kendini sürekli geliştirebilmesi için iyi seviyede İngilizce biliyor olması kritiktir. Bunun için bir İngilizce Seviye Tespit Testi kullanılmasını tavsiye ederim.
More Posts