it-swarm.dev

İyi bir programcı nasıl tanınır?

Firmamız yeni programcılar arıyor. Ve işte sorun geliyor - röportajda gerçekten harika görünen, ihtiyacınız olan teknolojiyi biliyor gibi görünen ve iyi bir iş geçmişine sahip olan birçok geliştirici var, ancak iki ay çalıştıktan sonra, çalışamayacaklarını öğreniyorsunuz. bir takım, bazı kodlar yazmak çok uzun zaman alır ve üstelik sonuç olması gerektiği kadar iyi değildir.

Peki, herhangi bir resmi test kullanıyor musunuz (var mı?)? İyi bir programcıyı ve iyi bir kişiyi nasıl tanırsınız? Gelecekteki sorunları ortaya çıkarabilecek basit 'iyi' sorular var mı? ... ya da sadece kişi hakkındaki 'hisleriniz' (yani, esas olarak deneyiminiz) ve onu denemekle mi ilgili?

Düzenleme: Manoj'ın cevabına göre, burada iş görüşmesinde kodlama göreviyle ilgili sorudur.

133
gius

İlgilendikleri şey hakkında konuşmalarını sağlayın. Programlama hakkında gerçekten tutkulu olan ancak kod yazamayan bir geliştiriciyle henüz tanışmadım. Elbette var olabilirler - ve röportajınız da yetkinliği kontrol etmelidir - ancak tutku tecrübemde iyi bir göstergedir. (Bunun, buzzwords açısından "konuşmayı konuşabilmek" ile aynı olmadığını unutmayın.)

En sevdikleri dil veya platform hakkında sevmedikleri şeyleri sorun. Bir şeyi nasıl düzeltirlerdi? Bir sonraki versiyonda ne görmek istiyorlar? Hobi projeleri var mı? Bir blogları varsa, okuyun. Genel çevrimiçi varlıklarını kontrol edin.

157
Jon Skeet

İyi insanları işe almak zor .

Daha iyi olmak benim için bazı gerçek hatalar aldı. İlk birkaç kez sonra bağırsak sisteminize çok daha fazla güvenmeye başlarsınız ve pişman olursunuz.

Steve Yegge'nin telefon ekranı soruları konusuna büyük saygı duyuyorum ve bunu insanlarla başarılı bir şekilde röportaj yapmak için temel olarak kullandım.
Ayrıca okuduktan sonra insanlarla röportaj yaparken daha iyi olduğumu düşünüyorum Joel'in gerilla röportaj rehberi (şimdi 3.0 sürümünde, bu web ve her şeyin sürümünün önünde, sadece iyi ol).

20/11/2008 tarihinden itibaren) --- (Mülakat ile etiketlenmiş Yazılım Mühendisliği Stackexchange ve bazı soruları çok alakalı görünüyor, bu yüzden bunları kontrol edin.

84
Hamish Smith

Bazı fikirler:

  • Farklı açılardan birkaç açık uçlu soru sorun:

    • Bazı kodları inceleyin. Tanımlanan nedir? Teknik hatalar, stil tutarsızlıkları, yorumlar, algoritmalar, sürdürülebilirlik, vb ...
    • Bazı kodlar yazın. İşlem, kurşun geçirmezlik, okunabilirlik vb. Arayın.
    • Küçük bir sistem için üst düzey bir tasarım oluşturun. Sorunun, yaklaşımın, iletişimin, bütünlüğün, detayın anlaşılmasını arayın.
    • Yazılım geliştirme sürecini açıklayın. Tasarım, işbirliği, inceleme, test, iyi/kötü alışkanlıklar ve genel deneyim arayın.
  • Bir şey seçin - her şey - aday iyi bildiğini iddia ediyor. Basit bir soru sorun ve cevaba dayanarak biraz daha ayrıntılı bir soru sorun ve adayın bilgisinin sınırına ulaşıncaya kadar "kazmaya" devam edin. Bu size aşağıdakiler hakkında bir fikir verir:

    • Dürüstlük: iddia edildiği kadar biliyor mu?
    • Bilgi derinliği: Bir şeyleri ne kadar iyi öğreniyor?
    • İletişim: size tanıdık olmayan bir şeyi ne kadar iyi açıklar? Düşünce süreci mantıklı mı?
    • Stresli durumlara tepki: cevaplamak için ne kadar çalışıyor? Sahte yapıyor mu? Kaçınılmaz "Bilmiyorum" kolay mı zor mu?
  • Adayın önceki durumlardaki çeşitli durumlarla nasıl başa çıktığını sorun: takım çalışması, gecikmiş projeler, hata ayıklama, vb. . Cevaplar olumlu mu olumsuz mu? Tutkulu? Akıllı? Kibirli?

En iyi adayları hevesli, tecrübeli, kendinden emin ama kibar ve en önemlisi şimdiki buluyorum. İçeride biri olduğunu bilmelisin. :-)

