it-swarm-eu.dev

Jak rozpoznat dobrého programátora?

Naše společnost hledá nové programátory. A tady přichází problém - existuje mnoho vývojářů, kteří vypadají opravdu skvěle na pohovoru, zdá se, že znají technologii, kterou potřebujete, a mají dobré pracovní zázemí, ale po dvou měsících práce zjistíte, že nejsou schopni pracovat tým, psaní nějakého kódu, jim trvá velmi dlouho, a navíc výsledek není tak dobrý, jak by měl být.

Používáte nějaké formalizované testy (existují?)? Jak rozpoznáte dobrého programátora - a dobrého člověka? Existují nějaké jednoduché „dobré“ otázky, které by mohly odhalit budoucí problémy? ... nebo jde jen o váš „pocit“ o osobě (tj. hlavně o vaši zkušenost) a vyzkoušíte ji?

Edit: Podle Manojovy odpovědi zde je otázka týkající se úlohy kódování při přijímacím pohovoru.

133
gius

Nechte je mluvit o tom, o co mají zájem. Ještě se musím setkat s vývojářem, který je opravdu vášnivý, když mluví o programování, ale ve skutečnosti nedokáže kódovat. Mohou samozřejmě existovat - a váš pohovor by měl také zkontrolovat, zda jsou kompetence -, ale podle mých zkušeností je vášeň dobrým indikátorem. (Všimněte si, že to není to samé, jako by bylo možné „hovořit“, pokud jde o buzzwords.)

Zeptejte se jich, co se jim na jejich oblíbeném jazyce nebo platformě nelíbí. Jak by to napravili? Co by chtěli vidět v příští verzi? Mají hobby projekty? Pokud mají blog, přečtěte si jej. Zkontrolujte jejich obecnou online přítomnost.

157
Jon Skeet

Najímat dobré lidi je těžké .

Abych se k tomu dostal lépe, trvalo mi několik skutečných chyb. Svým střevním traktům začnete věřit mnohem více po prvních pár dnech, kterým tomu nevěříte a litujete.

Velmi si vážím otázky na obrazovce telefonu Steve Yegge a použil jsem to jako základ pro rozhovor s lidmi s určitým úspěchem.
Také si myslím, že jsem se zlepšil v rozhovorech s lidmi po přečtení Joelův průvodce guerillovým rozhovorem (nyní ve verzi 3.0, která je před verzí pro web a všechno, musí prostě buď hodný).

Existuje také 57 dalších otázek (k 20. 11. 2008) na Software Engineering Stackexchange označeno rozhovorem a některé z nich vypadají velmi relevantní, takže si je zkontrolujte.

84
Hamish Smith

Několik nápadů:

  • Položit několik otevřených otázek z několika různých úhlů:

    • Zkontrolujte nějaký kód. Co je identifikováno? Technické chyby, nekonzistence stylů, komentáře, algoritmy, údržba, atd ...
    • Napište nějaký kód. Hledejte proces, neprůstřelnou kontrolu, čitelnost atd.
    • Vytvořte návrh na vysoké úrovni pro malý systém. Podívejte se na pochopení problému, přístup, komunikaci, úplnost, detail.
    • Popište proces vývoje softwaru. Podívejte se na design, spolupráci, revizi, testování, dobré/špatné návyky a celkovou zkušenost.
  • Vyberte si něco - cokoli - kandidát tvrdí, že to dobře ví. Zeptejte se jednoduché otázky a poté, na základě odpovědi, zeptejte se na další, trochu podrobnější otázku a pokračujte v „kopání“, dokud nedosáhnete limitu znalostí kandidáta. To vám dá představu o:

    • Čestnost: ví, kolik toho prohlašuje?
    • Hloubka znalostí: jak dobře se učí věci?
    • Komunikace: jak dobře ti vysvětlí něco, co ti není známé? Je myšlenkový proces logický?
    • Reakce na stresové situace: jak těžko se snaží odpovědět? Předstírá to? Je nevyhnutelné „nevím“ snadné nebo obtížné?
  • Zeptejte se, jak se uchazeč vypořádal s různými situacemi a předchozími zaměstnáními: týmová práce, zpožděné projekty, ladění, atd. . Jsou odpovědi kladné nebo záporné? Vášnivý? Inteligentní? Arogantní?

