İyi bir programlayıcı nasıl tanınır? [kapalı]


131

Şirketimiz yeni programcılar arıyor. Ve işte sorun geliyor - röportajda gerçekten harika görünen, ihtiyaç duyduğunuz teknolojiyi biliyor gibi görünen ve iyi bir iş geçmişine sahip birçok geliştirici var, ancak iki aylık çalışmadan sonra, çalışamadıklarını anlıyorsunuz bir takım, bazı kodlar yazmak çok uzun zaman alıyor ve üstelik sonuç olması gerektiği kadar iyi değil.

Herhangi bir resmi test kullanıyor musunuz (var mı?)? İyi bir programcı - ve iyi bir insanı nasıl tanırsınız? Gelecekteki problemleri ortaya çıkarabilecek basit herhangi bir 'iyi' soru var mı? ... ya da sadece kişiyi (yani esas olarak deneyimlerinizi) ve onu denemeyi 'hissetmek' ile mi ilgili?

Düzenleme: Manoj cevabı göre, burada iş görüşmesinde kodlama görevle ilgili bir soru.


3
<joke> İyi bir programlayıcıyı tanımak için, her zaman bir Programcı Kıyafet Kodunu bir bahçe çubuğu olarak kullanırım. ;-) </joke>
Galwegian 20:08

7
Ben yaklaşık 6 ', 185 lbs., Traş baş ve bir keçi sakalıyım. Beyaz bir termal üzerinde Chuck Taylors ve mavi bir tişört giyiyorum. Lütfen bana yavaşça oy verin - soruyu cevapladım. :)
MusiGenesis 20:08

6

1
İşte konunun başka bir görüntüsü - Bir programcıyla nasıl röportaj yapılır

2
Bu soru, 2008 yılında sorulduğunda bu site için çok uygun oldu. Beş yıl. Beş yıl sonra, Prog.SE kopya olan SO2'ye döndü.
Warren P,

Yanıtlar:


157

İlgi duydukları şey hakkında konuşmalarını sağlayın. Programlama hakkında konuşurken gerçekten tutkulu olan ancak kodlama yapamayan bir geliştiriciyle tanışmadım. Elbette var olabilirler - ve görüşmeniz de yetkinliği kontrol etmeli - ama tutku benim deneyimim için iyi bir göstergedir. (Bunun, buzzwords açısından "konuşmayı konuşma" ile aynı olmadığını unutmayın.)

Onlara favori dilleri veya platformları hakkında neleri beğenmediklerini sorun. Bir şeyleri nasıl düzeltirler? Bir sonraki sürümde ne görmek isterler? Hobi projeleri var mı? Blogları varsa, oku. Genel çevrimiçi varlığını kontrol et.


3
Harika fikirler - özellikle hobi projeleri ve en sevdikleri dil ile ilgili sorunlar bana gerçekten iyi geliyor. Programlama ile olan ilişkileri hakkında daha fazla bilgi vermelidir. Bir blog da iyi bir fikirdir. Ne yazık ki, genellikle blogları yok :-(. Teşekkür ederim ...

25
Tutkunun mutlaka profesyonellik veya takım çalışmasına dönüşmesi gerekmez. Kodlama gerektiren şeyleri değil, neyin soğuk / eğlenceli olduğunu kodlamak isteyebilirler.

22
@Preston: Teoride kesinlikle doğru olsa da, homurdanmaktan mutlu olmayan tutkulu birisiyle tanışmadım. Bu tür şeylerin üstünde olduklarını düşünen prima donna kodlayıcılarla tanıştım, ama genellikle tutkulu değiller. Profesyonellik testi yine de oldukça zor ...
Jon Skeet

36
ONLARIN BADGE COUNT GÖR

83

İyi insanları işe almak zordur .

Bu konuda daha iyi olabilmem için bazı gerçek hatalar aldı. İlk birkaç defa güvenmediğiniz ve pişman olduğunuzda bağırsak sisteminize daha fazla güvenmeye başlarsınız.

Steve Yegge'nin telefon ekranı sorularına büyük saygı duyuyorum ve bunu başarı ile insanlarla mülakat yapmak için temel olarak kullandım.
Ayrıca Joel'in gerilla röportajına yönelik kılavuzunu okuduktan sonra insanlarla röportaj yapmakta daha iyi olduğumu düşünüyorum (şimdi sürüm 3.0'da, web için olan versiyonun önünde ve her şey, sadece iyi olmalı).

