Kodlama Testlerine Nasıl Hazırlanabilirim?
Teknik Testlere Hazırlık LaunchPad etkinliğimizin özeti niteliğindeki bu blog yazısını sizler için derledik!
İşe alım mülakatlarında verilen kodlama testleri herkesin korkulu rüyası. Teste nasıl hazırlanmalıyım, o kadar kısa sürede çözümü nasıl bulacağım, stresten bildiklerimi de unutuyorum, testleri geçemezsem asla işe giremeyecek miyim gibi sorular bu alanda kariyer yapmak isteyen herkesin gündeminde.
Biz de geçtiğimiz günlerde kurucularımızdan Emre Şarbak ve AR-GE uzmanımız Şamil Özkan’ın katılımıyla bu konuyu masaya yatırdığımız bir YouTube canlı yayını gerçekleştirdik. Elimizden geldiğince kısıtlı sürede hem kendi bildiklerimizi aktarmaya çalıştık hem de sizden gelen soruları yanıtladık. Kaçıranlar ve yeniden izlemek isteyenler programa buradan erişebilir. “O kadar vaktim yok, bana bir özet geçseniz, diyenleri ise aşağıya alalım.
Son yıllarda pek çok şirket işe alım mülakatlarında kodlama testlerine yer veriyor. Peki bu testler neden yapılıyor? Öncelikle kodlama testleri çalışan adayının iş başarısını ölçme amacını güdüyor. Ancak bu sadece size verilen problemi çözüp çözemediğiniz anlamına gelmiyor. Aynı zamanda zaman yönetimini nasıl yaptığınız ya da stresinizi kontrol altına alaıp alamadığınız gibi durumları da değerlendirmeyi hedefliyor.
Yani bir kodlama testi sizin
İyi haber, gerçek hayatta bu testlerde karşılaştığınız kadar karmaşık problemlerle karşılaşmanız düşük bir ihtimal. Çoğunlukla bir takımla birlikte çalışacağınız için de bu testlerde olduğu kadar yalnız olmayacaksınız. Kötü haber, evet, işe girmek için bu testlerde belli bir seviyenin üzerine çıkmalısınız, çünkü bu testler işverenlere başvuruları süzebilmeleri için ölçülebilir veri sağlıyor.
Bir kodlama testini çözme sürecinin üç temel aşaması bulunuyor.
Bu aşamaların da kendi içinde bir sırası var. Birinciyi halletmeden ikinciye geçmek kodlama testi esnasında kendi kendinize çelme takmanız anlamına geliyor. O yüzden sakin ve istikrarlı olmak ve bu aşamaların her birini tamamladıktan sonra bir diğerine geçmek çok önemli.
Strateji geliştirebilme yeteneği sadece yazılımda değil hayatın her alanında size yardımcı olabilecek bir özellik. Şanslısınız ki bu doğuştan gelen yeteneklerden biri değil. Üzerinde çalışarak ve çok okuyarak strateji geliştirme ve plan yapabilme özelliklerinizi geliştirebilirsiniz.
Yapmanız gereken, bir kodlama problemi ile karşılaştığınızda hemen işe girişmek yerine o işi nasıl yapabileceğiniz üzerinde bir adım geri çekilip biraz düşünmek. Probleme nasıl yaklaşmalıyım, bunu daha küçük parçalara nasıl bölerim, en hızlı nasıl çözebilirim, sonuca gitmenin adımları neler gibi soruları sormakla başlamak size zaman kaybettirmeyecek, aksine zaman kazandıracak.
Problem elinize geçti. Şimdi bir kağıt kalem alın ve önce biraz beyin jimnastiği yapın. Bu probleme nasıl yaklaşmalısınız? Bu esnada stratejinizi belirleyin. Bunu bir bulmaca ya da bir puzzle olarak düşünün. Örneğin, önce köşelerdeki parçaları mı yerleştireceksiniz? En küçük eylem adımlarınızı planlayın. Hemen kodlamaya başlamak hata yapma riskinizi artırır ve beklemediğiniz sonuçlar karşısında tıkanma ihtimalinizi artırır. Bu yüzden de size verilen soruya analitik bir gözle yaklaşmak işinizi kolaştıracak ve riski azaltacak.
Bu aşamada kodlama testlerinde başarılı olabilmek için kullanabileceğiniz pek çok kaynak da bulunuyor. Cracking the Coding bunlardan biri. Bu kitaplardan problemleri alıp kağıt üzerinde egzersiz yapmak yapacağınız ilk şey olmalı.
İkinci adım uygulama aşaması. Birinci adımda geliştirmiş olduğunuz çözüm stratejisini ve hazırlamış olduğunuz eylem adımlarını uygulamaya başlayın. Bu testlere hazırlanırken kullanabileceğiniz Hackerrank ve Leetcode gibi yerler var. Bu gibi web sitelerinde kendi kendinize çözmek için kullanabileceğiniz pek çok örnek göreceksiniz. Bunlara çoğu zaman ücretsiz olarak erişebilirsiniz.
Ayrıca bu gibi platformların kendi egzersizlerini çözüp platforma aşina olmak da çok önemli. Çünkü her bir platformun kendine has bir işleyişi oluyor ve bu platformlarda zaman geçirip bu işleyişlere hakim olmak size kodlama testlerinde zaman kazandırıyor. Burada amaç hata riskini minimize etmek.
Geldik en önemli adıma. Tıpkı strateji geliştirme gibi stres yönetimi de hayatta edinmemiz gereken önemli becerilerden. Bunu yapmanın en kolay yolu da bol bol antrenman yapmak. Yani olabildiğince çok problem çözmek ve çok iş başvurusunda bulunmak. Aynı duruma tekrar tekrar maruz kalmak sizi bu durumla daha kolay başa çıkabilir hale getireceği gibi benzer sorular ve zorluklarla daha önce karşılaşmış olmanız da stresinizi ve paniğinizi azaltacak.
Unutmayın, aşırı stres sebebiyle bu sınavlarda başarılı olamamış olmanız sizin başarısız olduğunuz ve asla istediğiniz kariyer hedeflerine ulaşamayacağınız anlamına gelmiyor. Şanssızlıklar ya da aksilikler olabilir, o gün beklenmedik bir olay yaşanmış olabilir, çalışmadığınız ya da tam olarak hakim olmadığınız bir noktadan sorular gelebilir ya da kısıtlı zamanda bir şeyler yapmaya çalışırken bildiklerinizi de unutabilirsiniz. Bunlar tam da insanlık hali denen şeyler. Ama bunların bir kısmını birinci ve ikinci adımları doğru uygulayarak bertaraf edebilirsiniz. Bol bol başvuru yapmak da üzerinizdeki baskıyı bir nebze olsun azaltacaktır.
Örneğin biz stres seviyesi yüksek katılımcılarımızı rahatlatabilmek adına Patika’da Coderbyte testlerimizin süresini uzatmayı planlıyoruz. Bu şekilde en azından zaman baskısını azaltmayı hedefliyoruz. Ancak bu konuda sizin yapabilecekleriniz daha fazla. Sessiz ve dikkatinizin dağılmayacağı bir yere gitmek, bunun sizin başarı seviyenizi belirleyen bir şey olduğu düşüncesinden uzaklaşmak, birinci ve ikinci adımları sırasıyla uygulayıp bu testlere yeterince hazırlanmak stres seviyenizi tahmin edemeyeceğiniz kadar azaltacak.
Temiz kod adeta bir şehir efsanesi. Dilden dile dolaşıyor ancak kimse nasıl yapması gerektiğini bilmiyor. Öncelikle bir kaynak önerelim. Clean Code: A Handbook of Agile Software Craftsmanship bu konuda size yol gösterebilecek çalışmalardan bir tanesi.
Temiz kod, size sunulan problemi kısa, basit ve en anlaşılır biçimde çözmek anlamına geliyor. Kodlama testlerini yapanlar da sizin en efektif çözümü sunabilme becerisine sahip olduğunuzu görmek istiyor. Büyük projeler söz konusu olduğunda temiz kod daha da önemli hale geliyor. Özellikle birden fazla kişinin bir arada çalıştığı projelerde sizin bıraktığınız yerden bir başkasının devam edebilmesi için kodu en anlaşılır haliyle yazmak önemli. Kendinize hep şu soruyu sormanız gerekiyor: Bu kodu nasıl daha anlaşılır hale getirebilirim? Bir de örnek verelim, satırlar süren bir formül düşünün. Sizce bu formülün içinde yedi tane ikinin çarpımını nasıl yazmak daha verimli olur?
Kimsenin a şıkkını seçmediğini düşünerek devam edelim. Bu noktaya tek başına denk gelemiyorsanız bir bilene sormanın da faydası var. “Ben tek başıma çalışıyorum, kimle konuşacağım da soracağım” diyorsanız çözümü de verelim: LaunchPad. Kısa süre önce hayata geçirdiğimiz LaunchPad platformunda hem kafanızı kurcalayan bu gibi soruları eğitmenlere sorabilir hem de ekip çalışması yapmak için kendinize proje partneri bulabilirsiniz.
Kodlama testlerindeki soruların çözümleri internette bu kadar kolay bulunurken kopyala yapıştır ile geçenleri nasıl ayırt ediyorsunuz sorusuyla çok sık karşılaşıyoruz. Bir noktaya kadar kopyala yapıştır yapanlar tespit edilebiliyor ancak mesele bu değil. Kopya çekmek en başta sizinle birlikte yarışanlara haksızlık ve aynı zamanda etik olmayan bir davranış. Ancak kopya çekerek en büyük kötülüğü kendinize yapmış oluyorsunuz. Örneğin biz Patika’daki bootcamp eğitimlerinde eğitimleri kodlama testini geçen kişilerin bilgi seviyelerine göre ayarlıyoruz. Ancak siz bu noktaya kopya çekerek geldiyseniz daha ilk haftadan kopya çekmeden gelenlerden geride kalacaksınız. Aynısını işe alımlardaki kodlama sınavlarında yapmanız durumunda karşınıza çıkan ilk kompleks problemde tökezleyeceksiniz ve bu da kariyeriniz için hoş bir başlangıç olmayacak. En iyisi kopyala yapıştır yerine 10-20 saatinizi ayırıp soruların çözümlerini gerçekten öğrenmeniz. Kazanan daima siz olursunuz.
Programlama öğrenmenin en önemli adımı pratik yapmaksa ikinci önemli adımı araştırmak. Kodlama testlerini rahatlıkla geçmek istiyorsanız en başta bahsettiğimiz Hackerrank ya da Leetcode gibi platformlardaki soruların alternatif çözümlerini araştırmalısınız. Arkadaşlarınıza ya da eğitmenlerinize sormak araştırmanın ilk adımı. Tatmin edici cevaplar alamadıysanız internette sonsuz sayıda kaynaktan size yarayan çözümleri bulamamanız söz konusu bile değil.
Son olarak kodlama testlerinde size verilen soruları çözmeye çalışın. Patika bootcamp’lerinde başvuran adayların neredeyse yarısı hiç kodlama testine başlamadığı için eleniyor. Soruların yalnızca bir kısmını çözen ve ortalama bir puan alan katılımcılar bir anda üst sıralara yükseliyor. Bizim yaptığımız testlerde sorular çoğunlukla kolay ve orta seviye oluyor. Eğer henüz kendinizi büyük şirketlerin kodlama testlerine hazır hissetmiyorsanız Patika challenge’larına katılabilir, kendinizi bootcamp’lerde deneyebilirsiniz. Ne kadar çok başvuru yaparsanız o kadar alışkanlık kazanırsınız. Deneme yanılmanın önemini azımsamayın.
Herkese iyi kodlamalar!