Elit Azınlığın Peşinde – Sektördeki En İyi Yazılım Geliştiricilerini Bulma ve İşe Alma

Yayınlanan: 2022-03-11

Meydan okuma

Yazılım geliştiricileri işe almak, tüm dünya yetenek havuzunuz olduğunda çoğu zaman göz korkutucu bir görev olabilir.

Yazılım geliştirme yeteneğini – gerçek yetenek – işe almak, sosyal ağ oluşturma, teknik zeka, süreç yönetimi ve sezginin kavşağında yer alan çok yönlü bir beceridir. İşe alma sorumluluğuna sahip olan herkes, işe alma zorluğunun kapsamını ve derinliğini çok iyi anlar.

Yetenekli işe alım, sosyal ağ oluşturma, teknik zeka, süreç yönetimi ve sezginin kavşağında yer alan çok yönlü bir beceridir.

İstisnai yazılım mühendisliği adaylarının ayırt edici niteliklerinin değerlendirilmesinin son derece zor olduğu gerçeği özellikle zorlayıcıdır. Bir adayın yenilik yapma ve yaratıcı düşünme yeteneğini nasıl keşfedersiniz? Onun bir takım oyuncusu olup olmadığını nasıl belirlersiniz? Yapıcı geri bildirim alma yeteneğini nasıl teşhis edersiniz? Birinin ahlaki yapısını nasıl araştırırsınız?

Bu “yumuşak” kriterleri değerlendirmek kolay bir iş olmasa da, en iyiyi işe alma arayışında bunu yapmak çok önemlidir . Yine de çoğu zaman, bu önemli, ancak anlaşılması güç nitelikleri değerlendirme girişimleri, çoğu aday için “doğru” yanıtların açık olması için yeterince şeffaf olan sorulardan veya zorluklardan oluşur. Bu nedenle, onlara sormakla özden bir şey elde edilmez.

Ortaya çıkan yaygın bir tuzak, adayın problem çözme, yaratıcı düşünme ve ekibin geri kalanıyla uyumlu çalışma yeteneğini değerlendirmek yerine teknik ayrıntılara çok fazla odaklanmaktır.

Yaygın bir tuzak, teknik ayrıntılara çok fazla odaklanmaktır.

Kabul etmek gerekir ki, ileri düzey yazılım geliştiricilerle etkili mülakatlar yapmak ve işe almak bir bilim olduğu kadar bir sanattır. Bununla birlikte, bir yazılım mühendisinin beceri ve yeteneklerinin daha incelikli boyutlarını değerlendirmek için yaklaşımlar ve metodolojiler mevcuttur.

Toplu olarak kullanıldığında, bu işe alma teknikleri, maaşlı veya serbest programlama yeteneklerini işe almak için kanıtlanmış bir başarı geçmişine sahip oldukça etkili bir eleme süreci sağlar. Bu süreç, bu yazının konusu.

Başlarken: Boru Hattını En İyilerle Doldurmak

Seçkin birkaç kişiyi bulma ve işe alma süreci, görüşmenin kendisinden çok önce başlar. Aslında, potansiyel olarak nitelikli adayları uygun şekilde belirlemeye yönelik sistematik bir yaklaşım, tüm işe alım sürecinizin verimliliğini önemli ölçüde düzene sokabilir ve artırabilir.

Yazılım geliştiricisi yeteneği için işe alma hattını doldurmak, en iyileri işe almak için çok önemlidir.

Nitelikli adayların en iyi tek kaynağı, kaliteli insanların kaliteli insanlarla ilişki kurma eğiliminde olduğu için, şüphesiz ki kişisel ağlardır . Başarılı yeni işe alımlar (kaynak) için en verimli kaynak olarak kişisel tavsiyeler hakimdir.

Birinci sınıf teknik yeteneklerin diğer değerli kaynakları şunlardır:

Bu kaynakların güzelliği, şu ya da bu şekilde incelediğiniz adayları daha görüşmeden önce sağlamalarıdır.
  • Bloglar ve çevrimiçi teknik gönderiler. Geliştirici blogları, güçlü adaylar için harika bir kaynak olabilir. Teknik gönderiler genellikle bir geliştiricinin teknik zekası, problem çözme yaklaşımı ve yazma becerileri hakkında değerli bilgiler sağlar ve bunların hepsi en iyi adayları belirlemek için önemli kriterlerdir.
  • Açık kaynak kodu katkıda bulunanlar. GitHub ve SourceForge gibi sitelerde açık kaynak projelerini incelemek, yüksek nitelikli adaylar sağlayabilir. Bu yaklaşımın ek bir yararı, bir adayın kod örneklerini daha iletişim kurmaya karar vermeden önce görmenizi ve değerlendirmenizi sağlamasıdır.
  • Konferanslar. Konferans konuşmacıları ve ilgili teknik konferanslardaki ortak katılımcılar genellikle nitelikli adaylar için değerli bir kaynak sağlar. Katılamayacaksanız, çevrimiçi programı inceleyin ve sunum yapan kişilerle iletişime geçmeyi düşünün. Onlarla “doğru zamanda” iletişime geçebilirsiniz ya da sizi yüksek nitelikli başka birine yönlendirebilirler.

Bu kaynakların güzelliği, şu veya bu şekilde incelediğiniz mühendislik adaylarını daha onlarla görüşmeden önce sağlamalarıdır. Ya şirketinizden biri ya da tanıdığınız biri onları tanıyor ve şiddetle tavsiye ediyor. Veya açık kaynak kodlarını incelediniz ve bundan tam anlamıyla etkilendiniz. Veya blog gönderileri, olgun bir düzeyde teknik uzmanlık ve anlayış (ve ideal olarak bir mizah anlayışı :-) önermektedir). Buradaki kilit nokta, siz iletişime geçtiğinizde adayın zaten “başka bir özgeçmiş” olmaktan önemli ölçüde daha fazlası olmasıdır.

Ek olarak, arzu ettiğiniz aday türleri için yüksek bir beklenti oluşturan iş tanımı şablonlarını (SEO, ön uç web geliştirme ve arka uç web geliştirme için olanlar gibi) kullanmayı düşünün.

Yazılım Geliştiricilerin Teknik Zekasını Değerlendirmek

Teknik yeterliliğin etkili bir şekilde belirlenmesi, belirli bir programlama dili veya teknolojisinin nüanslarının çok ötesine geçer. Bu teknik ayrıntılar kesinlikle göz ardı edilmemelidir, ancak bunlar genellikle değerlendirme sürecinin en önemli unsuru değildir .

Teknik yeterliliğin etkili bir şekilde belirlenmesi, belirli bir programlama dili veya teknolojisinin nüanslarının çok ötesine geçer...
Değerlendirmek için kritik olan, adayın temel teknik gücü ve anlayışı, yaratıcı düşüncesi ve problem çözmesidir.

En iyi geliştiriciler, bir dil spesifikasyonunda veya API belgesinde kolayca bulunabilecekleri belleğe adamakla vakit kaybetmezler. Ayrıca, yeni bir dil, teknoloji veya tasarım modeli öğrenmek, güçlü bir geliştirici için nispeten önemsiz bir alıştırmadır (ve aslında, yeni teknolojilerin tanıtıldığı ve pazar payı kazandığı hızlanan hız göz önüne alındığında, temel bir beceridir). Bu nedenle, değerlendirilmesi kritik olan şey adayın temel teknik gücü ve anlayışı, yaratıcı düşüncesi ve problem çözmesidir.

Bunu başarmanın kanıtlanmış bir yöntemi , dil tarafından sınırlandırılmamış bir programlama zorluğu oluşturmaktır . Adaya bir problem sunun ve ondan kendi seçtikleri dilde bir çözüm kodlamasını isteyin. Tek gereksinim, herhangi bir uç koşulu veya olası hataları ele almak da dahil olmak üzere çözümün eksiksiz ve doğru olması olmalıdır. Unutmayın, buradaki amaç adayın (a) problem çözme yeteneğini, (b) bilgisayar bilimi bilgisini ve (c) kodlama stilini değerlendirmektir. Bu noktada belirli bir programlama dilinde yetenekleri değerlendirmiyorsunuz. (Bu yaklaşımın ek bir yararı da, görüşmecinin adayın kodlama yaptığı dilde uzman olmasını gerektirmemesidir.)

