Yurtdışında çalışmaya karar verdiniz, ufkunuzu genişletmek istiyorsunuz ve dünya standartlarında iyi bir yazılımcı olmaya azmettiniz. Disiplinli ve bilinçli bir çalışmayla bunu başarmanız mümkün.
İşverenin adaylarda aradığı özellikleri iki başlıkta değerlendirebiliriz: Teknik ve davranışsal. İkisi de çok önemli özellikler ve 50/50 diyebiliriz ağırlıklarına. Doğası gereği, teknik kısımda aranan özellikler somut ve nesnel olduğundan, hazırlık süreci hem mülakata girecek kişi için hem de mülakatı yapacak kişi için oldukça net. Bu yanıyla teknik bölüm matematik sınavına, davranışsal bölüm de edebiyat sınavına benziyor diyerek artık detaylara geçelim.
Kendinize bir programlama dili belirleyin ve hazırlıklarınızı hep bu dilde kod yazarak yapın. Problem çözme kısmında sizden yazmanızı isteyecekleri sorular, çözümü bir beyaz tahtaya sığacak ayardadır. Eğer mülakat telefon üzerinden yapılıyorsa, beyaz tahtanın yerini collabedit 3 tarzı bir portal alacaktır; bu durumda ise çözüm bir sayfayı geçmeyecek kadardır. Array, linked list, doubly linked list, queue, stack, priority queue ve tree gibi yapıları adınız soyadınız gibi bellemeniz lazım. Siz çözümünüzü izah ederken, “neden stack kullandın?” veya “burada linked list kullanmanın array kullanmaya göre ne gibi dezavantajları var?” gibi soruları hiç düşünmeden cevaplayabilmelisiniz. Çözümünüzü küçük parçalara (fonksiyonlar, modüller, sınıflar vb.) ayırmayı unutmayın. Her ne kadar bir sayfalık bir kod yazıyor da olsanız, mutlaka makul şekilde ufak birimlere bölün. Büyük problemleri nasıl küçük problemler cinsinden modelleyebildiğinizi ve ne kadar anlaşılabilir kod yazdığınızı karşınızdaki yazılımcıya gösterin!
Tasarım bölümünde, gerçek hayattaki bir ihtiyacı giderecek sistemi tasarlamanız gerekecek. Bol bol soru sormalısınız ki öncelikle problemin ne olduğunu, neyi çözmeye çalıştığınızı iyice anlayın.
Web service, database, partitioning/sharding, cache ve load balancer gibi bileşenlerin ve mefhumların ne olduğunu ve hangi problemi çözdüklerini iyi bilin çünkü size verilen problemde de bunlardan bazılarını kullanmanız gerekecek. Örnek vermek gerekirse, benzinlik yazılımı ihtiyacını bir web service ile çözdünüz diyelim. Benzin fiyatlarını her seferinde bir yerden çeker misiniz yoksa bu bilgiyi cache’leseniz daha mı iyi olur? Diyelim ki çözümünüz çok tutuldu ve Shell sizin çözümü kullanmak istedi, servisinizi nasıl ölçeklersiniz? Diyebilirsiniz ki bir load balancer koyarım öne, hatta her kıtada farklı bir load balancer olur veya veritabanını konuma göre partition’larım gibi. Bu gibi sorulara ve örnek olarak verdiğim cevaplara aşina olun. Mantık yürütmeniz istenecek, burada ezber işe yaramıyor.
Bu kısımda sizin nasıl bir çalışan olduğunuzu anlamaya çalışacaklar. Sorular mühendislik veya yazılım özelinde olmayacaktır. Birkaç misal vermek gerekirse:
Bu soruların tek bir doğru cevabı yok arkadaşlar. Ama yanlış cevabı var :) Mesela, “iş arkadaşımla çatışma yaşadığımda ona küstüm ve o günden beri de konuşmuyoruz” derseniz yanlış bir cevap vermiş olursunuz. Doğru bir cevap örneği olarak da, “X ekibinden Y özelliğini bekliyordum, bu durumu ekip lideriyle konuştum ve istediğimiz tarihe yetişmeyeceğini söyledi. Durumu yöneticime izah ettim ve X ekibine olan bağımlılığımızı kopararak, kalan işlerimizi yapabilmemizi sağlayacağını düşündüğüm taktik bir çözümü arz ettim.” diyebilirsiniz. Dikkat etmeniz gereken belki de en önemli nokta, vereceğiniz cevaplar mutlaka gerçek olsun. Yani uydurma bir hikayeyle hayal ürünü bir cevap vermeyin, müteakip sorularla bir köşeye sıkışabilirsiniz ve sonunda karşınızdaki kişi yalan söylediğinizi anlayabilir. Diğer taraftan, bu tip sorularda mülakat heyecanıyla o an gerçek bir olay aklınıza gelmeyebilir. Bu sebeple, mülakat öncesi hazırlıklarınızda davranışsal sorulara gereken vakti ayırın ve bu tarz birkaç gerçek olayın üzerinden geçerek iyice pekiştirin.
Bu işin sırrı pratik yapmakta. Doğru yöntemlerle ve nokta atışı çalışmalarla başarı ihtimalinizi artırmalısınız. Son olarak, ne kadar çok başvuru yapıp mülakata girerseniz, güzel bir iş sahibi olmaya o kadar yaklaşırsınız. Babam bana sınavlardan önce “stres yapmana gerek yok” derdi :) Hiçbir yardımı dokunmayan, aksiyon alamayacağınız bir tavsiye - sanki stres yapıp yapmamak tercih meselesiymiş gibi. Fakat şunu da unutmamak gerekir, stresi ve heyecanı azaltacak olan en büyük faktörlerden biri iyi hazırlanmaktır. Yeterince hazırsanız, nelerle karşılacağınızı biliyorsanız, bilinmezlik azalacak ve kendinize olan güveniniz artacak. Bunun doğal sonucu olarak da stres ve heyecan kontrol edilebilir seviyelere düşecektir.