IT'de işe alım; Fibonacci, Bitwise...
resim bulunamadiIT sektöründe işe alım zor iş. Çalıştığınız insanlar mühendis veya mühendis titri taşıyan insanlar. Mühendis dediğimiz hayvan, diğer yaşam formlarından farklıklar gösteriyor. Ona "kendinde sevmediğin üç şey söyle <3" gibi klasik IK soruları sorarsanız, onun "samimiyetle" vereceği cevaplar sizin gibi "normal" insanlarla çalışan bir IK'cıyı tatmin etmeyecektir. (bkz: #14687476 #20483284)

Ne zamandır aklımdaydı bu konudaki tecrübelerimi yazmak. Dün Halil ile yaptığımız skype görüşmesinde de "evet yazmalıyım" demiştim. Daha sonra Kadir'in bir tweet'inden sonra da yazmaya karar verdim.

Velhasıl, sektörde geçirdiğim 5 senede, "işe girmeye çalışan" tarafında da, "işe alıma karar veren teknik kişi" tarafında da yer aldım (neden öyle bir tarafta yer aldım, hiç bilmiyorum).

"İyi yazılım mühendisi" alırken, uygulanması tavsiye edilen bazı yöntemler var. Ben, en azından Tükiye şartlarında ve benim uğraştığım, genelde çok fazla optimizasyon gerektirmeyen web uygulaması geliştiren yazılım firmaları çerçevesinde, edindiğim tecrübeleri anlatmaya çalışacağım.

İnsanları bekletmeyin
Çoğu firma, iş görüşmesi için belirlenen saatte orada olsanız bile, sizi orada en az bir yarım saat bekletiyor. Artık "stres altında çalışabilirliğinizi" mi ölçüyor nedir bilemedim ancak bunu yapmayın. Bir kişi görüşmeye gelmişse, saati geldiğinde elinizden geldiğince orada olmaya çalışın. Ona değer verdiğinizi gösterin. Eğer yine de elinizde olmayan bir sebeple bekletmek durumunda kaldıysanız bunu ona iletin.

İnsanların CV'sini okuyun
Gittiğim bazı görüşmelerinde, CV'min, daha önce yaptığım projelerin incelenmediğini anladığımda çok üzülmüştüm. Görüşmeme giren kişi, geçmişimi, daha önce neler yaptığımı incelememiş, github'daki sourceforge'daki kodlarıma bakmamıştı.

Egonuza hakim olun!
Çoğu iş görüşmesine giren teknik eleman, karşısındaki kim olursa olsun, kendini ona karşı ispat etmek için, onun çözemeyeceği bir soru sorar. Ömrü boyunca o projelerde hiç kullanmadığı şunun gibi tricky bir şey sorar.

<?php
function world() {
    echo 
"world";
}

echo 
"hello".world();
echo 
"<br/>";
                                     
echo 
"hello",world();
echo 
"<br/>";


Yukarıdaki kodun çıktısının ne olduğunu bilmeniz beklenir. Bunun için nokta ile virgülün işlenme farkını bilmenizi istemektedir. Bunu uzun süre PHP ile uğraşan insanlar bile bilmeyebilir, zira hayatlarında virgül ile concatinate yapmamıştır. Yapma gereği duymamıştır. Hatta zaten orada virgül ile yapılan concatination'ın "kodun okunabilirliğini azalttığını" savunur.

Veya, MySQL'de tablo oluştururken, field'a verdiğimiz int(11)'deki "11"'in ne olduğunu çoğu programcı bilmez. Zalim teknik sorumlu, bu soruyu sorarak karşısındakini ezmeye çalışır.

Fibnonacci sormayın!
Hiçbir zaman "tail call optimization"a gerek duyulmayacak bir iş olsa bile, projenin hiçbir yerinde recursive bir şeyler yazmaya gerek olmayacak olsa bile, hatta ve hatta sadece MySQL'den CRUD işlemleri yapan bir web projesi olsa bile görüşmelerin çoğunda "Fibonacci"yi veya "Mükemmel sayılar"ı implemente etmenizi isterler.

Eğer karşınızdakinin, daha önce web tecrübesi yoksa, üniversiteden yeni mezun bir mühendisse, o konulara ne kadar hakim olduğunu öğrenmek için iyi bir yöntem olabilir. Ancak karşınızdaki bir kaç yıl tecrübeli biri ise, ona Fibonacci sormayın. Sorsanız bile bunu bir "işe alım kriteri" olarak sormayın. Çünkü o kişi fibonacci'yi implemente etmese bile sizin işinizi görecek programlama bilgisine sahip olabilir. O yüzden Fibonacci, "mükemmel sayılar", "hanio tower" gibi problemleri insanlara sorarken, işe alacağınız elemandan beklediğinizin gerçekten bu olup olmadığını bir daha düşünün.

Bitwise seviyesinde optimizasyona ihtiyaç duymayacaksanız, "$a ve $b değişkenin değerini, ek hafıza kullanmadan değiştirin" gibi sorular da sormayın.

Eleman sizin işinizi görecek programlama bilgisine sahipse, üstüne fibonacci, hanoi tower, bitwise, big o falan sorun. Ama bunları bilememesi onun "eksisi" olmasın, bilmesi onun "artısı" olsun. Ve bu artıyı onun maaşına bir şekilde yansıtın.

