it-swarm-eu.dev

Zložité logické hádanky - jsou skutečně užitečné při hodnocení programovacích dovedností?

V posledním rozhovoru, kterého jsem se zúčastnil, jsem byl požádán, abych vyřešil hádanku, kde jsem měl očekávat, že měří přesně bla litry vody při dvou kbelících s kapacitou - litry bla a bla. Nedokázal jsem vyřešit hádanku v daném čase (~ 5 minut).

Tazatel byl trochu zklamaný a řekl, že programátor musí mít „tyto“ dovednosti. Nezískal jsem, o jakých dovednostech mluvil.

Vždycky jsem se cítil divně ohledně těchto druhů hádanek, které se obvykle ptají při programování pracovních pohovorů. Nechápu, jaké je, pokud vůbec, spojení mezi takovými hádankami a programováním. Jaké dovednosti tazatelé hodlají s takovými hádanky posoudit?

89
missingfaktor

Někteří lidé se jich ptají ve snaze posoudit vaše schopnosti a přístup k řešení problémů. Osobně si nemyslím, že takové hádanky poskytují přesný ukazatel. V „reálném světě“ máte více než pět minut na to, abyste zjistili, zda se jedná například o problém s bin pack vs back pack . Zpočátku je někdy snadné nepochopit daný problém, dokud nejste uprostřed použití nesprávného řešení. To se děje lidem s 1, 5, 10 nebo dokonce 20 lety zkušeností.

Nejlepší „hádanky“ v rozhovoru jsou ty, kde si sednete u počítače, abyste vyřešili problém v oblasti, v níž požadujete odbornost. Také se mi nelíbí myšlenka „No, programátor měl by být schopen ...“, protože to nebere v úvahu, že lidé se bojí, když jsou zasaženi něčím neočekávaným v prostředí, které je již stresující. Jistě, vy můžete to vyřešit, pokud byste měli čas na to přemýšlet .. a možná byste to mohli vyřešit rychleji, kdybyste si uvědomili, že váš život by skončil, kdyby ne. Chcete pracovat někde, kde váš život skončí, pokud nemůžete vyřešit problémy za pět minut? Dostanete padáka, pokud nemůžete?

Měli by všichni skvělí programátoři také bojovat za řešení sudoku? Jsem si jistý, že je jich spousta, ale není to jako nějaký předpoklad pro způsobilost.

Neříkám, že byste měli být ne vyzkoušeni, jak přistupujete k problémům, ale testy by měly být zábavné a vyzvat „nejlepší“, které musí žadatel poskytnout, vzhledem k jejich odbornosti. Za předpokladu, že jste stejně chytří jako postava, která portréty Bruce Willise vypadá trochu zbytečně, vzhledem k tomu, že producenti utratili pěknou částku, aby dostali tu scénu jen správně.

Jinými slovy, pokud zjistíte, že jste rozhovor s někým, kdo má jen málo porozumění co ve skutečnosti budete dělat, omluvte se, abyste šli na toaletu a nikdy se nevrátili.

97
Tim Post

Microsoft začal tyto otázky používat začátkem 80. let. Když se společnost Microsoft stala obzvláště úspěšnou, začaly je kopírovat další společnosti, ale několik klíčových bodů se v překladu ztratilo.

V té době se Microsoft pokoušel obsáhnout spoustu technických, ale ne-programových pozic: technické spisovatele, testery, telefonickou podporu atd. Nebyly to běžné úkoly zpět v den a lidé se skutečnými zkušenostmi v těchto oblastech se těžko nalézt. Jako alternativu si Microsoft myslel, že si může najmout opravdu chytré, chytré, flexibilní lidi a vyškolit je v práci. Vzhledem k tomu, že tito lidé neměli základní znalosti o programování, bylo jejich položení v rozhovoru zbytečné. Hádanky byly vybrány, aby vyzkoušely lidi, kteří byli chytří a měli mimořádně dobré analytické schopnosti. Programátoři měli obecně problémy s programováním bílé tabule, i když by jim na oběd nebo večeři mohli být položeny hádanky.

