it-swarm-eu.dev

Jaký je nejlepší způsob, jak rozpoznat vynikajícího programátora při přijímacím pohovoru?

V nastavení rozhovoru: Jaký je nejlepší způsob, jak spolehlivě zjistit, kdy je někdo vynikající programátor. Tím myslím, že je jedním z těch, kteří jsou 10-15krát účinnější/rychleji/lepší než jeho vrstevníci směrem k dolní části spektra.

Mnozí z nás slyšeli o FizzBuzz Problem jako způsob, jak vyřadit ty slabé. Trvání řešení tohoto problému je 5–10 minut, což je vážný ukazatel toho, že žadatel je slabým kandidátem. Předpokládám, že dobrý indikátor to dokáže vyřešit tak rychle, jak můžete psát. To se však nezdá dostatečné.

Je to snad něco jako dát mu mírně komplikovaný program na buggy a vidět, jak rychle ho dokáže zapadnout a identifikovat s ním všechny problémy?

82
Claudiu

Omlouvám se každému, kdo se nestará o zdlouhavé odpovědi, ale myslím si, že je docela důležité kvalifikovat své kandidáty, než je najmete. Každý, kdo provedl značné množství rozhovorů v tomto odvětví, ví, že většina uchazečů nevydrží prvních 15 až 30 minut rozhovoru, takže většina z tohoto seznamu nebude nutná. Jen mějte na paměti, jak drahé je (finančně i emočně) vystřelit někoho, než zavrhnete můj seznam jako nadměrné. Pokusil jsem se zde uvést seznam témat na základě jejich důležitosti.

General Intelligence (hlavolamy/logické hádanky)

Znalost informatiky

Programovací cvičení

Znalost objektově orientovaných programovacích technik a společné návrhové vzory

Algoritmická analýza (doba běhu O (n) složitost a požadavky na úložiště)

Využití nástrojů a metodik

Znalost běžných bezpečnostních chyb a útoků

Základní matematika

  • Číselné systémy (převést z jedné základny na druhou)
  • Teorie pravděpodobnosti
  • Vzdálenost mezi dvěma body na karteziánské rovině (Pythagorova věta)
  • Druhá odmocnina (Heron of Alexandria, postupná aproximace)

kryptografie

  • Kryptografie veřejných klíčů
  • Kryptografie symetrických klíčů
  • Hašovací funkce
  • Kryptografické protokoly (tajné sdílení, důkazy o nulových znalostech)

Diskrétní matematika

  • Logika
  • Teorie množin
  • Teorie grafů
  • Informační teorie
  • Kombinatorika
  • Důkazy (jako existence iracionálních čísel, nekonečné prvočísla)

Možná byste se také měli podívat na knihu Exposed Programming Interviews Exposed . Je to dobrý odkaz na toto téma.

65
rboyd

Věčná otázka.

Letos jsem udělal mnoho rozhovorů (mám zítra naplánováno dva kandidáty) a podle mých zkušeností je najímání spíše o pocitech střev a dovednostech lidí a méně o technických znalostech.

  1. Udělejte si čas s CV. Některé životopisy lze odmítnout během několika sekund, jiné trvat půl hodiny. Někdy přemýšlím o kandidátovi na základě životopisu mnohem déle, než jsem s ním pohovořil. Několikrát jsem připravil pohovorové otázky speciálně pro tohoto kandidáta, i když obvykle nemám připravené otázky.

  2. Technické znalosti - chci minimum, a to je obvykle docela snadné říct. Pokud máte pochybnosti, během pohovoru mluvte o projektech, které zmínil v životopisu, a jděte tak hluboko, jak potřebujete. To je obvykle více než dost, abych vám řekl, co ví a co ho nutí zatrhnout. Vzdělání není důležité, na předchozích pracích záleží, možné osobní projekty mají vysoké skóre.

  3. Zeptejte se, co chce dělat a kam chce jít se svou kariérou - potřebujete to, co má, a můžete poskytnout to, co chce? Také na konci rozhovoru se obvykle ptám na preferovaný plat. Pokud je mimo můj dosah, nebo pokud za to, co ví, nebudu tolik platit, ukončíme rozhovor.

  4. A co je nejdůležitější, musí se uchazeč zapojit do týmu a já musím mít jistotu, že budeme schopni spolupracovat. Nemusím ho mít rád, ale musím ho zvládnout a on mě musí zvládnout. Pokud tomu tak není, projdu, protože nebudu moci využít jeho technické znalosti. Na druhé straně, pokud je tomu tak, a pokud se rychle učí, jeho nedostatek technických znalostí mi nezabrání v tom, abych ho najal.