Mülakat sürecinize dahil etmek için bu tür programlama zorluklarını seçebileceğiniz çok sayıda çevrimiçi kaynak mevcuttur. Algoritmalara (belirli bir programlama dili bilgisi yerine) odaklananlar, bir adayın bilgisayar bilimi temelinin ve problem çözme yeteneklerinin değerlendirilmesini kolaylaştırır. Bazı dikkate değer örnekler arasında hackerrank.com, projecteuler.net ve beatmycode.com sayılabilir. Ancak, testleri yönetmek için bu siteleri kullanmanız gerekmediğini unutmayın; bunun yerine, bunları, zorlukları seçmek için kaynaklar olarak kullanabilir ve ardından yüz yüze görüşme sırasında (bir beyaz tahta üzerinde, vb.) adayın bir çözüm koduna sahip olmasını sağlayabilirsiniz.

Bununla birlikte, çevrimiçi test, görüşme sürecinizin değerli bir ek bileşeni olabilir . Ancak çevrimiçi test hizmetlerini kullanırken, adayın çözümlerinin özelliklerinden ziyade site tarafından oluşturulan puanlarına çok fazla odaklanma riskinden kaçınmak önemlidir. Birincisi, test hizmeti tarafından kullanılan değerlendirme ölçütlerini kabul etmeyebilirsiniz. Ayrıca, bir çözümün özellikle akıllı veya zarif olduğunu düşündüğünüz ve otomatik değerlendirme sürecinin tamamen görmezden gelebileceği yönleri olabilir.

Çevrimiçi test hizmetlerini kullanırken, adayın çözümlerinin özelliklerinden ziyade site tarafından oluşturulan puanlarına çok fazla odaklanma riskinden kaçınmak önemlidir.

Çevrimiçi test hizmetleri tarafından sağlanan derecelendirmelerde "yanlış pozitif" veya "yanlış negatif" potansiyeli de vardır. Bir yandan, yanlış pozitifler, niteliksiz adaylarla görüşme yapmak için zaman ve kaynak israfına neden olabilirken, yanlış negatifler, dikkate alınmaya çok değer olan adayları diskalifiye edebilir. Uzun vadede, ikincisinin daha ciddi sonuçları vardır ve bu nedenle dikkatle izlenmesi gereken bir şeydir.

Genel olarak, şahsen uygulanan testler, aldatma potansiyelini azalttığı için, çevrimiçi olarak uygulananlardan daha güvenilirdir. Ayrıca, yüz yüze test, bir yazılım mühendisi adayının baskı altında nasıl çalıştığını gözlemleme fırsatı sunar. Bununla birlikte, çevrimiçi test hizmetlerinin kullanımı, burada savunulan ve hileli veya yetersiz nitelikli adayları ayıklamaya yardımcı olacak diğer teknikleri içeren daha kapsamlı tarama sürecinin etkili bir bileşeni olabilir.

Çevrimiçi geliştirme testleri, teknik becerileri ortalamanın çok altında olan adayların şaşırtıcı derecede yüksek yüzdesini ortadan kaldırmak için değerli bir ön filtre işlevi görebilir. İlginç bir şekilde, bu tür adayların çoğu, güven eksikliği nedeniyle sınavlara girmeye bile çalışmadan süreci terk ediyor. Bununla birlikte, Dunning-Kruger etkisinin kanıtladığı gibi, güven her zaman en iyi tutum barometresi değildir.

Teknik zekayı değerlendirmek için son derece değerli bir başka teknik de adaydan GitHub ve SourceForge gibi sitelerde yazdıkları veya en azından katkıda bulundukları açık kaynaklı projelerin bir listesini vermesini istemektir (eğer yalnızca katkıda bulunanlarsa, onlardan size kodun hangi kısımlarını kişisel olarak yazdıklarını belirtin). Ardından, kodlarını gözden geçirerek, onlara belirli tasarım kararları, kodlama stilleri, kullanılan kalıplar vb. hakkında sorular sormaya hazır olarak görüşmeye gelebilirsiniz. Böyle bir tartışma, adayı bir dilin teknik ayrıntıları hakkında basitçe test etmekten çok daha değerli olabilir.

Dilden bahsetmişken…

Seçkin azınlığın üyeleri sadece teknolojik açıdan bilgili değiller, hem sözlü hem de yazılı olarak açık, etkili ve özlü bir şekilde iletişim kuran mükemmel yazılım geliştirme profesyonelleridir.

