Yazılım Mülakat Süreçleri - Tavsiyeler

Emre Savcı
5 min readJan 20, 2022

Selamlar, bu yazımda yazılım mülakatlarında iki tarafın da iyi bir deneyim elde edebilmesi için belirli bir zaman içerisinde oluşan bazı görüşlerimi sizlerle paylaşacağım.

Öncelikle mülakat sonucu ne olursa olsun yapılan görüşmenin iki tarafa da katkı sağlaması gerektiğini düşünüyorum. Aday, görüşmeden yeni şeyler öğrenerek ayrılabilmeli. Bu şeyler teknik bir konu, süreç, ürün veya yaklaşım olabilir.

Mülakat yapan taraf ise farklı karakterdeki insanları çözümlemeyi, farklı bilgi seviyelerini ölçebilmeyi, konuyu yönlendirebilmeyi, sağlıklı bir iletişim ortamı oluşturmayı öğrenebilmeli.

Bu süreçte taraflara düşen önemli sorumluluklar bulunuyor. Şimdi bu sorumlulukları inceleyeceğimiz konu başlıkları üzerinden geçelim.

Ön Hazırlık

Değinmek istediğim ilk konu mülakat öncesi tarafların birbirleri hakkında bilgi sahibi olmasıdır.

Mülakata gireceğiniz şirket, ekip, proje hakkında bilgi sahibi olmak bir mülakata hazırlanabilmeniz için önemli ip uçları barındırır, neyle karşı karşıya kalacağınızı tahmin edebilirsiniz. Mülakat süresince de yöneltebileceğiniz bazı soruları önceden hazırlayabilmenizi sağlar.

Mülakata girecek aday hakkında bilgi sahibi olmak ise mülakat yapan kişilerce adayın seviyesine ve tecrübesine uygun bir görüşme olmasını, sıkıcı mülakat sorularının atlanıp doğrudan adayın önceki projelerinde aldığı görevler, yaptığı çalışmalar üzerinden hands-on tecrübesinin ölçülebilmesini sağlar.

Bu ön hazırlık mülakatta öz geçmişi veya ekibi anlatmak ile kaybedilecek zamandan da tasarruf edilmesini sağlar.

Problem Çözme Yeteneği

Mülakat yaptığınız adayın salt bilgisini ölçmeye çalışmaktansa problem çözebilme yeteneğini açığa çıkartacak sorular yöneltmek karşınızdaki kişinin kabiliyetlerini görmenizde yardımcı olacaktır. Spesifik bir bilgi, bir kod parçası, bir framework’ün davranışı o an insanın aklına gelmeyebilir, unutulabilir. Bu durum karşınızdaki kişinin bilgisiz olduğu anlamına gelmez.

Mülakata giren arkadaşların ise unutmaması gereken bir şey mülakatta problem çözebilme yeteneklerini göstermeleri gerektiğidir.

Süreçleri Kişiselleştirmemek

Süreci kişiselleştirmekten kasıt nedir? Bir mülakatta hangi süreçler kişiselleştirilebilir?

Mülakata giren adaylar için söylemek gerekirse, sizlere yöneltilen soruların cevap verememeniz için değil hangi konuda ne kadar bilgi sahibi olduğunuzu ölçmek için sorulduğunu düşünmelisiniz. Bu aksi düşünceler mülakatta gerilmenize ve kendinizi köşeye sıkışmış hissetmenize sebep olur.

Mülakat yapan kişilerin ise adaylar üzerinde ego tatmini yapma güdüsü olmamalı. Adayın ne bildiğini anlamaya odaklanmadan, sadece kendi bildiği konu özelinde önceden hazırlanmış cevapları almaya çalışmamalı. Bir üstünlük yarışında olmadığının farkında olunmalı. Burada çok önemli bir etik değer var, şirketiniz o an size hak eden kişiyi hak ettiği pozisyona alabilmeniz için sorumluluk veriyor. Bu sorumluluğu suistimal etmemelisiniz.

Burada mülakat sürecinden bağımsız olarak kişiselleştirilmemesi gereken bir diğer şey ise, herhangi bir konu ile ilgili sorununuzu (örneğin çalışma hayatında sorun yaşadığınız bir kişi) kişiselleştirmeden, sebep sonuç ilişkisi üzerinden anlatmak gerektiğidir. Peki bu nasıl yapılabilir? Diyelim ki size rahatsız olduğunuz bir şey sorulduğunda, “A kişisinden rahatsızım bununla çalışmam o şöyle böyle” demek yerine “x davranışlar sergilenmesi y sonuçlarına sebep oluyor, bu olumsuz sonuçlar çalışanların motivasyonunu/huzurunu bozuyor” şeklinde karşılık vermeniz meseleyi kişiselleştirmediğiniz aksine süreçleri iyileştirme taraflı olduğunuzu gösterir.

Gerçekçi Olmak

Evet bir diğer önemli konu gerçekçi olabilmek. Mülakata giren adayların şirketten, çalışma ortamlarından, çalışacakları ekipten beklentilerini (maaş, yan hak, teknik sorumluluk, kültür) en başta belirlemesi ve aynı şekilde ekibe katabileceklerini de şeffaflıkla belirtebilmesi gerekiyor. Bu hem kendi hem karşı tarafın motivasyonunu korumak açısından önemli bir durum. Hali hazırda yapmadığı şeyleri yapıyormuş gibi göstermek, mevcut ekip dinamiklerini zayıflatacağı için iyi bir izlenim oluşturmayacağının da bilincinde olmalı.