Tyto otázky nikdy neměly být považovány za úspěšné. Měli být začátkem rozhovoru o tom, jak byste problém vyřešili a jak jste přemýšleli o problémech, které jste nikdy předtím neviděli. Jediným jistým způsobem, jak "selhat", bylo odmítnout pokus o vyřešení problému. V té době to byla nová strategie a vy jste nemohli jen hledat otázky na Googlu.

Upravit:

Někdy po napsání této odpovědi jsem četl Počítačoví chlapci převezmo , historii institucionálního počítání v 50. a 60. letech. Praxe dotazování mozkových hlavolamů a hádanek o kandidáty na programování pracovních míst zřejmě pokračuje až do padesátých let. USA se pokusily počítačizovat svůj systém protivzdušné obrany a IBM odhadovala, že k práci budou potřebovat několik tisíc programátorů. Reakce byla šok a zděšení: na celém světě bylo jen několik desítek „profesionálních programátorů“. Bylo vyzkoušeno několik přístupů: testy abstraktní schopnosti programování, nábor matematiků jako programátorů, nábor šachistů a řešitelů křížovek a screening žadatelů s hádankami a hlavolamy.

Nakonec uspěli v náboru dostatečných programátorů k dokončení projektu, ale došlo k závěru, že žádná ze screeningových metod nebyla o nic lepší než šance na identifikaci rekrutů, kteří byli jako programátoři zvláště úspěšní.

56
Charles E. Grant

Jsou užitečné? Ne, fakt ne. Kdysi byli u Microsoftu tak běžní, že se jim dokonce říkalo „Otázky Microsoftu“, a byly o nich napsány knihy, tento je ve skutečnosti celkem dobře číst.

Jsou s nimi 2 problémy. Zaprvé, pokud žadatel provádí výzkum (a čte knihu), znají je stejně a za druhé, i když je mohou vyřešit, jak to ukazuje, že to bude dobrý dev/test/PM.

Z těchto důvodů se na společnost Microsoft zřídka ptají. Je mnohem lepší klást otázky týkající se kódování nebo řešení problémů, které nevyžadují „trikovou“ odpověď. Jinými slovy, musíte se zeptat na otázky, které vám umožní prozkoumat dovednosti a chování žadatele při pokusu o vyřešení problému - jako tazatel chci, aby kládli otázky, přicházeli s řešeními a poté zpětně sledovali, když přijdou na to problém, možná ani nenajde řešení v době, kdy mají, ale alespoň o tom jde rozumně. To odráží skutečnou práci. Nikdy jsem nemusel měřit 3 půllitry pomocí 2 kbelíků a kuře (nebo ať už byla jakákoli otázka).

To znamená, že mi bylo položeno několik trikových otázek ve svém čase, a nyní se považuji za odborníka na přepravu kuřat a lišek v malých člunech a na výpočet životnosti mouchy, která žije ve vlaku. Nikdy jsem tyto informace nemusel používat, ale kdo ví, možná jednoho dne ...

49
Steve