Ayrıca röportaj ile etiketlenmiş Software Engineering Stackexchange'te 57 başka soru (20/11/2008 itibariyle) var ve bazıları çok ilgili görünüyor, bu yüzden bunları kontrol edin.


2
İyi insanları işe almak NP-zordur. :)
nihai neden

7
Telefon ekranı soru meselesi iyi başlar, ancak daha sonra soruların daha saçma hale gelir. Bence iyi bir programcının 2^16gönülden bilmesi gerektiğini düşünmüyorum . Ve altındaki hızlı parça sürümü sadece zayıf bir parodi.
Peter

SO bağlantıları bozuk görünüyor (sonuç yok veya 404).
Stijn Geukens,

@StijnGeukens, bu etiketin Software Engineering'e taşındığı anlaşılıyor. Bağlantıyı güncelledim.
Hamish Smith

47

Bazı fikirler:

  • Birkaç farklı açıdan birkaç açık uçlu soru sorun:

    • Bazı kodu gözden geçirin. Neler belirlendi? Teknik hatalar, tarz tutarsızlıkları, yorumlar, algoritmalar, bakım kolaylığı, vb ...
    • Biraz kod yaz. Proses, kurşun geçirmezlik, okunabilirlik vb.
    • Küçük bir sistem için üst düzey bir tasarım yaratın. Sorunun, yaklaşımın, iletişimin, bütünlüğün, ayrıntıların anlaşılmasını sağlayı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ç - bir şey - adayın iyi bildiğini iddia ediyor. Basit bir soru sorun ve sonra cevabı temel alarak, biraz daha ayrıntılı bir soru sorun ve adayın bilgi sınırına ulaşana kadar "kazmaya" devam edin. Bu size bir fikir verir:

    • Dürüstlük: iddia edildiği kadarını biliyor mu?
    • Bilgi derinliği: Bir şeyleri ne kadar iyi öğrenir?
    • İletişim: Size yabancı olan bir şeyi ne kadar iyi açıklar? Düşünce süreci mantıklı mı?
    • Stresli durumlara tepki: Cevaplaması ne kadar zor? Sahte mi? Kaçınılmaz "bilmiyorum" kolay mı zor mu?
  • Adayın önceki durumlarla ilgili ç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?

Ben en iyi adaylar, hevesli görmüş, kendinden emin ama kibar ve en önemli buluyorum mevcut . İçeride birisinin olduğunu bilmen gerekiyor. :-)


4
İlk programlama röportajımı hatırlıyorum, basılan bazı kodları incelemem istendi. En üstte, kodun ne yaptığını açıklayan bazı yorumlar vardı. Bunu kodu okuyarak doğruladım, sonra temelde sözlü olarak yorumları okudum ve "Çok iyi!" Dediler. Dedim ki, "evet hemen hemen burada yorum bloğunda yazıyor." Oldukça utandılar.
Dustin

@Dustin IMO, yalnızca adayın incelemesi gereken koddaki yorumları bırakması konusunda oldukça dikkatsizdi (?). Bu, temel olarak, yorumların içeriğine göre, onlara ücretsiz bir cevap ya da karışıklık verir.
cst1992

39

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