Mülakat yapan tarafın ise adayın beklentilerini karşılayamayacağı şekilde yükseltmemesi gerekiyor. Yukarıdaki görsel de söyleyeceklerimi özetliyor aslında. Her gün farklı teknik challangelar ile uğraşacağını sanarak ekibe katılan bir developer sadece crud işlemler ile gününü geçirdiğinde oldukça hızlı bir şekilde motivasyonunu ve hevesini kaybedecektir.

Tavsiyeler

Evet, buraya kadar genel konu başlıklarının üzerinden geçtik. Şimdi de kısaca birkaç tavsiyeyi sizlerle paylaşmak istiyorum.

Yazılımcılar: Size yöneltilen problemleri çözmeye başlamadan önce, problemin kapsamını öğrenmeye yönelik sorular sorun. Sınırları belirleyin. Sistemi kaç kullanıcı kullanacak Süreç asenkron yönetilebilir mi HA, consistency öncelikleri ne…

Interviewerlar: Adayı mülakatta yalnız bırakmamalısınız. Kaybolduğunu hissettiğiniz an yönlendirici rolü üstlenmelisiniz.

Yazılımcılar: Problemlerin tek bir doğru çözümü yoktur. Farklı yaklaşımlar vardır. Karşı taraf sizden kesin ve net tek bir cevap bekliyormuş düşüncesine kapılmayın. Problemi yorumlayın.

Interviewerlar: Basma kalıp soru cümleleri ile hiçbir bilgiyi ve yeteneği ölçemezsiniz. Ezberci mülakat soruları ve teknikleri kullanmayın.

Yazılımcılar: Bilmediğiniz bir soru ile karşılaştığınızda, bilmiyorum diyip kestirip atmayın. Çözüm üretebilmeniz için, en kötü ihtimalle neyi bilmediğinizi öğrenmek için karşı tarafa sorular yönelterek yön bulmaya çalışın. Aksi taktirde çözüm üretebilme yeteneğiniz ölçülemez.

Interviewerlar: Adaylar sizin sorguladığınız mahkumlar değil. İş yerinizde spesifik olarak öğrendiğiniz bir konuyu, toolu, kodu ezbere bilmek zorunda değiller. Bunun farkında olarak o konu özelinde yaklaşımını ölçün. Salt bilgiyi ölçmeye çalışmayın.

Yazılımcılar: Design patterns, microservices, data structures, ddd, unit testing, architecture, caching, scaling, cap, message brokers, CI/CD gibi konular hakkında pratik yapın. Bu konular çoğu mülakatta karşınıza çıkacaktır.

Interviewerlar: Adayın bilemediği veya doğru yanıtlayamadığı bir soruda mutlaka adayı bilgilendirin. Mülakattan bir şeyler öğrenerek ayrılan bir adayın gözünde hem siz hem şirketiniz değer kazanacaktır. Böylelikle mülakat olumsuz olsa da iki taraf için de bir kayıp olmayacaktır

Yazılımcılar: Çalışacağınız ekip, yapacağınız iş, kullanılan teknolojiler, geliştirilen projeler, iş yapış şekli, şirket kültürü, incident yönetimi.. Aklınıza gelen her konuda soru sorun. Mutlu ve üretken bir ortamda çalışmazsanız ne kendinize ne şirkete faydalı olamazsınız.

Interviewerlar: Ekibinize doğru kişiyi alabilmek için uğraştığınız problemler üzerinden sorular sormak aynı bakış açısında ve ilgi alanına sahip kişileri almanızı sağlar. Ütopik sorular sorup aldığınız kişi “sadece crud” yazarsa hayal kırıklığına uğrar.

Yazılımcılar: Gerçekten bilgi sahibi olmadığınız konuda öyleymiş gibi gözükmeye çalışmayın. Çok kolay bir şekilde anlaşılıyor ve kesinlikle güzel bir intiba bırakmıyor.

Interviewerlar: Çalışma arkadaşlarınızı mevcut ekip kültürüne uygun kişiler arasından seçin. Birisi sadece teknik bilgisi olduğu için ekibe alınmaz, aynı şekilde teknik bilgisini yetersiz bulduğunuz için elenmez. Teknik bilgi sonradan kazanılabilir.

Yazılımcılar: Eski şirketinizi, çalışma arkadaşlarınızı kötülemeyin. Bir sorun yaşadıysanız olayları kişiselleştirmeden “sorunlu davranış” üzerinde durarak anlatın.

Interviewerlar: Adayın geçmişte yaptığı projeler, ilgi alanları hakkında önden bilgi sahibi olun. İyi projelerde çalışmış tecrübeli bir adaya SOLID nedir, Factory Pattern nedir gibi komik sorular yöneltmeyin.

Yazılımcılar: Hangi konuda ne kadar tecrübeli olduğunuzu ölçebilmek için sorular sorulacak. Kendinizi köşeye sıkıştırılmış, sorgulanıyor gibi hissetmeyin. Sürecin bir parçası olduğunu siz de karşı sorular sorabileceğinizi ve her şeyi bilmek zorunda olmadığınızı unutmayın.

--

--

Emre Savcı

Sr. Software Engineer @Trendyol & Couchbase Ambassador | Interested in Go, Kubernetes, Istio, CNCF, Scalability. Open Source Contributor.