47
Adam Liss

İyi bir programcıyı tanımak için iyi bir programcı olmalısınız . Bu, röportajda söylenen ve yapılan şeyleri görmek için programlamayı çok iyi bilmeniz ve hangi soruların sorulacağını bilmeniz gerektiği anlamına gelir.

Röportajda adaylara yanlış cevap verildiğini gördüm, ancak açıklamaları konuyu bildiğini gösterdi (ve bu nedenle internette arayarak doğru cevabı kolayca alabilirler). Bunu görmek için, çok iyi soru sorduğunuz konuyu bilmelisiniz.

Başka bir şey, kolayca googled olabilecek ayrıntılarla ilgili sorulardan kaçınmaktır. Bu soru, yalnızca aradığınız bilgi ve anlayışa sahipse değil, adayın bir şeyleri hatırlamak için ne kadar iyi olduğunu gösterir.

Benim tavsiyem mülakatlara yardımcı olmak için çok fazla programlama bilen ve iyi insan becerisine sahip birinden yardım almak.

Düzenleme: Ben de röportajlar hakkında bir yorum yazdım burada .

39
Eigir

Programlama yeteneğinin her şey olmadığını unutmayın. Dünyanın en iyi programcısı sizin için çalışıyor olabilir, ancak diğer insanlarla çalışmaktan nefret ederlerse onları çok kullanışlı bulmazsınız.

Bir programcı kişiliği listede, çoğu işveren sıralamasında göründüğünden daha yüksek olmalıdır. Şu anki işyerimde, doğru kişiyi işe alma konusunda çok dikkatli davranıyorlar.

İnsanlar genellikle daha iyi programcılar olmayı öğrenebilir, insanlar genellikle daha iyi insanlar olmayı öğrenemezler.

24
Doctor Jones

Onları kodlayın. Diyelim ki 4 veya 5 saat içinde çözülebilecek bir sorun verin ve kodu belgeleme, kodlama stili, kodlamaya başlamadan önce çözümü nasıl planladığı vb. Açısından inceleyin. Sorunu gerçekten çözmesi gerekmez. Jon Skeet'in de belirttiği gibi, programlama, seçim dilleri ve bunun gibi şeyler hakkında konuşmasını sağlayın. İyi bir programcıda tutkuyu yeniden düzenleyebilirsiniz. Programla ilgili kaç siteyi takip ettiklerini sorun - stackoverflow. Als'ı takip ettikleri bloglar iyi bir gösterge olabilir.

16
Manoj

Tutku cevabını seviyorum. Aslında çok iyi olabilmek için birlikte çalıştığınız şey için tutkulu olmanız gerektiğine inanıyorum.

İyi bir programcı işin yanında yan tarafta programlar (en azından arada bir). Programlama problemlerini çözmeyi sever. Ve evde özel bir ihtiyacı çözen bir program bulamadığında, tipik olarak onu kendi başına çözmeye çalışacaktır.

Ancak birkaç programcı türü vardır.

  • Belgelemeyi sevenlere sahipsiniz. Şahsen belgelemekten nefret ediyorum. Ancak ne yapıldığını belgelemek önemli olabilir.
  • "Bilgisayar korsanları" var. Karmaşık bir bulmacayı çözme konusunda cehennem olanlar, nerede google için nereye giderseniz, muhtemelen bir çözüm bulamazsınız. İhtiyaç duydukları araçları aldıkları sürece "herhangi bir" sorunu çözebilirler.
  • Pazar programlamak için işe alındığı için kendilerini programcı olmak için eğitenlere sahipsiniz. Bunlar genellikle vasattır çünkü tutkudan yoksundurlar.
  • İletişimde mükemmel olanlara sahipsiniz ve "her şeyi çözebilirler", ancak bir kez iş bulduklarında çözdükleri sorunla ilgili yardım almak için diğer herkese asılırlar.

Eğer aynı zamanda çok iyi belgeleme ve mükemmel iletişim becerileri olan "hacker" bulabilirsiniz, ikramiye isabet inanıyoruz.

Oh, ve son bir şey. Muhtemelen lider hırsları olan bir programcı istemezsiniz, çünkü o sadece programlama başlatmak için kullanacaktır. Bu, er ya da geç bu kaynağı kaybedeceğiniz anlamına gelir.

Bir programcıyı işe alırken soracağım bir soru şudur: "Kendinizi neden bir programcı olarak eğitdiniz?". Orada tereddüt ederse, bu ölü bir hediye olurdu.

Bu benim görüşüm.

16
Wolf5