Görüşme sırasında yanlış cevap veren adaylar gördüm, ancak açıklamaları konuyu tanıdıklarını gösterdi (ve bu nedenle net'i arayarak doğru cevabı kolayca alabiliyorlardı). Bunu görmek için, sorduğunuz konuyu çok iyi bilmek zorundasınız.

Diğer bir şey ise kolayca googled olabilecek detaylarla ilgili sorulardan kaçınmak. Bu soru, yalnızca adayın aradığınız bilgiyi ve anlayışı gerçekten yoksa, şeyleri hatırlamanın ne kadar iyi olduğunu gösterir.

Tavsiyem, çok fazla programlama bilen ve iyi insan becerisine sahip birinden yardım almak, görüşmelere yardımcı olmaktır.

Düzenleme: Ayrıca burada görüşmeler hakkında bir yorum yazdım .


3
Googling konusunda tamamen haklısınız - iyi bir programcı her şeyi bilmek zorunda değildir, ancak hızlı bir şekilde öğrenebilmelidir.

2
"Programlamayı çok iyi bilen ve iyi insan becerilerine sahip biri" ... ve sorun bu - birini bulmak kolay değil. Genellikle bunlardan sadece bir tane yetenekleri vardır. Bu yüzden her iki şubeyi de geliştirmek için elimden geleni yapıyorum :-).

7
Harika insan becerilerine sahip olmak genellikle soyut bir düşünür olmakla çelişir. Soyut bir düşünür olmamak, genellikle iyi bir programcı olmakla çelişir.
Tomalak

7
Gius: Şanslıysanız, insanların biyolojik bilgisayarlar olduğunu anlayan ve bu nedenle nasıl çalıştığımıza / düşündüğümüzle ilgilenen programcılar bulursunuz. Bu kişiler de kendilerini iyi beceriler geliştirdiler çünkü bu alanda kendilerini geliştirmekle ilgileniyorlar.

Eigir: Katılıyorum. Fakat burada daha önce bahsettiğim birileri olarak - birini bulursanız, jackpot ;-) 'a çarptınız. Umarım şanslı oluruz.

23

Programlama yeteneğinin her şey olmadığını unutmayın. Sizin için çalışan dünyadaki en iyi programcıya sahip olabilirsiniz, ancak diğer insanlarla çalışmaktan nefret ederlerse, onları çok yararlı bulmazsınız.

Listedeki bir programcının kişiliği, çoğu işveren sıralamada göründüğünden daha yüksek olmalıdır. Şu andaki iş yerimde doğru insanı işe alma konusunda çok dikkatliler.

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


1
Diğer insanlarla çalışmaktan vazgeçirlerse, onları nasıl “dünyanın en iyi programcısı” olarak adlandırırsınız? Programlama kesinlikle derleyici ile konuşmak ve kodları küçültmekle ilgili değildir, bir programcının / yazılım geliştiricinin çoğu görevi belirli bir miktarda işbirliği gerektirir.
Christopher Creutzig

Amacınızı anlıyorum, ancak bu bağlamda "Programlama" sadece kodlama ile ilgilidir, aksi takdirde "Yazılım Geliştirici" terimini kullandım. "Programcı" ve "Yazılım Geliştirici" terimleri eşanlamlı değildir.
Doktor Jones

6
Hayır, aslında birçok insan daha iyi programcı olmayı öğrenemez. Ve açıkçası, eğer 5-10 yıllık deneyime sahiplerse, işlerini nasıl yapacaklarını bilmelerini bekliyorum . Bu sorunun cevabı DEĞİL; sadece "iyi programcılar olup olmadığına
bakmayarak

1
@Benubird, benim açımdan kişilerarası becerilerin, özellikle bir takımda çalışmak söz konusu olduğunda, ham programlama yeteneğinden daha önemli olabileceği yönündeydi. İşini yapamayan insanları işe almayı savunmuyorum. Takımınızda iyi çalışmayacaklarsa, bir "rockstar" programcısı tutmaya değmez. Sürtünme ve uğraşmaya değmez.
Doktor Jones,

@ Doktor Jones ve sana katılıyorum; sen hiç yanlış değilsin Sadece verdiğiniz cevap, “İyi bir programlayıcı nasıl tanınır?” Sorusunun cevabı değildir.
Benubird