Nejlepší kandidáty považuji za nadšené, ostřílené, sebevědomé, ale zdvořilé a nejdůležitější přítomné. Musíte vědět, že uvnitř je někdo. :-)

47
Adam Liss

Abyste poznali dobrého programátora, musíte být dobrým programátorem. To znamená, že musíte velmi dobře znát programování, abyste viděli věci, které jsou řečeny a provedeny v rozhovoru, a musíte vědět, jaké otázky je třeba položit.

Viděl jsem kandidáty, kteří při rozhovoru dostali špatnou odpověď, ale jejich vysvětlení ukázalo, že znali předmět (a proto mohli snadno najít správnou odpověď prohledáním sítě). Abyste to mohli vidět, musíte znát předmět, na který se ptáte, velmi dobře.

Další věcí je vyhnout se otázkám o podrobnostech, které by se daly snadno googlovat. Tato otázka pouze ukazuje, jak dobrý je uchazeč si pamatovat věci, ne, pokud má skutečně znalosti a porozumění, které hledáte.

Mým doporučením je získat pomoc od někoho, kdo ví hodně o programování a má dobré schopnosti lidí, aby pomohl s pohovory.

Edit: Také jsem napsal komentář k rozhovorům zde .

39
Eigir

Pamatujte, že programovací schopnost není všechno. Mohli byste mít pro vás nejlepšího programátora na světě, ale pokud nenávidí práci s jinými lidmi, nebudete je považovat za velmi užitečné.

Osobnost programátorů by měla být na seznamu nahoře, než se zdá, že většina zaměstnavatelů ji řadí. Na mém současném pracovišti jsou velmi opatrní při najímání správného typu člověka.

Lidé se obecně mohou naučit být lepšími programátory, lidé se obecně nemohou naučit být lepšími lidskými bytostmi.

24
Doctor Jones

Udělejte z nich kód. Uveďte problém, který lze vyřešit za 4 až 5 hodin, a prohlédněte si kód z hlediska dokumentace, stylu kódování, způsobu, jakým plánoval řešení před skutečným začátkem kódu atd. Nemusí problém skutečně řešit. A jak zmínil Jon Skeet, přimějte je mluvit o programování, jejich jazyku volby a podobných věcech. Vášeň můžete regonalizovat v dobrém programátorovi. Zeptejte se, kolik webů souvisejících s programováním sledují, jako je stackoverflow. Blogy, které sledují, mohou být dobrým ukazatelem.

16
Manoj

Mám rád vášeň odpověď. Věřím, že musíte být vášniví pro to, s čím pracujete, abyste byli opravdu dobří.

Dobrý programátor programy vedle práce (alespoň jednou za čas). Rád řeší problémy s programováním. A když on/ona nemůže najít program, který řeší konkrétní potřebu doma, obvykle se to pokusí vyřešit sám.

Existuje však několik typů programátorů.

  • Máte ty, které milují dokumentování. Osobně nenávidím dokumentování. Důležité však může být zdokumentování toho, co se dělá.
  • Máte "hackery". Ty, které se hýčkají na řešení složité hádanky, kde pokud byste na to měli Google hledat, pravděpodobně by nenašli řešení. Dokážou vyřešit „jakýkoli“ problém, pokud mají potřebné nástroje.
  • Máte ty, kteří se vzdělávají, aby byli programátoři jen proto, že trh byl dobrý na to, aby se najali na programování. Obvykle jsou průměrní, protože jim chybí vášeň.
  • Máte ty, kteří vynikají v komunikaci a oni „dokážou vyřešit cokoli“, ale jakmile se dostanou do práce, pověsí se nad všemi ostatními, aby jim pomohli vyřešit problém, který řeší.

Pokud najdete „hackera“, který také dobře dokumentuje a má vynikající komunikační schopnosti, věřil bych, že jste zasáhli jackpot.

A ještě jedna poslední věc. Pravděpodobně nechcete programátora, který má ambice vůdce, protože programování použije pouze ke spuštění. To znamená, že dříve nebo později ztratíte tento zdroj.

Otázka, kterou bych se zeptal, když najmete programátora, zní: „Proč jste se vzdělával jako programátor?“. To by bylo mrtvé prozradí, kdyby tam váhali.