İster yüz yüze ister telefonda olsun, sözlü iletişim becerilerinin bir görüşme sırasında değerlendirilmesi kolaydır. Sözel beceriler, kullanıcı temasını içermeyen belirli “arka oda” teknik rollerinde kuşkusuz daha az kritik olsa da, yine de etkili ekip etkileşimlerini ve fikir alışverişini en üst düzeye çıkarmak için yine de önemlidir.

Seçkin azınlığın üyeleri, hem sözlü hem de yazılı olarak açık, etkili ve özlü bir şekilde iletişim kuran mükemmel profesyonellerdir.

Yazılı iletişim becerileri en iyi şekilde adaydan yazılı örnekler sunması istenerek değerlendirilebilir. Teknik yazı örnekleri, yalnızca yazma becerilerini değil, aynı zamanda teknik netliği de gösterdikleri için şiddetle tercih edilir. Bu örnekleri görüşmeden önce talep etmek özellikle faydalı olabilir. Bir kere, bu onların yazılarını önceden inceleme ve analiz etme fırsatı sağlar, böylece röportaja hazırlanarak yazılarını tartışıp eleştirmek için gelebilirsin. Ek olarak, bazı teknik adaylar, kendi içinde değerli bir filtre işlevi görebilecek olan örneklerin yazılması talebiyle “ertelenecektir”.

Ahlaki İkilem

Oğluna ahlakı öğretmek isteyen bir baba hakkında eski bir fıkra vardır. Baba, oğluna kendisinin ve ortağının kuru temizleme işi yaptığını söyler. Bir gün, der baba, bir müşteri kuru temizlemesini almak için mağazamıza gelir. Müşteri ayrılmak için arkasını döndüğünde, ona fazladan 10 dolar ödediğini fark ettim. Tamam, işte etik geliyor… Ortağıma söyler miyim, söylemez miyim?!

Buna karşılık, gerçek etik ikilemler - ahlaki ikilemler - genellikle bulanık ve karmaşık olabilir ve kendilerini kesinlikle iş hayatında gösterirler. En güçlü yazılım geliştiricisi, uygun şekilde kalibre edilmiş bir ahlaki pusulaya sahip değilse, bir projede anlatılmamış hasara yol açabilir. Bir adayın bu boyutunu değerlendirmek bu nedenle kritik öneme sahiptir.

En güçlü yazılım geliştiricisi, uygun şekilde kalibre edilmiş bir ahlaki pusulaya sahip değilse, bir projede anlatılmamış hasara yol açabilir.

Bunu başarmak için oldukça etkili bir teknik , adaya varsayımsal bir ahlaki ikilem sunmak ve bu durumda ne yapacaklarını sormaktır. Bunun etkili olması için, ikilemin açık bir cevabı olmaması önemlidir. İdeal olarak, olası herhangi bir yanıt kusurlu ve biraz sorunlu olmalıdır. Adayın böyle bir soruya verdiği cevap, nasıl düşündükleri, etik standartları ve öncelikleri hakkında muazzam bir fikir verebilir.

İşte bir örnek:

Çalıştığınız şirket, başka bir şirket tarafından bir projede çalışmak üzere işe alındı. Proje, belirli bir alt yüklenicinin kullanılmasını gerektiriyor. Daha önce o taşeron için çalıştınız ve bu nedenle ilk elden onların saatlerini doldurduklarını ve müşterilerinin zamanları için fazla ücret aldıklarını biliyorsunuz. Ancak bu projede bunu yaparlarsa, bu maliyetler şirketinizin müşterisine yansıtılacağı için şirketinize zarar vermez. Bunu patronunuza söylediniz ve o, özellikle projedeki taşeron kısmı toplam bütçenin sadece küçük bir kısmını temsil ettiğinden, müşteriye hiçbir şey söylememenizi tavsiye etti. Yine de müşteri için çalışan çok yakın bir arkadaşınız var. Bir gün öğle yemeğinde arkadaşın, eskiden orada çalıştığını bildiği için sana bu taşeron hakkında ne bildiğini soruyor. Nasıl cevap verirsiniz ve ona ne söylersiniz?