16

Onları kodla. 4 ya da 5 saatte çözülebilen bir problem verin ve kodlama, kodlama tarzı, kodlama tarzı, kodlama işlemine başlamadan önce çözümü nasıl planladığı vb. Açısından kontrol edin. Sorunu çözmesi gerekmez. Ve Jon Skeet'in dediği gibi, programlama, seçim dilleri ve bunun gibi şeyler hakkında konuşmalarını sağlayın. Tutkuyu iyi bir programlayıcıda yeniden düzenleyebilirsiniz. Programlamaya bağlı sitelerin kaçını yığın yığınını takip ettiğini sor. İzledikleri bloglar iyi bir gösterge olabilir.


Onlara bir kodlama görevi verme fikrini seviyorum (görüşmeden önce yapılabilir) ve daha sonra görüşmeyi kod olarak konu olarak kullanın. Neden farklı çözümleri seçtiklerini açıklamasını

Genel olarak, kodlama görevi hakkındaki fikir çok iyidir. Ancak, içlerinde ne olduğunu gerçekten gösterecek bir görev yaratmanın çok zor olduğunu düşünüyorum - ve oldukça uzun (ama çok ilginç!) Bir tartışma için iyi bir konu. ... bununla ilgili bir soru sormalı mıyız? ;-)

Favori bloglarının listesi harika bir gösterge olurdu!

6
Kodlama röportajı yaptım. Görüşmeci benim çözümüm boyunca onunla konuşmam konusunda ısrar etti. Bir fikir ortaya koyardım, başarısız olabileceği yollar önerirdi. Bu şekilde, bir sorunla nasıl çalıştığımı öğrendi. Şimdiye kadar yaptığım en zor ve en adil röportajdı.

@gius - Bence bu soruyu sormalısın.
Manoj

16

Tutku cevabını seviyorum. Bunda gerçekten iyi olmak için çalıştığınız şeye tutku duymanız gerektiğine inanıyorum.

İyi bir programcı iş dışında bir tarafta da programlar (en azından arada bir). Programlama problemlerini çözmeyi sever. Ve evde belirli bir ihtiyacı çözen bir program bulamadığında, genellikle kendi kendine çözmeye çalışır.

Ancak birkaç çeşit programcı vardır.

  • Belgelemeyi sevenlere sahipsin. Şahsen belgelemekten nefret ediyorum. Ancak yapılanları belgelemek önemli olabilir.
  • Sende "bilgisayar korsanları" var. Karmaşık bir bulmacayı çözme konusunda cüretkar olanlar, eğer bunun için nereye giderseniz, muhtemelen bir çözüm bulamazlar. İhtiyaç duydukları araçları elde ettiği sürece "herhangi bir" problemi çözebilirler.
  • Pazarın programlama için işe alınmasının iyi olduğu için kendilerini programcı olmak için eğitenlere sahipsiniz. Bunlar genellikle vasat, çünkü tutkudan yoksunlar.
  • İletişim kurma konusunda üstün olanlara sahipsiniz ve onlar “her şeyi çözebilir” ancak işi aldıktan sonra çözdükleri problem için yardım almak için herkesi takıyorlar.

Aynı zamanda çok iyi belgeler ve mükemmel iletişim becerilerine sahip olan "bilgisayar korsanını" bulabilirseniz, hit jackpot'a sahip olduğunuza inanıyorum.

Oh ve son bir şey. Muhtemelen, sadece başlatmak için programlamayı kullanacağından, lider emelleri olan bir programcı istemezsiniz. Yani bu kaynağı er ya da geç kaybedersiniz.

Bir programcı işe alırken soracağım bir soru şudur: “Kendinizi neden bir programcı olarak eğittiniz?”. Orada tereddüt ederlerse bu ölü bir hediye olur.

Bu benim düşüncem.