Vycvičil jsem dívky z HR, aby mi předaly všechny životopisy, jakmile je dostanou; Rozhovor naplánuji osobně, tak rychle, jak to půjde (ideálně den po zítřku po obdržení životopisu za dobré životopisy). Poté se mnou a alespoň jedním spolupracovníkem (obvykle mým šéfem nebo členem týmu) dostane půlhodinový nebo hodinový rozhovor, kde ho seznámím a zodpovím všechny dotazy. I když jeho žádost odmítnu na místě, dostane 20-30 minutovou prohlídku společnosti a mluvím o tom, co děláme a jak to děláme. Pak ho posílám na HR k psycho testu a trochu opravdu opravdu papírovému kódování/SQL. Oba testy téměř nikdy nehrají významnou roli v mém rozhodnutí, jde spíše o ověření, které jsem v rozhovoru správně posoudil. Po výsledcích je to 15minutová přednáška, ve které mu udělám nabídku, a pokud vyjednáme podmínky, s nimiž jsme oba spokojeni, najal ho.

Je to proces, o který jsem musel bojovat prostřednictvím byrokracie společnosti, poté, co jsem zmeškal několik skvělých kandidátů, a který funguje, protože já jsem ten, kdo rozhoduje o najímání (i když poslouchám rady jak HR, tak spolupracovníků, moje Slovo je konečné). Více lidí s rozhodovací pravomocí, delší proces. Čím déle je tento proces, tím více musíte být Google, abyste se dostali na vrchol plodiny.

Jakmile jsem si jistý, že se jedná o neshodnost, ukončím rozhovor, dostane podnikové turné a je po všem. Během plánování rozhovoru to může být tak krátké jako dvě minuty v telefonu. I když odmítnete kandidáta, prodejte společnost. Pokud jste odvedli dobrou práci, může dobrý nájem přijít skrze slovo od odmítnutého kandidáta.

Také jeden tip. Odesílejte odmítavé dopisy (nebo e-maily) pro každou obdrženou aplikaci. V mé současné společnosti to obvykle nechávám na HR (kromě těch, které říkám během rozhovoru), ale v jednom okamžiku bylo na nezaplacení získat potěšující odpověď od odmítnutého kandidáta v řádcích „DĚKUJEM! Jsi první společností, která vlastně odpověděl místo toho, aby mě přemýšlel, jestli jednoho dne odpoví! “

28
Domchi

Tato odpověď je trochu mimo krabici, ale myslím, že je to cenné.

Nejlepší programátoři rozhovor jen zřídka. Oni nemusí. Pokud se vaše společnost obzvláště mění ve světě nebo je vzrušeně zahalena tajemstvím, nebo tam někteří programátoři, které respektují, odešli, mohli by se přihlásit, ale obvykle skvělí programátoři získají práci prostřednictvím své sítě spolupracovníků, nikoli zasláním resumé.

Takže: nejlepší způsob, jak říct vynikajícímu programátorovi v pracovním pohovoru, je to, že není tam.

24
Rich

Jakákoli odpověď musí obsahovat ukázky kódu. Najímat si programátora, aniž by viděl jeho kód, se líbí najímat kuchaře, aniž by vyzkoušel jeho vaření.

17
Andy Lester

Možná „vynikající“ programátor k vám nepřichází na pohovor. Pravděpodobně ho musíte ukrást někomu jinému.

11
interstar

Jedním ze způsobů, jak říct vášnivým programátorům z programátorů „Chci jen práci“, je zeptat se, jakou knihu čtou tento týden. Pak se jich zeptejte na knihy, které četli v minulých týdnech.

Zjistil jsem, že vášniví programátoři VŽDY čtou, a seznam obvykle obsahuje několik programovacích/Comp. Sci. knihy v posledním seznamu.

Nejde jen o udržení „profesní orientace“ - vášniví programátoři mají touhu a lásku k programování a mají sklon hltat materiál na různá témata - nejen to, jaký jazyk právě používají, ale metodologie, další jazyky (zejména nové nebo „divné“ nebo starověké), další aspekty IT (možná robotika nebo AI nebo hry, nebo ...)

Pokud nemají vůbec poslední seznam knih, pak podle mých zkušeností pravděpodobně nejsou příliš programátorem.

Na zdraví,

-R

9
Huntrods

Existují různá časová měřítka, ve kterých může být někdo „rychlý“: někteří inteligentní lidé dokážou vyřešit složité hádanky během několika sekund, ale někteří inteligentní lidé za měsíc vytvoří spoustu dobrého kódu, i když nemusí být tak rychle na otázky týkající se rozhovorů.