To je můj názor.

16
Wolf5

Můj přítel pracuje ve společnosti, kde má další krok v procesu najímání: po úvodním screeningu a pohovoru musí žadatel několik dní „testovat práci“. Řekl mi, že ačkoli jeden kandidát měl všechny potřebné dovednosti a talent, neobnovili ho, protože byl a není milý člověk, se kterým bys mohl pracovat.

7
Svante

Je velmi těžké rozpoznat programátora založeného pouze na pohovoru.

Některé věci, které rozhodují, že je někdo dobrý programátor, jsou:

  • schopen pracovat v týmu
  • píše dobrý kód, který je pochopitelný a udržovatelný
  • je schopen se učit o nových technologiích

Takže máte nějaké malé rady, o kterých se můžete v rozhovoru dozvědět:

  • Zná kandidát jeden technologický/programovací jazyk nebo ví víc? Zná-li různé jazyky, zdá se, že se dokáže učit nové věci a možná ví o nevýhodách své současné preferované technologie/jazyka. Takže požádejte o znalosti kromě technologie, kterou používáte ve vaší společnosti.
  • Požádejte o projekty, v nichž již pracoval, zejména o hobby projekty a open-source. Hobby projekty vám ukazují, že rád programuje a dělá to i ve svém volném čase (a tak zlepšuje své dovednosti). V open-source projektu můžete vyhledat kód, který napsal. Pokud projekt zahrnuje více než jednu osobu, můžete získat rady o jeho týmových dovednostech. V projektu OS si můžete prohlédnout archivy mailing-list-archivů a dozvědět se více.
6
Mnementh

V rozhovoru byste mohli provést nějaký test.

Mnohokrát však také existuje problém se samotným pracovním prostředím. Ve vaší organizaci to jistě nemusí být, ale v oblasti softwarového průmyslu je docela běžné, že technologický dluh je příliš velký. Pak, když najmete nové lidi, moc nepomůže, pokud jsou dobří nebo ne, kvůli dluhu. Maximalizace čitelnosti a srozumitelnosti vašeho programového kódu pomáhá nováčkům začít pracovat.

Také mnoho lidí je takových, že mohou spolupracovat, ale někdy neexistuje způsob spolupráce. Například pokud jsou všichni lidé vývojáři, mají dělat svou práci. Dobře. Máte ale architekta, který řídí vývojový projekt a udržuje schůzky apod.? Normální vývojáři mohou mít pocit, že nemají potřebný mandát pro zahájení schůzek, a mohou si myslet, že přerušování ostatních nyní a potom není správná cesta.

Komunikace s ostatními by neměla být konečným cílem. Čím méně je potřeba komunikace, tím lépe, ale pouze pokud je možné méně. Méně je možné, pokud máte architekta. Celková částka komunikace může zůstat na dobré úrovni, ale za stejné množství komunikace získáte více výsledků.

3
Silvercode

nejprve začnu s obvyklými rozhovory, považuji za velmi důležité zjistit, zda osoba přede mnou stojí za něco, a určit své dovednosti a znalosti.

Poté používám několik technik v oblasti Java, jako bych diskutoval o některých principech, hlavně převzatých z Efektivní Java.

V této fázi, když si myslím, že bych mohl mít před sebou dobrého programátora, dám mu kousek kódu, který ho zkontroluje. Chtěl bych vidět, že dokáže určit nebezpečné části kódu, dát nějaké ukazatele na vylepšení, najít úskalí ve výkonu s více vlákny A že dokáže rozlišovat mezi důležitými poznámkami a „poznámkami o chuti“. To vše mi pomáhá najít zdatnějšího zaměstnance.

ale nakonec si vždy pamatuji, že najímání je druh hazardu ... velmi těžko předvídat ...

3
baba smith

Vím, že to neodpovídá na to, co žádáte, ale doporučuji, zákony, které to umožňují, vždy najmout dočasně nejprve (dva týdny nebo měsíc, v závislosti na práci). Pokud osoba stojí za svou sůl, nebude mít námitky, kromě toho je to ochrana pro vás oba (můžete ho nechat jít a on by nakonec mohl mít rád práci a odejít).

2
Vinko Vrsalovic