2
İlham verici soru - "Neden kendini bir programcı olarak eğittin?"

5
Er ya da geç bütün kaynakları kaybediyoruz . Sadece kayalar sonsuza kadar var.
Carl Manaster

1
Biraz kısa görüşlü. "Schlubladendenken"

6
"Muhtemelen lider emelleri olan bir programcı istemiyorsunuz" olmasaydı bunu oylardım. Sorumluluk almak isteyen çalışanlar hayati önem taşır ve bunları kuruluşunuz içinde ilerletmenin yollarını bulmalısınız.
Danny Varod

5
"Hacker" için benden farklı bir tanım var. Benim için bir "hacker" bir sonucu (bir tür) elde edene kadar bir şeyleri olabildiğince hızlı bir şekilde "hackleyen", ancak tek bir en iyi uygulamayı takip etmedikleri için bir yıkım ve dehşet izini geride bırakan biri. Bir "bilgisayar korsanı" profesyonelce değildir.
David Masters,

7

Bir arkadaşım işe alım sürecinde ilave bir adım attığı bir şirkette çalışıyor: İlk elemeden ve mülakattan sonra, bir başvuru sahibi birkaç gün boyunca "işi test etmek" zorunda. O çünkü onlar onu işe yaramadı rağmen bir adayın her beceri ve yetenek gerekli olduğunu söyledi bir bir çalışmak değil iyi bir insan.


Bu harika bir fikir ve bunun standart bir uygulama olduğunu görmek isterim. Şirket kültürüne uymadığı için birkaç işten veya beceri seviyelerinin yanlış değerlendirilmesinden kovulan biri olarak, önce suyu test etmek isterim.
DarenW

20
Bununla ilgili sorun şu ki, birinin zaten bir işi varsa, gerçekten bir işi olup olmadığını öğrenmek için başka bir şirkette çalışmaya gitmek için bir hafta izin alamazlar.
Cercerilla

@ Cercerilla Sağ! Bir hafta boyunca onlar için çalışan bir pratik çalışmasına izin vermeden görüşmek için zaman bile bulmak zordur.
eaglei22

6

Sadece bir iş görüşmesine dayanarak bir programcı tanımak çok zor.

Birinin iyi bir programcı olduğuna karar veren bazı şeyler:

  • Takım halinde çalışabilme
  • anlaşılabilir ve idare edilebilir iyi kodlar yazıyor
  • Yeni teknolojiler hakkında bilgi sahibi olur.

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

  • Aday bir teknoloji / programlama dili biliyor mu, yoksa çoklu biliyor mu? Eğer farklı dilleri biliyorsa, yeni şeyler öğrenebilecek gibi görünüyor ve mevcut tercih edilen teknolojisi / dili üzerindeki olumsuzlukları biliyor olabilir. Bu nedenle, şirketinizde kullandığınız teknolojinin yanı sıra bilgi isteyin.
  • Çalıştığı projeleri, özellikle hobi-projeleri ve açık-kaynak isteyin. Hobi projeleri size programlama yapmayı sevdiğini ve boş zamanlarında bile yapmayı (ve bu yolla becerilerini geliştirdiğini) göstermektedir. Açık kaynak kodlu bir projede yazdığı koda bakabilirsiniz. Proje birden fazla kişiyi içeriyorsa, onun takım becerileri hakkında ipuçları alabilirsiniz. Bir işletim sistemi projesinde, daha fazla bilgi edinmek için posta listesi-arşivlerini arayabilirsiniz.

3

Röportajda bazı testler yapabilirsiniz.

Ancak çoğu zaman çalışma ortamının kendisinde de bir sorun vardır. Elbette bu sizin organizasyonunuzda geçerli olmayabilir, ancak yazılım endüstrisi alanında teknolojik borcun çok fazla artması oldukça yaygındır. O zaman yeni insanlar işe aldığınızda, borç nedeniyle 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 yapabilecek şekildedir, ancak bazen işbirliği yapmanın bir yolu yoktur. Örneğin, eğer tüm insanlar geliştiriciler ise, işlerini yapmaları gerekir. Eh, onlar. Ancak, geliştirme projesini yönlendiren ve toplantılar düzenleyen bir mimarınız var mı? Normal geliştiriciler toplantıları başlatmak için gerekli yetkileri olmadığını ve diğerlerini şimdi kesmenin ve o zaman böyle olmadığını düşünebilirler.