Buradaki güzellik, açıkça “doğru” bir cevap olmaması ve durumun, gerçek hayatın ve iş dünyasının ahlaki karmaşıklığını yansıtıyor olmasıdır. Doğru sorulursa, böyle bir "ahlaki ikilem" sorusunun cevabı, yazılım geliştiricileri işe almak için görüşme sürecinin en anlamlı ve değerli kısımlarından biri olabilir.

Seni Tanımak ( Gerçekte sen kimsin?)

Mülakat sürecinin doğasında var olan kusurlardan biri, bir kişiyle gerçekten çalışana kadar onunla çalışmanın nasıl olacağını bilmenin gerçekten hiçbir yolu olmamasıdır. Adayın kişiliği ve mizacı hakkında gerçekçi bir fikir edinmek, başarılı bir işe alım için yine de çok önemlidir.

Teknik seçkinler sadece teknik olarak üstün değiller, aynı zamanda son derece profesyoneller. Bu nedenle, onları aramak, katı bir teknik değerlendirme ile sınırlı değildir.

Teknik seçkinler sadece teknik olarak üstün değiller, aynı zamanda son derece profesyoneller.

Bunu akılda tutarak, bir adayın kişiliğini ve profesyonelliğini değerlendirmek için faydalı olabilecek bazı görüşme teknikleri…

Birincisi, teknik olmayan bir personel (idari asistan gibi) tarafından yapılan bir ön tarama ile görüşme sürecini kasıtlı olarak başlatmayı düşünün . Daha sonra bu personele, teknik olmadıklarını anladıklarında adayın onlara nasıl davrandığını sorabilirsiniz. Aşağılayıcı, sabırsız ve küçümseyici miydiler, yoksa hoş, sabırlı ve saygılı mıydılar? Personelin size ilettikleri gerçekten çok şey anlatabilir. Adayın, kim olduklarına bakılmaksızın başkalarına saygılı davranıp davranmadığını bilmek istersiniz.

Görüşme boyunca, adaya yapıcı geri bildirim sağlamak için fırsatlar arayın. Bunun neden olduğu tepkiyi dikkatlice gözlemleyin. Geribildirim takdir ediliyor mu yoksa aday hiç savunmaya geçiyor gibi mi görünüyor?

Adayın kişiliği hakkında fikir edinmenin bir yolu olarak, bir görüşmenin ilk 5 veya 10 dakikasında teknik olmayan "chit chat" yapın . Aday, bunun gerçek mülakatın sadece bir başlangıcı olduğunu düşünebilir ve bu nedenle “saçlarını dökme” olasılığının daha yüksek olacağını düşünebilir. Böylece, bu süre zarfında kişilikleri hakkında şaşırtıcı bir miktar fark edebilirsiniz. Ve tabii ki, bir mizah anlayışı sergiliyorlarsa, bu her zaman iyiye işarettir. :-)

Mühendisleri işe almak için bu genel tekniklere ek olarak , adayın kişiliğini, özgüvenini, dürüstlüğünü ve profesyonelliğini değerlendirmeye yardımcı olacak bazı örnek sorular aşağıda verilmiştir :

  • Kariyerinize dönüp baktığınızda, kafanızda öne çıkan, karşılaştığınız belirli zor bir durum nedir? Zorluğu ve bununla nasıl başa çıktığınızı ayrıntılı olarak açıklayın. Neyi özellikle iyi idare ettiğinizi düşünüyorsunuz? Tekrar yapma fırsatınız olsaydı neyi farklı yapabilirdiniz?
  • Kariyerinizde yaptığınızı düşündüğünüz en büyük hata nedir?
  • Yazılım geliştirmeyle ilgili en çok neyi seviyorsunuz? En az zevk aldığınız şey nedir?
  • Kendiniz için ideal pozisyonu çizebilseydiniz, bu ne olurdu? Rolünüz ve sorumluluklarınız, şirketin büyüklüğü ve türü, çalışma ortamı vb. açısından nasıl görünürdü?
  • En güçlü yönleriniz nelerdir? Seni işe almakla ne kazanırız?
  • Hiçbirimiz mükemmel değiliz. Kişiliğinizin geliştirmeye çalıştığınız bazı yönleri nelerdir?
  • Mevcut patronunuzu arayıp ona sizi sorsam, bana ne söylerdi?
  • Sizi işe alırken nelere dikkat etmeliyiz?

