![]() | |||
Joel on Software Joel'den Yazılım Üzerine
| |||
|
Diğer Türkçe "Joel on Software" makaleleri Diğer İngilizce "Joel on Software" makaleleri |
Joel Spolsky Serkan Utku Ozturk tarafından çevrilmiştir 23 Mart 2000, Perşembe Fog Creek Software için doğru kişiyi işe almak son derece önemli bir iştir. İşimizde, üç tip insan vardır. Terazinin bir ucunda, bu işi yapmak için gereken en temel yeteneklere bile sahip olmayan vasıfsız insanlar bulunur. Genellikle, özgeçmişlerini inceleyip, süratle bir kaç soru sorarak bu insanları ortaya çıkarıp, elemek kolaydır. Bir diğer uçta ise, haftasonunda zevk için Palm Pilotuna Assembler'da lisp derleyicisi yazan süper yıldızlar bulunur. Tam ortada ise, bir şeylere katkıda bulunabilme ihtimali olan, çok sayıda "belkiler" vardır. Marifet, süper yıldızlar ile belkiler arasındaki farkı ayırt etmektir, çünkü biz Fog Creek Software'e sadece süper yıldızları almaktayız. Burda, bunu yapmak için gereken bazı yöntemleri bulacaksınız. Herşeyden önce, Fog Creek'te işe alınmak için ilk önemli kriter:
Bu kadar. Aradığımız sadece bu. Bunu ezberle. Her gece yatağa gitmeden önce kendi kendine tekrarla. Amacımız, belirli becerilere sahip birini değil, öğrenme ve anlama yeteneği olan kişiyi işe almak. Kişiyi işe alan belirli beceriler, bir kaç senede teknolojik olarak eskimiş olabilir, her ne olursa olsun, herhangi yeni bir teknolojiyi öğrenebilen kişiyi işe almak, şu anda SQL programlamayı bilen birini işe almaktan daha iyidir. Zeki'yi tanımlamak zordur, ama muhtemel mülakat sorularını inceledikçe bunu ortaya çıkarmanın yollarını göreceğiz. İş Bitiricilik önemlidir. Zeki fakat İş Bitirici olmayan insanlar genellikle doktoraya sahip ve büyük şirketlerde çalışan fakat tamamiyle pratikten yoksun oldukları için kimse tarafından sözleri dinlenmeyen insanlardır. Bir problemin soyut kısmı üzerinde derin derin düşünmeyi, bir şeyi zamanında teslim etmeye tercih ederler. Böyle kişiler teşhis edilebilirler çünkü birbirinden çok farklı iki kavram arasındaki teorik benzerliği ortaya çıkarmaya bayılırlar. Mesela, "Hesap çizelgeleri programlama dillerinin özel bir halidir" diyebilirler, ve sonra bunun üzerine bir hafta uğraşıp, hesap çizelgelerinin programlama dili olarak hesapsal dilbilim özellikleri hakkında heyecan veren, nefis bir makale yazabilirler. Gösterişli, ama kullanışlı değil. İş bitirici ama Zeki olmayanlar anlaşıldığı kadarıyla yaptıkları şey hakkında düşünmediklerinden ahmakça şeyler yaparlar, ve daha sonra birileri arkada bıraktıkları karışıklığı temizlemek zorunda kalır. Bu onları şirket için bir engel yapar, çünkü herhangi bir katkıları olmadığı gibi yardımsever insanların zamanlarını emerler. Bunlar, fonksiyon yazmaktansa etraftan büyük miktarlarda kod kopyalayan insanlardır, çünkü bu işlerini halleder ama akıllıca bir yolla değil. Mülakat için en önemli kural:
Karar Verin Mülakatın sonunda, aday hakkında net bir karar vermeye hazır olun. Bu kararı vermek için yalnızca iki adet seçenek vardır: İşe Alın ya da İşe Almayın. Bilgisayarınızı açın ve hemen bir geribildirimde bulunun. E-postanın konu kısmında adayın adı bulunmalı. E-postanın ilk satırı da İşe Alın ya da İşe Almayın olmalı. Daha sonra, kararınızı desktekleyen yaklaşık iki paragraf yazmalısınız. Olası başka bir cevap yoktur. Asla "Alın ama benim grubuma değil." demeyin. Bu kabadır ve bu adayın sizinle çalışacak kadar zeki olmadığı anlamına gelir, fakat belki de diğer gruptaki kaybedenler için yeteri kadar zekidir. Eğer kendinizi "Alın ama benim grubuma değil." demeye meyilli halde buluyorsanız, bunu mekanik olarak "İşe Almayın"a çevirin ve kendinizi iyi hissedin. Belirli bir işi harika yapan ama diğer gruplarda çok iyi olmayan bir adayınız varsa, bu bir İşe Almayındır. Durum çok sık ve hızlı olarak değişmekte, bu yüzden her yerde başarılı olabilecek insanlara ihtiyacımız var. Eğer bir sebepten dolayı SQL konusunda gerçekten çok çok iyi ama bunun dışındaki herhangi bir konuyu öğrenmekte yeteneksiz bir ahmak bulduysanız, İşe Almayın. Böylelerinin Fog Creek'te bir gelecekleri yok. Asla "Belki, bilemiyorum" demeyin. Eğer bilemiyorsanız, bunun anlamı İşe Almayındır. Bu gerçekten düşündüğünüzden daha kolaydır. Bilemiyor musunuz? Sadece hayır deyin. Benzer olarak, eğer ikilemde kaldıysanız, bunun anlamı İşe Almayındır. Asla "Uygun, işe alabiliriz, sanırım, ama .... konularında bazı kaygılarım var." demeyin. Bu da İşe Almayın demektir. Mülakat ile ilgili akılda tutulması gereken önemli şey şudur: İyi bir adayı reddetmek, kötü bir adayı kabul etmekten çok daha iyidir. Kötü aday, çok para ve emeğe malolour ve diğer insanların zamanlarını hatalarını düzeltmek için harcar. Her neyse, herhangi bir şüpheniz varsa eğer, İşe Almayın. Mülakatı yönetirken çok kişiyi reddediyorsanız, Fog Creek işe alacak kimseyi bulamayacak diye endişelenmeyin. Bu sizin probleminiz değil. Bu işe alım ajansının sorunudur, insan kaynaklarının sorunudur, Joel'in sorunudur ama sizin sorununuz değildir. Kendinize hangisi daha kötüdür diye sormaya devam edin - kokoşlarla dolu berbat bir yazılım şirketi olmamız mı, yoksa küçük ama yüksek kalitede kalmamız mı? Elbette, iyi adayları bulup çıkarmak önemlidir ve herkes bunu misyonunun bir parçası olarak görmeli ve iş bitirici, zeki insanları işe almalıdır. Ama gerçekten biriyle mülakat yaparken, Fog Creek'in yeteri kadar yetenekli adayı varmış gibi yapın. Yetenekli aday bulmak ne kadar zor olursa olsun asla standartlarınızı düşürmeyin. Fakat bu zor kararı nasıl vereceksiniz? Mülakat boyunca kendinize sormaya devam edin sadece: Bu kişi zeki mi? Bu kişi iş bitirici mi? Bunu bilmeniz için, doğru soruları sormak zorundasınız. Sadece zevk için, işte size dünyanın en kötü mülakat sorusu: "Oracle 8i'de varchar ile varchar2 arasındaki fark nedir?" Bu korkunç bir sorudur. İşe yaramaz bir ıvır zıvırın belirli parçasını bilen bir insanla, Fog Creek'in işe almak istediği insan arasında akla gelen hiç bir ilişki yoktur. Farkın ne olduğuna kim aldırır ki? Yaklaşık 15 saniyede anında bulabilirsiniz! Aslında, daha da kötü sorular vardır. Buna ileride tekrar döneceğim. Öyleyse şimdi zevkli kısma geldik: Mülakat soruları. Mülakat sorularımın listesi, Microsoft'taki ilk işimden gelmektedir. Aslında meşhur yüzlerce Microsoft mülakat sorusu mevcuttur. Herkesin gerçekten sevdiği bir takım sorular vardır. Siz de İşe Alma/Almama'ya yardım edecek belirli bir takım sorular ve üslup geliştireceksiniz. İşte size kullanmış olduğum, başarıya ulaşmış bazı teknikler. Mülakattan önce adayın özgeçmişinin üzerinden geçerim ve mülakat planımı bir parça kağıda not alırım. Bu sadece sormak istediğim soruların bir listesidir. İşte bir programcıyla görüşmek için plan:
Mülakattan önce, aday hakkında beni önyargılı düşünmeye itecek herşeyden sakınma konusunda çok çok dikkatliyimdir. Eğer bir kişinin odaya girdiği sırada, sadece MIT'den doktorası var diye zeki olduğunu düşünüyorsanız, bir saat içinde söylediği hiçbir şey baştaki önyargınızı değiştiremez. Eğer ahmak olduğunu düşünüyorsanız, hiçbir şey ilk izleniminizi yıkamaz. Mülakat çok çok narin bir teraziye benzer -- bir insanı bir saatlik bir mülakatı baz alarak yargılamak zordur ve kazananı kaybedeni olmayan bir savaşa benzer. Ama önceden aday hakkında azıcık bir bilginiz varsa, terazinin bir kefesinde büyük bir ağırlık varmış gibi olur, ve mülakat işe yaramaz. Bir keresinde, mülakattan biraz önce, personel alma memuru ofisime geldi, ve "Bu genci seveceksin." dedi. Bu beni çılgına çevirdi. Söylemem gereken, "İyi, eğer onu çok seveceğimden bu kadar eminsen, mülakatla zaman kaybetmektense neden işe almıyorsun?" olmalıydı. Ama genç ve toydum, onunla mülakatı yaptım. Zekice şeyler söylemediğinde bile, kendime "İstisnalar kaideyi bozmaz" dedim. Söylediği herşeyi pembe gözlüklerle baktım. Beş para etmez bir aday olduğu halde İşe Alın sonucuna vardım. Ne oldu biliyor musunuz? Benim dışımda onunla mülakat yapan herkes İşe Almayın dediler. Yani: Personel alma memurlarını dinlemeyin; mülakattan önce kişi hakkında etrafa sorular sormayın; ve asla, diğer mülakatçılarla aday hakkında bağımsız bir karar vermeden konuşmayın. Bu bilimsel bir yöntemdir. Mülakatın Giriş kısmı adayı rahatlatmak içindir. Yaklaşık 30 saniyemi kişiye kim olduğumu ve mülakatın nasıl olacağını anlatmak için harcarım. Herzaman, gerçek sonuçtan çok problemi nasıl çözdüğüyle ilgilendiğimizi söyleyerek adaya güven veririm. Bu arada, mülakat yaparken, masada adayın karşısında oturmadığınıza emin olun. Bu resmi bir engel yaratarak, adayın rahatlamasını engeller. Masayı duvara karşı taşımak ya da masanın diğer ucuna gidip adayla beraber oturmak daha iyidir; bu adayın gevşemesini sağlar. Gerginlikten daha az etkilenileceği için, daha iyi bir mülakatla sonuçlanır. Bölüm2 adayın son çalıştığı proje ile ilgili bir sorudur. Üniversiteli gençlerle mülakatta, eğer varsa, bitirme projeleriyle ilgili ya da aldıkları dersin içinde geçen zevk alarak yaptıkları uzun bir proje hakkında soru sorun. Mesela bazen, "Son dönem aldığınız derslerden en sevdiğiniz hangisiydi? Bilgisayarla ilişkili olması şart değil." diye sorarım. Aslında, bilgisayar dışı bir ders seçtiklerinde genellikle bir hayli mutlu olurum. Bazen ders programlarına baktığınızda, alınması gereken asgari sayıdaki Bilgisayar Bilimleri dersini aldıklarını, ama tüm seçmeli derslerinin müzikle ilgili olduğunu görürsünüz. Sonra, en favori derslerinin Nesneye Dayalı Veritabanları olduğunu söylerler. Evet, doğru. Yağ çekeceklerine, müziği bilgisayardan daha fazla sevdiklerini itiraf etseler daha mutlu olurdum. Tecrübeli adaylarla görüşürken, geçmiş işi ile ilgili konuşabilirsiniz. Bu konuda, sadece bir şeye bakarım: tutku. Kişinin son çalıştığı bir proje bulduğunuzda, şunlar iyiye işarettir:
Listedeki üçüncü madde İmkansız Sorudur. Burası zevklidir. Buradaki düşünce, cevaplaması mümkün olmayan bir soru sorup, sadece onu nasıl çözmeye çalıştığını görmektir. "Seattle'da kaç tane göz uzmanı vardır?" "Washington anıtı kaç ton çeker?" "Los Angeles'ta kaç tane benzin istasyonu vardır?" "New York'ta kaç tane piyano tamircisi vardır?"
Program sorusu olarak, adaylara C ile küçük bir program yazmalarını isterim. İşte, sorabileceğim bazı tipik sorular:
5 satır koddan daha fazla tutan bir problem vermek istemezsiniz; bunun için zamanınız yok. Bunların bir kaç tanesini ayrıntılı olarak inceleyelim. #1: Bir dizgiyi yerinde ters çevirmek. Hayatım boyunca mülakat yaptığım her aday, ilk seferinde bu soruya yanlış cevap vermiştir. İstisnasız hepsi, başka bir tampon bellek ayırıp dizgiyi bu bellekte ters çevirmeye çalıştılar. Sorun, tampon belleği ayıran kim? Tampon belleği boşaltan kim? Bu soruyu onlarca kişiye sorarak, ilginç bir gerçeği keşfettim. C'yi bildiğini sanan çoğu insan, gerçekte bellek ve işaretçilerden anlamıyorlar. Aslında kafa yormuyorlar. Şaşırtıcı olan, bu insanlar programcı olarak çalışıyorlar ve gerçekten de öyleler. Bu soruyla, işte size adayı değerlendirmenin bazı yolları:
#3'te, C'de bit operatörlerini ne kadar iyi öğrendiklerini görebilirsiniz... fakat, bu bir beceridir, doğal bir yetenek değildir, bu yüzden bu konuda onlara yardımcı olabilirsiniz. İlginç olan, adayı bir bayt içindeki tüm açık bitleri sayan bir metod yazarken izlemek, ve daha sonra bunu daha hızlı daha hızlı hale getirmelerini istemektir. Gerçekten zeki olan adaylar, sadece bir kez oluşturmaları gereken bir lookup tablosu(nihayetinde, 256 tane giriş vardır) yaratırlar. İyi adaylarla, farklı bellek/zaman kombinasyonları hakkında gerçekten ilginç muhabbetler edebilirsiniz. Daha da üzerlerine gidin: Başlangıçta lookup tablosu yaratmak için hiç zaman harcamak istemediğinizi söyleyin. Zeki adaylar, bitlerin ilk kullanımda sayıldığı ve lookup tablosuna atılıp, bundan sonraki kullanımlarda sayılmadığı bir önbellek tasarımında bulunabilirler. Gerçekten çok zeki olan adaylar ise bit desenlerinin avantajından yararlanıp, bunların tablonun yaratılmasında kısayol olarak kullanılmasını planlayabilirler. Kod yazan birini gözlemliyorsaniz, işte size yararlı olabilecek bazı teknikler:
Kaçınılmaz olarak, kodda hata bulursunuz. Öyleyse geldik 5. soruya: Bu kod sizi tatmin etti mi? "Tamam, hata nerde o zaman?" diye sormak isteyebilirsiniz. Önemli bir Cehennemden Gelen Açık Uçlu Soru. Tüm programcılar hata yapar, bunda bir yanlışlık yok, sadece bu hataları bulabilmeleri gerekir. Dizgi fonksiyonlarıyla çalışırken, yeni dizginin null ile bittiğini çoğu zaman unuturlar. Hemen her fonksiyonda, Off-By-One hatası yapabilirler. Bazen noktalı virgül koymayı unuturlar. Fonksiyonları 0 uzunluklu dizgiler için yanlış çalışabilir, veya malloc başarısız olursa Genel Koruma Hatası verebilir... Çok nadiren, ilk seferde hatası olmayan bir adaya denk gelebilirsiniz. Böyle durumda, problem daha eğlenceli hale gelir. "Kodda bir hata var." dediğinizde, kodlarını çok dikkatlice incelemelerini, ve kodlarının kusursuz olduğunu nazik bir yolla belirtip belirtmediklerini gözleyebilirsiniz... Genelde, devam etmeden önce adaya yanıtından memnun olup olmadığını sormak iyi bir fikirdir. Bölüm 6: tasarım sorusu. Adaydan bir şeyler tasarlamasını isteyin. Jabe Blumenthal, Excel'in orijinal tasarımcısı, bir ev tasarlamalarını isterdi. Jabe'e göre, hemen beyaz tahtaya gidip ve bir kare cizen adaylara rastlamış. Bir kare! Bunlar acilen İşe Almayınlardandır. Tasarım sorularında, ne ararsınız?
Gelelim #7'ye, Meydan Okuma. Bu eğlencelidir. Mülakat boyunca, adayın mutlak doğru ve tartışılmaz bir şey bulması için uğraşırsınız. Sonra "bir dakika, bir dakika" deyip, iki dakika boyunca şeytanın avukatını oynarsınız. Haklı olduklarına emin olana kadar tartışın.
Kabul etmek gerekir ki, bir mülakatta, iki taraf da aynı güçte değildir. Siz daha güçlü bir konumda bulunduğunuz için adayın sizle tartışmaktan korkma riski vardır. FAKAT, iyi adaylar tartışmada ateşli olma eğilimindedirler, ve bir an için de olsa mülakatta olduklarını unuturlar, sizi ikna edebilmek için ellerinden geleni yaparlar. Bu tip insanlar işe almak istediklerinizdendir. Son olarak, adaya sorusu olup olmadığını sorun. Bazıları, mülakat kitaplarındaki standart yöntemlerde anlatıldığı üzere, zekice bir soru sormalarını beklerler. Kişisel olarak, ne sorduklarına bakmam; o noktada, çoktan kararımı vermiş olurum. Güç olan, adaylar bir günde 5-6 kişiyle görüşmek zorundadırlar, ve 5-6 tane farklı, güzel soru sormak zordur, bu yüzden eğer soruları yoksa, problem değildir. Her zaman ama her zaman, mülakatın sonundaki 5 dakikayı Fog Creek'i pazarlamak için kullanırım. işe almayacak olsanız bile bu çok önemlidir. Gerçekten iyi bir aday bulacak kadar şanslıysanız, Fog Creek'e gelmesi için o noktada yapılabilecek herşeyi yapın. Kötü aday olsalar bile, şirketten iyi bir izlenimle ayrılması için, Fog Creek hakkında heyecan uyandırın. Şu şekilde düşünün: bu insanlar sadece potansiyel çalışan değil, aynı zamanda potansiyel müşteridirler. Bizim işe alma çabamız için birer satıcıdırlar; eğer Fog Creek'in çalışmak için iyi bir yer olduğunu düşünürlerse, arkadaşlarını da başvurmak için cesaretlendirirler. Hıh, size sormaktan kaçınmamız gereken sorular hakkında örnek vereceğim sözümü şimdi hatırladım. Her şeyden evvel, yasadışı sorulardan kaçının. Irk, din, cinsiyet, ulusal köken, yaş, askerlik yapabilme durumu, deneyim, cinsel tercih, veya fiziksel engel konularına ilişkin herşey yasadışıdır. Özgeçmişleri 1990 yılında orduda olduğunu yazıyorsa, mülakatı yumuşatmak için bile olsa, Körfez Savaşında olup olmadıklarını sormayın. Bu yasaya aykırıdır. Eğer özgeçmişleri Haifa'da Technion'da görev aldığını söylüyorsa, İsrailli olup olmadığını sormayın. Bu yasaya aykırıdır. Burda neyin yasal olmadığına dair oldukça iyi bir tartışma bulabilirsiniz. (Sitedeki diğer mülakat soruları çok saçma.) Bir sonraki madde, ayrımcılığa dayanan, biz önem veriyormuşuz gibi görünen, ama aslında çok da önem vermediğimiz sorulardan kaçınmak. Sanırım, buna en iyi örnek birisine çocuğu olup olmadığını ya da evli olup olmadığını sormaktır.Bu, çocuklu insanların işlerine yeteri kadar zaman ayıramayacaklarını ya da gebelik izni alıp kaçacaklarını düşündüğümüz izlenimini uyandırır. Son olarak, 6 eşit kibrit çöpünden birbirinin aynısı 4 tane eşkenar üçgen yapmak gibi muzip sorulardan kaçının. Bu bir "oha!" sorusudur, bu size "zeki/iş bitirici" olduğu konusunda herhangi bir bilgi sağlamaz. Mülakat yapmak bilimden çok bir sanattır, ama eğer Zeki/İş Bitirici prensibini aklınızda tutarsanız iyi durumda sayılırsınız. Eğer fırsatınız olursa, iş arkadaşlarınıza en beğendikleri soruların ne olduğunu sorun, ve ne tür cevaplar aradıklarını öğrenin. Bu Redmond'da Building 16 kafeteryasında öğle yemeklerinin değişmez sohbet konularından biridir. Bu makalenin orijinali İngilizce olarak The Guerrilla Guide to Interviewing başlığıyla yayımlanmıştır. | ||
![]() Joel Spolski, New York şehrinde küçük bir yazılım şirketi olan Fog Creek Software'in kurucusudur. Yale Üniversitesi'nden mezun olmuş, ve programcı ve yönetici olarak Microsoft, Viacom ve Juno'da çalışmıştır. | |||
Bu sayfaların içeriği tek bir kişinin görüşlerini yansıtır.
Her hakkı mahfuzdur. Bu sitenin bütün içeriğinin telif hakkı Joel Spolski'ye aittir. Copyright ©1999-2005