Možná budete chtít přečíst knihu Jak byste se pohybovali na hoře Fuji? . To jde do úvahy, že mnoho lidí používá hádanky v rozhovoru, a můj názor je, že je to kombinace chování kultura nákladu ( "Microsoft to dělá, a pokud chceme být stejně úspěšní jako jsou, pak raději udělejme to, co dělají ") a nebezpečí bratrství ("), bože! další chlap jim bude muset odpovědět! “).

Historie těchto otázek jako rozhovoru začala v 50. letech s William Shockley . Byli to rozumně obyčejní druh dotazovací otázky v Silicon Valley, které se tazatelé ptali, protože to dělali jiní tazatelé (a možná věděli něco, co tento tazatel nevěděl?). Shockley je zamýšlel jako test inteligence a otázka se dvěma kbelíky byla na jednom z původních Stanford Binet IQ test zpět v roce 1916.

Je pravděpodobné, že lidé, kteří dělají rozhovor, skutečně chtějí vidět, jak hledáte odpovědi, takže si nebudou moci spočítat otázky, například kolik plynových čerpadel je ve vašem městě. Tyto druhy problémů jsou Fermi Problémy . Dva zajímavé příspěvky z blogu od Jeff na toto téma jsou Nejtěžší otázka na rozhovor s rozhovorem a Jak dobrý jste odhadce? Část III .

Osobně mám na tyto druhy otázek nízký názor, protože je obvykle používají tazatelé, kteří nevědí, co dělají, ani jak hledat vývojáře. Pokud se chystáte pracovat pro společnost, která vyrábí hádanky/hádanky, patří k prasknutí historie spolu s „jaká je vaše největší slabost“ (odpovězte na tuto pravdu a špatně ukončíte svůj rozhovor) nebo „proč jsou kulaté poklopy "(ne všechny jsou).

26
Tangurena

Ostatní poskytli odpovědi, které jsem upvoting jako musí . Důvod, proč píšu jinou odpověď, je ten, že to, co chci říci, se pravděpodobně nehodí do komentáře, a protože se musí říci něco o tom, jak dobrý pohovor s programem může být.

V prvním dobrém rozhovoru si pamatuji, hodně jsme mluvili, bez spěchu. Nejprve na hodinu, v telefonu, o objektově orientovaném designu a výhodách a nevýhodách jeho implementace v C++. Poté jsem na místě hovořil s několika lidmi o jejich postupech vývoje softwaru, integraci, testování, správě verzí a správě konfigurace, o týmech a odpovědnostech, o technologii a designu. Byl to celodenní rozhovor, který zahrnoval oběd s lidmi, kteří se mnou vedli rozhovor. Ve zpětném pohledu to bylo všechno o tom, jestli bych se produktivně hodil do toho, co už dělali.

Od té doby jsou dobré rozhovory dlouhé, jedno až dvouhodinové rozhovory o vývoji softwaru. Nebyly nalezeny žádné otázky k řešení problémů, žádné hádanky ani žádné problémy s kódováním.

Kdybych měl dnes s někým pohovořit s někým na programování, postupoval bych rád. Chtěl bych požádat o názory na šíři témat a nechat stranou hloubku:

  1. Jaké jsou vaše preference programovacího jazyka? Proč?
  2. Jak přistupovat k řešení výjimek?
  3. Nejsou výhody vrstveného designu mýtem?
  4. Není trvalá integrace zátěží pro efektivitu?
  5. Kdokoli napsal kus kódu, měl by ho vlastnit, že?
  6. Co děláte, abyste se dostali do „toku“.
  7. Jak by měly být hlášené vady zahrnuty do projektového plánu?
  8. ...

Jedná se o otázky s více než jednou odpovědí a jedná se o témata, na která by měl mít vývojář softwaru informovaný názor. Upřímně souhlasím s odpověďmi, které zmiňují předchozí skutečné problémy, které se vyskytly jako téma konverzace (nikoli jako otázky).

Více vědeckých studií o účinném vývoji softwaru od Peopleware říká, že nejlepší programátoři jsou ti, kteří chápou dynamiku vývoje softwaru, i když nemají nejvyšší IQ. Raději bych si vzal nováčka, který se touží učit, než někoho, kdo má n letou zkušenost, která se scvrkává na 1 rok zkušeností opakován nkrát. Moje osobní zaujatost je vůči kandidátům, kteří mají tendenci myslet mimo krabici a zároveň vědí, jak se hodí do současné (mé) krabice.

17
Apalala

Mohou být užitečné při hodnocení dovedností řešení problémů, což je samozřejmě jeden z klíčových aspektů programování.

Jako tazatel mnoha lidí v průběhu let se obvykle nezeptám gotcha typové otázky podobné těm, které zřejmě popisujete, ale mohu se na něco zeptat a zeptat se: „jak byste to vyřešili ... . “.

Mým očekáváním v tomto případě je, že vás uslyším formulovat váš přístup k problému. Jaké další údaje byste se pokusili shromáždit? Jak byste vyzkoušeli své hypotézy atd.

13
sdg

To jsou jen postupy náboru voodoo. Ostatní lidé si kladou tyto otázky, takže se cítí, jako by měli. Vědí, že neodpovězení na otázku je „špatné“ a zodpovězení je „dobré“, ale nemohou vám říct, proč nad rámec neodpovězení, jako je „vývojář tyto dovednosti potřebuje“. Jsou to ztráta času a ukazatel, že tazatel není kompetentní tazatel.

8
Rein Henrichs

To je staré pravidlo, že musíte mít základní logické dovednosti; lze naučit cokoli jiného. Ale to není úplně pravda. Čtení logická logika, podmínky a smyčky, není stejné jako schopnost vyřešit logické puzzle.

To znamená, že ve dnech procedurálních jazyků bylo pravděpodobně pravdou, že někdo, kdo by mohl tyto problémy vyřešit, by měl vyšší sklon k tomu, aby byl schopen aplikovat jakýkoli problém, pokud jde o přepínače. Ale podle mého názoru vyžaduje OO/funkční programování inženýrské myšlení, které je zcela odlišné (i když nikoli protichůdné).

Osobně si nejsem jistý, zda chci práci ve společnosti, která si stále myslela, že logika je důležitější než praktické programovací dovednosti.

Zřeknutí se odpovědnosti: Jsem velmi dobrý v logických hádankách a pravděpodobně bych neměl svůj start v tomto oboru práce bez tohoto zdůvodnění.

5
pdr

Tazatel musel hovořit o řešení problémů a logických dovednostech, které jsou součástí každodenní práce programátora. Pokud máte problém, musíte být schopni jej analyzovat, rozdělit jej a napsat řešení pomocí nejoptimálnějšího přístupu.

Dalo by se argumentovat, jak dobře taková hádanka představuje vaši schopnost to udělat. Nevidím, jak je užitečné položit otázku skládačky místo toho, abych se ptal na problém s programováním ve skutečném životě.

2
Steven Jeuris

Programování není o psaní řádků kódu, ale o řešení problémů pro a od ostatních lidí (zákazníků, uživatelů atd.).

Stává se, že řešení pro programátory má podobu programu.

Proto je důležité mít schopnosti řešit problémy a proč je testováno.

Jak už bylo řečeno, nejsem si jistý, že řešení složité hádanky je nejlepší způsob, jak někoho posoudit.

1
Xavier T.

Dva body:

  1. Programování se liší od řešení hádanek. Steve McConnell jej dokonale vysvětluje na „Code Complete“:

    Co? Nemusíte být superinteligentní? Ne, ne. Nikdo není dost chytrý na programování počítačů. Plné porozumění průměrnému programu vyžaduje téměř neomezenou schopnost absorbovat detaily a stejnou kapacitu, aby je všechny pochopily současně. Způsob, jakým zaměřujete svou inteligenci, je důležitější, než kolik máte inteligence. Jak se zmínilo v kapitole 5, na přednášce Turing Award přednášející v roce 1972 vydal Edsger Dijkstra příspěvek nazvaný „The Humble Programmer“. Tvrdil, že většina programování je pokusem kompenzovat přísně omezenou velikost našich lebek. Lidé, kteří nejlépe programují, jsou lidé, kteří si uvědomují, jak jsou jejich mozky malé. Jsou skromní. Nejhorší v programování jsou lidé, kteří odmítají akceptovat skutečnost, že jejich mozek není stejný jako tento úkol. Jejich ega jim brání být skvělými programátory. Čím více budete naučte se kompenzovat svůj malý mozek, tím lépe budete programátorem. Čím jste skromnější, tím rychleji se zlepšíte.

  2. Takové hádanky mohou být užitečné během rozhovoru, ale pouze pokud se tazatel podívá na Proces, nevede sám k sobě.

V ideálním případě by však hádanky měly být podle mého názoru komplikovanější a související s programováním (jako je malý dvouhodinový projekt). Jde o to, že tazatelé jsou lidé a nemají dokonalé „dovednosti v oblasti pohovoru“.

1
klm123

Hádanky v rozhovorech spadají do dvou kategorií: „logické hádanky“ (jako ta, které jste byli požádáni) a „přemýšlejte jinak“. Kategorie, která se liší od ostatních (nejsem si jistá, zda se nazývají také postranní hádanky?), Jsou obvykle tohoto typu: Kolik listů je v tomto stromu? nebo Kolik Krejčí je ve vašem městě přítomno?

S logickými hádankami jsem v pohodě, protože mají maximálně jedno nebo možná dvě řešení a lze k nim dospět přímou logikou. A věřím, že logické hádanky jsou do určité míry dobré, protože proces potřebný k jejich řešení je do značné míry způsob, jakým si kodér musí myslet v reálném životě.

Druh „přemýšlejte jinak“ mě nijak nekončí, protože vás nutí dělat předpoklady a poté provádět některé výpočty na základě těchto předpokladů. Jednoduše řečeno, pokud váš tazatel souhlasí s vaší logikou, ale ne s vašimi předpoklady nebo naopak, ztratili jste. Je příliš mnoho prostoru pro tazatele, aby nesouhlasili s vaším řešením.

Když přijímám rozhovory, neptám se logických hádanek. Důvod: Většina uchazečů, dokonce i těch, kteří mají zkušenost 3-4 roky, selže nebo se vzdají, když je požádám, aby kódovali jednoduché učebnicové problémy, jako jsou série Fibonacci nebo palindromy.

Problém s hádankami je v obou směrech to, že ne-dobří programátoři vědí, že pouhým hledáním řešení takových běžných hádanek na internetu mohou tazatele zapůsobit. Jen velmi málo lidí bude dost upřímných, aby řekli, že řešení již znají.

1
DPD

Existuje několik různých způsobů, jak tyto problémy prozkoumat:

  1. Známe předchozí řešení. Ve filmu ... Die Hard with the Vengeance ... to mi vysvětlete ...? je příklad znát řešení pro případ, kdy jsou bahové 4,3 a 5. Někteří lidé budou moci rychle využít své vnitřní znalosti minulého řešení a v případě potřeby je upravit. To je obvykle to, co věřím, že by tazatel očekával, což může, ale nemusí být dobrý nápad.

  2. Kreativní improvizační dovednosti. To by byl případ, pokud neznáte předchozí řešení nebo dokonce nepoznáte problém jako něco, co by člověk mohl modelovat jako Diofantinovou rovnici. Otázkou tedy je, jak rychle můžete použít to, co je dáno, a najít kreativní řešení problému spolu s vysvětlením, proč to, co máte, je platné řešení problému.

Mohlo by to být to, co uspokojivým způsobem překoná jednu otázku, i když v každém případě je také test zkoušky komunikačních dovedností, protože se také může pokusit odpovědět: „Je to opravdu relevantní pro pozici, že jsem kdy byly tyto dovednosti naposledy použity? “ to může vést k zajímavému dialogu, pokud se tazatel otevře o tom, co přesně chtějí vidět, že by zde alternativní přístup mohl být považován za účinnější.

0
JB King

Není to nijak zvlášť složitý problém. Jsou vyžadovány pouze tři kroky a v každém kroku jsou pouze dvě možnosti. Byl bych překvapen, kdyby to žádný z mých kolegů nedokázal vyřešit ve velmi krátkém pořadí. V rozhovorech takové problémy nepředstavujeme, ale myslím si, že je rozumné takové otázky klást. Určitě jsou užitečnější než podrobné otázky týkající se syntaxe nebo knihoven.

OTOH, myslím, že problémy s programováním jsou užitečnější.

0
kevin cline

Musíte si uvědomit, že neexistuje způsob, jak s absolutní jistotou vědět, že někdo bude v práci dobrý. Zejména práci CS, protože mnoho výzev, které by tato úloha mohla mít, nelze předvídat.

Potenciální zaměstnavatel tedy musí hádat o své budoucí výkonnosti.

Stupně, doporučení a GPA lze získat s časem/námahou a sociálním inženýrstvím, pracovní zkušenost může být ozdobena a/nebo nepravdivá a standardizované testy jsou upřímně příliš základní na to, aby příliš ukazovaly na schopnosti. Takže životopis může naznačovat určité úrovně úsilí/závazku ve vaší historii, ale nic z toho nebude mluvit o vaší skutečné schopnosti řešit těžké problémy, které se objevují ve světě informatiky. Nedokážu vymyslet lepší způsob, jak předvídat tento druh schopností, než několik dobrých logických/matických/CSy hádanek.

Pamatujte si, že je to hádající hra, a realita je taková, že všechny stejné věci by někdo z nás raději najal někoho, kdo dokáže tyto hádanky vyřešit, než ten, který nedokáže.

Ano, mohli byste studovat hádanky s rozhovorem, ale myslím, že se ocitnete spálený, pokud se daná hádanka neshoduje s těmi, které studujete ... a pokud si nepamatujete hádanky a jejich řešení, možná si budete hádat sami z vás učiní chytřejšího člověka skutečným způsobem, jako by to mělo mít jakékoli skutečné vzdělání.

0
8steve8