Zeptejte se uchazečů, zda jsou aktivní v nějakém projektu s otevřeným zdrojovým kódem, kde byste si mohli prohlédnout část svého kódu, a strávit nějaký čas čtením archivů seznamů těchto projektů a protokolováním odevzdání. To vám řekne mnohem více, než cokoli, co mohou kandidáti během pohovoru prokázat. (Samozřejmě to nemůže nahradit rozhovor, protože ne všichni dobří kodéry pracují s otevřeným zdrojovým kódem.)

7
Jouni K. Seppänen

Kniha „ Smart and Gets Done Done: Stručný průvodce Joela Spolského k nalezení nejlepšího technického talent “ může pomoci najít odpověď.

Obsah:

  • Úvod
  • Kapitola 1: „Zasažení vysokých poznámek“
  • Kapitola 2: „Hledání velkých vývojářů“
  • Kapitola 3: „Polní průvodce pro vývojáře“
  • Kapitola 4: „Pokračování třídění“
  • Kapitola 5: „Obrazovka telefonu“
  • Kapitola 6: "Guerilla průvodce po rozhovorech"
  • Kapitola 7: „Oprava suboptimálních týmů“
  • Dodatek: „Joelův test“

Také by vám mohl pomoci článek Joela „Guerilla Guide to Interviewing (version 3)“ .

A článek „Hotovo a věci jsou inteligentní“ od Stevea Yeggeho na toto téma.

7
sergtk

Nechte je kód na tabuli. Jediný způsob, jak můžete zjistit, jestli vědí, jak napsat kód.

4
ManiacPsycho

Zeptejte se jich na řadu otázek, které vyžadují, aby kódovaly, a nechte je, aby byly otázky ztížené. Pokud se zdá, že se jim tato výzva líbí, pravděpodobně máte živou.

Pokud nedokážou odpovědět na první snadnou otázku, například „napsat pro smyčku“ nebo něco hloupě snadno, pak víte, že tento člověk nemůže kódovat.

4
ManiacPsycho

Měli byste hlavně posoudit práci, kterou již udělali. Jakýkoli kód nebo nápady, které někdo vytvoří během rozhovoru s úzkostí, jsou špatným zástupcem toho, co ve skutečnosti mohou v týmu vytvořit.

Chcete-li dělat problémy s kódováním, používejte chat s něčím jako codepad.com a nechte je dělat to z pohodlí svého vlastního domu. Píšete hodně ze svého kódu na tabuli před šéfem, s 30minutovým termínem a bonusem na lince? Já ne.

Není tedy rozhovor zbytečný? Ne, ale důraz by se měl klást na to, aby vysvětlili, co udělali a co přesně přispěli.

Jakmile se s někým setkáte, budete také vystaveni všem psychologickým předsudkům. Nenechte náhodně najmout programátora, protože vytvořili lepší oční kontakt nebo je vyšší než někdo jiný. Abychom je mohli obejít, provedl bych co nejvíce rozhovoru prostřednictvím IM/e-mailu, než se s nimi setkáte tváří v tvář.

3
twk

Na jazyce nezáleží. Logika ano. Chci říct, že IDE a jejich spolupracovníci jsou v dnešní době tak dobří, že každý dobrý programátor si může za týden vybrat jakýkoli jazyk (možná ne assembler); stanete se slušnými za pár týdnů a buďte velmi dobrí za pár měsíců.

Je to jeho mozek, který musíte potvrdit. A ty to děláš můj rozhovor. Žádám je, aby vyřešili jednoduché problémy. Ne tím, že píšu kód, ale tím, že mě protáhnu jejich logikou, abych dospěl k řešení.

Ale přiznávám, že když nedokáže napsat jednoduchou smyčku počítající 1 až 10, máš problémy.

2
Stephen Cox

Mít dobrý programátor přítomný v rozhovoru je podle mého názoru nejlepší.

Pouze odborník může posoudit, zda žadatel ví jen spoustu otázek na pohovor nebo pokud skutečně přemýšlí o problémech a může jít do detailů. Pamatujte si, že nechcete najímat lidi, aby vyřešili hádanky s rozhovorem, chcete je najmout, abyste si mohli udělat skutečnou práci.

Hádanky mají vyloučit lidi, kteří nerozumí základům. Pokud chcete vyzkoušet dovednosti, připravte několik věcí, které můžete vy nebo váš „dobrý programátor“ podrobně prozkoumat a zaměřit se na to, na které musí žadatel chvíli myslet. Jak přistupuje k problémům, o kterých neví okamžitě řešení?

1
mdm