Toplu olarak, bu soru ve tekniklerin, adayın gerçekte kim olduğuna dair çok daha güçlü ve daha derin bir anlayışı teşvik ettiği kanıtlanmıştır; bu, başarılı bir işe alma kararı vermek için hayati önem taşır.

Duygular Karşılıklı mı?

Yani, bir A+ adayı buldunuz. Çok yetenekli. Pozitif, iyimser kişilik. Mükemmel kültürel uyum. Bu harika! Ancak…

Hala cevaplanması gereken çok önemli bir soru var: Aday, mevcut pozisyonunuzla ve şirketinizde çalışmakla özellikle ne ölçüde ilgileniyor? Bunun cevabı, başarılı bir işe alım sağlamada büyük önem taşımaktadır. Tek taraflı ilişkiler, iş hayatında hayatımızın herhangi bir alanında olduğundan daha iyi sonuç vermez.

Bir kez daha, mülakat süreci bağlamında, bir adayın böyle bir soruyu cevaplarken açık sözlülüğünden şüphe edilmesi gerektiğinden, soruyu doğrudan sormak minimum değerdedir. Aksine, bu, kişinin daha az doğrudan, başka yollarla tespit etmeye çalışması gereken bir şeydir.

Tek taraflı ilişkiler, iş hayatında hayatımızın herhangi bir alanında olduğundan daha iyi sonuç vermez.

Yeni başlayanlar için, adayın en başından size yaklaşma şekli oldukça güvenilir bir ilgi göstergesidir. Aday, şirketinizle neden özellikle ilgilendiğine ve mevcut fırsata ilişkin ikna edici, ikna edici bir açıklama sunuyor mu? Eğer öyleyse, bu sadece gerçek ilgiyi değil, aynı zamanda bir profesyonel olgunluk ve gelişmişlik seviyesini de gösterir. Böyle bir aday, sizinle iletişim kurmadan önce (sadece “özgeçmişlerini kasabada avlamak” yerine) şirketiniz ve fırsat hakkında en azından bir düzeyde önceden araştırma yapmıştır.

Geliştirici işe alım sürecine şirket ve ürünleri veya hizmetleri hakkında ödevlerini yaparak giren adaylar, hem ilgilerinin hem de anlayışlarının yararlı bir göstergesidir. Görüşmeyi yapan kişi hakkında önceden araştırma yapacak kadar ileri giden adaylar (örneğin biyografisini, LinkedIn profilini, blog gönderilerini vb. okumak) özellikle dikkate değerdir. Daha sofistike adaylar, görüşme sırasında bu bilgileri ifşa etmeye özen göstereceklerdir. Diğerleri için, “Şirketimiz hakkında ne biliyorsunuz?” gibi basit, açık uçlu sorular. ve “Şirketimiz ve bu pozisyon hakkında sizi özellikle ilgilendiren nedir?” gerçekten çok çarpıcı tepkiler ortaya çıkarabilir.

Son olarak, gerçekten ilgilenen bir aday muhtemelen görüşme süreci boyunca sorular soracaktır. Bununla birlikte, adayın herhangi bir sorusu olup olmadığını sorarak görüşmeyi kapatmak her zaman iyi bir fikirdir. Herhangi bir sorunun olmaması, aksi takdirde A+ adayı olarak kabul edilecek biriyle bile kırmızı bayrak olabilir.

Sarmak

Burada açıklanan teknikler, sektördeki en iyi yazılım geliştiricilerini bulmak ve işe almak için değerli bir temel süreç olarak hizmet edebilir. Yine de etkili işe almanın bir varış noktası değil, bir yolculuk olduğunu hatırlamak önemlidir. Statik bir süreç ölü bir süreç olmaya mahkum olduğundan, süreçleri sürekli olarak yeniden değerlendirmeli ve ince ayar yapmalıdır.

Etkili işe alma bir varış noktası değil, bir yolculuktur.

Her şirketin yolculuğu, kendi kültürüne ve önceliklerine göre farklı olacaktır. Kuruluşunuz için doğru olan yolu bulun ve bu yolda ilerleyin. Başarılarınız da olacak, başarısızlıklarınız da olacak ama bunlardan ders çıkardığınız sürece doğru yolda olduğunuzdan emin olabilirsiniz.