Birbiriyle iletişim kurmak nihai amaç olmamalıdır. Daha az iletişim gerekli, daha iyi, ancak yalnızca daha az mümkün olduğunda. Bir mimarınız varsa, daha az mümkün olur. Toplam iletişim miktarı iyi düzeyde kalabilir, ancak aynı iletişim miktarı için daha fazla sonuç alıyorsunuz.


Sadece çalışana değil, kendi kuruluşuna ve içindeki süreçlere bakma fikrini seviyorum.

3

ilk önce her zamanki röportaj işleriyle başlıyorum, önümdeki kişinin bir değere değip değmeyeceğini görmek ve onun bilgi ve becerilerini belirlemek için çok önemli olduğunu düşünüyorum.

Ondan sonra Java alanında, özellikle Etkili Java'dan alınan bazı prensipleri tartışmak gibi birkaç teknik kullanırım.

Bu aşamada, önümde iyi bir programcı olabileceğimi düşündüğümde, kod incelemesi için ona bir parça kod veriyorum. Görmek istediğim, kodun tehlikeli kısımlarını belirleyebilmesi, iyileştirmeler hakkında bazı ipuçları verebilmesi, performansa ilişkin tuzaklar bulabilmesi ve çok önemli bir konu ile "zevkli açıklamalar" arasında ayrım yapabilmesi. Bütün bunlar daha uzman bir çalışan bulmamda bana yardımcı oluyor.

ama sonunda, işe almanın bir tür kumar olduğunu her zaman hatırlıyorum ... beklemek çok zor ...


2

Bunun ne istediğinizi cevaplamadığını biliyorum ama tavsiye ederim, izin veren yasalar, ilk önce her zaman geçici olarak işe alın (işe bağlı olarak iki hafta veya bir ay). Eğer kişi onun tuzuna değerse, itiraz etmeyecek, ayrıca her ikiniz için de bir güvencenin yanı sıra (onun gitmesine izin verebilirsiniz ve işi sevmemeye başlayıp bırakabilir).


1
Tamamen haklısın, ama eğer senin için iyi değilse, hala bir ya da iki ayını, maaşını ve seni içine sokacak insanların çalışmalarını kaybedersin. Dolayısıyla bu durumdan kaçınmak iyi olur.

3
Sorun şu ki, iyi programcılar muhtemelen başka iş tekliflerine sahipler ve onlara başlangıçta yalnızca geçici bir iş teklif ederseniz, başka birini seçebilirler ...

@Rexxar: Eğer beğenmedilerse hala ayrılacaklar. IMO, bu şekilde sunmak için daha dürüst ve açık. En azından benim için bir artı olurdu, eksi değil (kısa süreli bir sözleşme olduğu ve sonunda kalıcı olacağı ya da bir elveda olduğu düşünülürse).
Vinko Vrsalovic

3
Faturalarımı ödemeye devam etmem gerekiyor, hiçbir zaman yalnızca bir ay iş almaya ve bunun için kalıcı bir işten vazgeçmeyi düşünmemeliyim. İşsizseniz veya zengin bir eşiniz varsa, bu işe yarayabilir. Öte yandan, çok sayıda iyi aday kaybedersiniz, çünkü kalıcı olma konusunda onlara yalan söyleme şansınızı göze alamazlar.
HLGEM

4
“Eğer kişi onun tuzuna değerse, itiraz etmeyecektir” - peki, buradaki geliştirici "siktir git" derdi ve daha iyi bir iş bulurdu.
gnasher729 21:16
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.