Nemyslím si, že byste měli v rozhovoru mluvit o vášni. Upřímně řečeno, zní to jako společnost, která hledá „vášeň“, ve skutečnosti znamená „pracovat na tom, že peníze nebudou peníze“.

Vášeň ani nezaručuje dokonalost. Myslím tím, že trávím téměř celý svůj život programováním, čtením o programování, učením bláznivých jazyků jako Erlang nebo Clojure a za nic z toho nedostanu zaplaceno. Přesto jsem sát programování.

Myslím, že vynikající programátor by měl mít přehled o úspěšných projektech, do kterých se aktivně zapojil. Takže přimět programátora psát cokoli nad základní FizzBuzz není v rozhovoru zbytečné. Mluvte o svých minulých projektech a o tom, co udělali. Najímáte programátory, abyste vyřešili Rubikovy kostky a počítali kuličky nebo pracujete na dlouhých a velkých a vyčerpávajících softwarových projektech s více než 50 řádky koeficientu?

1
mannicken

http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/

Z článku:


Kritéria v odrážkách

Stručně řečeno, zde jsou některé ukazatele a kontraindikátory, které by vám měly pomoci rozpoznat dobrého programátora.

Pozitivní ukazatele :

  • Vášnivý o technologii
  • Programy jako koníček
  • Bude-li to povzbuzováno, promluví vaše ucho na technický předmět
  • Významné (a často četné) osobní vedlejší projekty v průběhu let
  • Naučí se nové technologie sám
  • Posoudil, které technologie jsou pro různé použití lepší
  • Velmi nepříjemné z myšlenky pracovat s technologií, o které nevěří, že má „pravdu“
  • Jasně inteligentní, může vést skvělé konverzace na různá témata
  • Programování začalo dlouho před univerzitou/prací
  • Má nějaké skryté „ledovce“, velké osobní projekty pod radarem CV
  • Znalost celé řady nesouvisejících technologií (nemusí být na životopisu)

Negativní ukazatele :

  • Programování je denní práce

  • Opravdu nechcete „mluvit nakupovat“, i když k tomu budete vyzváni

  • Naučí se nové technologie v kurzech sponzorovaných společností

  • Rádi pracujeme s jakoukoli technologií, kterou jste vybrali, „všechny technologie jsou dobré“

  • Nezdá se příliš chytrý

  • Zahájení programování na univerzitě

  • Veškeré zkušenosti s programováním jsou na CV

  • Zaměřeno hlavně na jeden nebo dva technologické balíčky (např. Vše, co souvisí s vývojem aplikace Java)), mimo to bez zkušeností

1
Ronny Brendel

Především je tu jeden způsob, jak získat nápad ještě před začátkem rozhovoru:

Pokud mají blog nebo přispívají k jednomu nebo více open source projektům, stačí se podívat na kód a články, které napsali. Zaprvé, pokud udělali některou z těchto věcí, pak mají iniciativu, aby věci udělali. Můžete také porovnat tyto věci s pracovními zkušenostmi, které uvedli na svém životopise, a získat představu, pokud se vrátí domů a dozví se více po práci, nebo pokud se vrátí domů a zapomenou na práci po 17:00.

V podstatě mají nadšení pro programování nebo ne? To je skutečná otázka.

1
Chris Pietschmann

Vynikající programátor bude také schopen pracovat s těmi vrstevníky s nižším spektrem. Dokud dokážou udělat test a nezatěžují se ve svém egu, máte dobrého kandidáta, ne?

Ten fizzbuzz test je ale docela zábavný. Řešení, na které mohu myslet, využívá operátora modulo. Což vím pouze z vypracování souřadnic mapování znakových listů (nikdy neuvedených ve škole nebo na vysoké škole). Věděl by o tom průměrný programátor, nebo jsem měl kecy vzdělání?

0
Yes Fish...

Jedním z kritérií, které používám, je vidět „druh“ jazyků a nástrojů, na nichž pracoval, ať už v akademických nebo profesionálních projektech, a čeho přesně dosáhl. Pracoval vždy na aplikační úrovni pomocí standardních knihoven (vždy C # nebo VB6 chlap?) Nebo provedl projekt s použitím C v Linuxu, který se zabýval tvrdými věcmi, jako jsou ukazatele, správa paměti, rekurze, synchronizace procesů, vzájemné vyloučení, události atd. Pokud bude vždy používat tyto základní a základní pojmy v nějaké abstrakční vrstvě, budu pochybný.

To je samozřejmě navíc k tomu, aby ho přiměl psát kód. Nic to nenahrazuje. Postarám se však o to, aby někteří lidé mohli psát kód rychleji než jiní, a lidé mají různou dobu odezvy, když se v rozhovoru soustředíme.

0
Ather