Gerçek dünya örneği sorun!
Fibonacci'yi mükemmel implemete eden (muhtemelen görüşmeye gelmeden önce google'da aratıp ezberlemiş) birisi, gerçek dünyada karşılaştığınız problemler karşısında apışıp kalabilir. İnsanlara "otur fibonacci yaz" demek yerine "otur, facebook login'li kullanıcı giriş sistemi yaz", "otur alışveriş sepeti yaz" deyin. "MySQL'deki int(11) nedir?" yerine "Left outer join" nedir diye sorun.

Ben, işe alım yapan teknik tarafta görev aldığım çoğu iş yerinde, yöneticilerin kafasını bir şekilde bu yola çektim. İşe başvuranlara, gerçek dünya örneği veriyorduk. İsterlerse bu senaryoyu evde çözmelerini istiyorduk. Genelde zaman sınırı koymuyorduk. "Fibonnacci bilen" vs. "Ödeme sepetini çok güzel kodlamış birisi" arasında genelde tercih yapmakta zorlanmıyorduk.

Brain Teasers sormayın!
"A woman shoots her husband. Then she holds him under water for over 5
minutes. Finally, she hangs him. But 5 minutes later they both go out
together and enjoy a wonderful dinner together. How can this be?"

gibi bir soru sorup, insanların oradaki "shoots"un aslında "fotoğraf çekmek" anlamına da gelmesiyle oluşan "sempatik kafa karışıklığı" sorularıyla insanların zekasını ölçmeye çalışmayın. Özellikle bu tip İngilizce bir metni, bir Türke sorup onun zeka seviyesini ölçmeye hiç çalışmayın.

Projeleri ve kodlarını inceleyin
İşe alım yaparken, insanlardan daha önce yaptığı projeleri ve mümkünse o projelerin kaynak kodlarını isteyin. CV'sinde github'ı, sourceforge'u olan, burada bir sürü projesi olan, açık kaynak yazılımlara yama göndermiş yazılımcılar zaten en sevdiğimiz yazılımcılar (en azından bizim kafadalar). Onların kodlarını inceleyip, eğer yine de eksik bir şey görürseniz, onlara "gerçek dünya örneği" gönderin.

Kod gösteremeyen, proje gösteremeyen "senior developer"lardan uzak durun. "Yeaa ama ben hep gizli veya intranet projelerinde çalıştım" bir nebze olsun kabul edilebilir bir sebep olabilir ancak onlar muhtemelen GoyGoy Oriented Programlama ile "Senior developer" olmuştur. Buna dikkat edin.

"Yazan" insanlarla çalışın!
Blog yazan, tweet yazan, sözlükte yazan, makale yazan insanlarla çalışın. İyi yazan insanlar genelde kendilerini daha iyi ifade eden insanlardır. Kendini daha iyi ifade eden insan, genelde daha iyi, daha anlaşılır, daha "ifade edilebilir" kodlar yazar. Bu yüzden, bir şekilde "yazan" insanları tercih etmeye çalışın.


Bu işi seven insanlarla çalışın!
Yazılımcılık genelde "sevda" işi, yoksa zaten bu iş akıl kârı bir iş değil. Bir yandan da kimine göre "rahat" bir iş. "Sabahtan akşama kadar bilgisayar başında oturarak para kazanıyoruz" sonuçta. Sadece bu rahat(!!!) ve bir nebze iyi maaş(!!!) yüzünden bu mesleği seçmiş bir çok insan var. Onların gerçekten sizinle aynı yolda yürüyebilecek insanlar olduğunu düşünüyorsanız devam edin. Ben şahsen "bu işi seven" insanlarla çalışmayı tercih ederim.

"Peki bu işi seven insanı nasıl tanıyacağız? "

Bu işi seven insan, dışarıda gezmek tozmak varken arada oturur proje geliştirir, github'a koyar. Açık kaynaklı projelere destekte bulunur, çeviri yapar, gider etkinliklerde sunumlar yapar. Zaten onları, eğer sektörü bir şekilde takip ediyorsanız, görmeniz çok zor olmayacaktır.


Şimdilik aklıma gelenler bunlar. Aslında bu yazı, biraz büyüyebilir ve elaman alabilirsek Sonsuzdöngü Blog'un bir yazısı olacaktı ama şimdilik bununla idare edin ;)

Edit: '"Yazan" insanlarla çalışın'ı ekledim

04.Kasım.2012 Pazar :: 15:24:37   86000 kere okundu

Konular
Opera {39}
Müzik {70}
Qt {12}
Ben {122}
Debian {26}
Sinema {24}
php/web {44}
Link {58}
KDE {7}

[Konular]


Takvim
<  Nisan 2019  >
PSÇPCCtPz
1234567
891011121314
15161718192021
22232425262728
2930


Temalar
xmas
yesilozAskerEdition
yellos
yesiloz
uira
yesilozHtml5
darksight
greeny
opera
default
dx

Es Dost
Altan
Tuğrul
Selçuk
Timu
Mehmet
Ünal
Gökhan
Koray Taylan
Yaşar
Özgür
Orhan
Kemali
Ahmet
Emrah
Kıvanç
BilgiFrekans
Bünyamin
Bedava Site

Gez Gör Arpacık
Opera Türkiye
Uira
Ma"Cess"teleri


Projeler
Beedon
sozluQ
qPod
SourPHP
Ekşigator
Ekşigator-qt
Soccer Madness