Bir arkadaşım, işe alma sürecinde ek bir adım attığı bir şirkette çalışıyor: ilk tarama ve mülakattan sonra, bir başvuru sahibi birkaç gün boyunca "işi test etmek" zorunda. Bana, bir adayın gereken her beceri ve yeteneğe sahip olmasına rağmen, onu işe almadıklarını söyledi çünkü an a çalışmak için iyi bir insan değil.

7
Svante

Sadece iş görüşmesine dayanan bir programcıyı tanımak çok zordur.

Birisinin iyi bir programcı olduğuna karar veren bazı şeyler şunlardır:

  • takım halinde çalışabilme
  • anlaşılabilir ve bakımı kolay olan iyi kodlar yazar
  • yeni teknolojiler hakkında bilgi edinebilir

Yani bir röportajda bulabileceğiniz bazı küçük ipuçlarınız var:

  • Aday bir teknoloji/programlama dili biliyor mu veya birden fazla mı biliyor? Eğer farklı dilleri biliyorsa, yeni şeyler öğreniyor gibi görünüyor ve muhtemelen mevcut tercih ettiği teknoloji/dilin olumsuz yönlerini biliyor. Bu yüzden şirketinizde kullandığınız teknolojinin yanı sıra bilgi isteyin.
  • Halihazırda çalıştığı projeleri, özellikle hobi projelerini ve açık kaynak isteyin. Hobi projeleri size programlamayı sevdiğini ve boş zamanlarında bile yaptığını gösteriyor (ve bu şekilde becerilerini geliştiriyor). Açık kaynaklı bir projede yazdığı kodu arayabilirsiniz. Eğer proje birden fazla kişiyi içeriyorsa, takım becerileri hakkında ipuçları alabilirsiniz. Bir işletim sistemi projesinde daha fazla bilgi edinmek için posta listesi arşivlerini arayabilirsiniz.
6
Mnementh

Röportajda biraz test yapabilirsiniz.

Ancak çoğu zaman çalışma ortamının kendisinde de bir sorun vardır. Şüphesiz, kuruluşunuzda durum böyle olmayabilir, ancak yazılım endüstrisi alanında teknolojik borcun çok büyük hale gelmesi oldukça yaygındır. O zaman yeni insanlar kiraladığınızda, borç yüzünden iyi olup olmadıkları pek yardımcı olmaz. Program kodunuzun okunabilirliğini ve anlaşılabilirliğini en üst düzeye çıkarmak, yeni gelenlerin çalışmaya başlamasına yardımcı olur.

Ayrıca birçok insan işbirliği yapabildikleri şekildedir, ancak bazen işbirliği yapmanın bir yolu yoktur. Örneğin tüm insanlar geliştirici ise, işlerini yapmaları gerekir. Onlar biliyorlar. Ama geliştirme projesini yönlendiren, toplantılar yapan bir mimarım var mı? Normal geliştiriciler toplantılara başlamak için gerekli yetkiye sahip olmadıklarını düşünebilir ve başkalarını ara sıra durdurmanın yol olmadığını düşünebilirler.

Birbiriyle iletişim kurmak nihai hedef olmamalıdır. Ne kadar az iletişim gerekiyorsa, o kadar iyidir, ancak daha az mümkün olduğunda. Mimarınız varsa daha az mümkün olur. Toplam iletişim miktarı iyi seviyede kalabilir, ancak aynı miktarda iletişim için daha fazla sonuç elde edersiniz.

3
Silvercode

önce olağan röportajlarla başlıyorum, önümdeki kişinin bir şeye değip değmeyeceğini görmek ve becerilerini ve bilgisini belirlemek için çok önemli düşünüyorum.

Bundan sonra, Java alanında, özellikle Etkili Java'dan alınan bazı ilkeleri tartışmak gibi, birkaç teknik kullanıyorum.

Bu aşamada, önümde iyi bir programcı olabileceğimi düşündüğümde, ona kod incelemesi için bir parça kod veriyorum. Görmek istediğim, kodun tehlikeli kısımlarını saptayabilmesi, iyileştirmeler hakkında bazı ipuçları verebilmesi, performans konusunda tuzaklar bulabilmesi ve önemli açıklamalar ve "tat-açıklamalar" arasında ayrım yapabilmesidir. Bütün bunlar daha yetkin bir çalışan bulmama yardımcı oluyor.

ama sonunda işe almanın bir tür kumar olduğunu hatırlıyorum ... tahmin etmek çok zor ...

3
baba smith

Bunun ne istediğini cevaplamadığını biliyorum ama izin veren yasalar, her zaman ilk başta (işe bağlı olarak iki hafta veya bir ay) geçici olarak işe almanızı öneririm. Kişi tuzuna değerse, itiraz etmeyecektir, bunun yanı sıra her ikiniz için de bir koruma sağlar (gitmesine izin verebilirsiniz ve sonunda işi sevmiyor ve ayrılıyor olabilir).

2
Vinko Vrsalovic