it-swarm-eu.dev

Je „Pronájem pouze nejlepší“ skutečně praktickou radou pro běžné programování desktopových aplikací?

Na pozadí děláme aplikace pro desktopové inženýrství, s AutoCADem jako je UI, něco podobného etabs .

Jedna věc, která mě opravdu chybí, je, že je třeba najmout ty nejlepší vývojáře? Pro začátečníky máme při náboru velké potíže; většina životopisů, které vidíme, dělají buď jednoduché aplikace CRUD, nebo přizpůsobení SharePoint, které si nemyslím, že ve skutečnosti zahrnuje hodně tvrdého programování. Dokonce i ti, kterým voláme rozhovor, většina neumí Fibonacciho sekvenci a jednoduché binární vyhledávání, a jsme tak laskaví, abychom rozdali rady a výslovně vysvětlili problémy , takže kandidáti nemusí hledat slovník, aby ověřili, co znamená „Fibonacciho sekvence“.

To mě přimělo přemýšlet: Ano, potřebujeme určitou úroveň programovací způsobilosti, když děláme výpočetní geometrii/lineární programování, a potřebujeme určitou úroveň programovací aptitude při navrhování softwarové architektury/nebo při rozhodování, který softwarový model použít, ale za tím , mnoho našich kódů je pouze instalatérský kód (myslím), což může udělat někdo, kdo má nějaké znalosti programování.

Vzhledem k tomu, že nyní opravdu potřebujeme programovací talenty, a vzhledem k tomu, že najímání vývojářů superstar je velmi obtížné, chci snížit svůj standard a najmout pouze takzvané, v přímém rozporu s tím, co Joel káže .

Co myslíš?

Úpravy: Nemusíte přepisovat celou knihovnu výpočetní geometrie/lineárního programování; vše, co musíte udělat, pokud jde o mou aplikaci, je být schopen vědět, jak vrhnout dané problémy do vhodných výpočtových geometrických/lineárních programovacích termínů a vědět, kdy/jak použít stávající knihovny. Takže to není tak obtížné, jak se zdá.

61
Graviton

Navrhuji, abyste přestal příliš číst Joela. To, co napsal na svém blogu, je v rozporu s jeho odpověďmi na tomto webu, takže bych jeho slovo moc nebral.

Co dělá superhvězdu a proč je nutné mít jednu, otevírá dlouhou a nikde probíhající diskusi. Je to elitářství a není praktické.

To, co potřebujete, je osoba, která:

  1. Rád bych dělal to, co děláte
  2. Byl by vášnivým nadšeným programátorem
  3. Měl by potenciál dozvědět se, co to znamená, aby vaše práce byla správná

Zbytek nemá význam.

Nevěřili byste, kolik mladých absolventů tam není a nechtějí nic jiného, ​​než se ponořit do tohoto druhu CS-silného projektu a nikdy se podívat na kódování aplikací CRUD. Chvíle zpátky jsem byl jedním z nich, prakticky jsem snil o připojení k projektu o vývoji kompilátoru, ale nebyl jsem schopen jej najít. Proč nedáte šanci jednomu z nich?

Nevěřím, že AutoCAD byl napsán supermenem. Většinu úspěšných projektů dělali lidé, kteří prostě chtěli něco udělat a opravdu to chtěli.


většina životopisů, které vidíme, dělají buď jednoduché aplikace CRUD nebo přizpůsobení služby SharePoint

Co lze očekávat, pokud to většina pracovních míst vyžaduje? Lidé mohli studovat CS na unii a dokonce byli v tom opravdu dobří, ale nemůžete očekávat, že si to budou pamatovat, pokud to nikdy nepoužili v praktickém programování za 10 let. Je zřejmé, že nikdo nebude číst staré knihy CS každý rok, jen aby to udržel čerstvé, pokud se tyto znalosti nikde nepoužijí.

110
user8685

Kniha, která se mi opravdu líbí, je První porušení všech pravidel . Má spoustu informací o rozdílech mezi průměrnými manažery a dobrými manažery. Jeden z klíčových poznatků, které dobré manažery znovu a znovu říkali, shrnul jeden z nich ve větě , nikdy jsem nečekal příliš dlouho na to, abych našel ten pravý nájem, a já nikdy nevystřelil špatný pronájem dostatečně rychle. Ano, je frustrující trvat dlouho najmout, ale stojí za to chvíli.

Druhým bodem, který byste měli mít na paměti, je, že pokud se měří propustnost projektu, existuje vrchol produktivity pro týmy 5-8 lidí. K stejné produktivitě se nevrátíte, dokud nemáte tým více než 20 lidí. Buďte velmi, velmi opatrní ohledně růstu týmu za velikost, ve které funguje dynamika malého týmu. A pokud se chystáte zůstat pod tímto prahem, pak opravdu chcete, aby ti 5-8 lidé byli dobří.

Oba body silně hovoří o tom, jak se držet za správné nájemné.

41
btilly

Každý tvrdí, že „najímá pouze první 1 percentil“. Pokud by to byla pravda, 100% zaměstnaných lidí by bylo v „prvním 1 percentilu“ všech lidí, takže 99% všech lidí by bylo nezaměstnaných (v jakémkoli daném oboru). Protože tomu tak zjevně není a my všichni jsme zkušení lidé, kteří zjevně nejsou v této skupině (proč jinak položíte tuto otázku vůbec ...) víme, že to není pravda.

Ve skutečnosti by organizace složené pouze z takových lidí byly velmi nestabilní. Příliš mnoho ega, příliš mnoho protichůdných myšlenek. Buď by se rozpadl, protože každý dělá svou vlastní věc, zapadá do nikdy nekončících teoretických diskusí o relativních výhodách všeho, nebo se vyvine v neustálé křiklavé utkání jako nálada nálady, kdykoli je třeba učinit rozhodnutí.

26
jwenting

První věc, kterou se musíte zeptat, je, proč dostáváte životopisy, které nesplňují požadované standardy. Pracoval jsem se spoustou dobrých lidí, takže jsou tam a aplikace mi zní velmi zajímavě. Pokud nemůžete přimět lidi, kteří dokážou provádět Fibonacciho sekvence a binární vyhledávání (což je složitější, než se zdá; podle Knutha to bylo několik let mezi jeho první publikací a první správnou publikací), děláte něco, abyste řídili dobré pryč.

Žádáte více dovedností, než jste ochotni zaplatit? Inzerujete na špatných místech? Je vaše společnost neatraktivní podle místa nebo reputace? Toto je váš první a nejzákladnější problém a ten, který je naléhavě nutné vyřešit. Vy a vaši kolegové bezpochyby znáte dobré lidi, kteří pro vás nepracují. Ukažte jim, co máte, a zeptejte se jich, zda budou v pokušení, a pokud ne, proč ne. Možná jste příliš blízko problému, abyste tomu nerozuměli.

Nenajímejte lidi, protože jsou to nejlepší, co se používá. Najměte si lidi, protože budou moci udělat něco, co chcete udělat. Pokud si najmete průměrné, protože to platí vše, pak pomalu ztratíte dobrých lidí a skončíte s lidmi, jejichž algebra je roztřesená a snaží se dělat věci s výpočetní geometrií. (Najímat průměrného, ​​protože máte práci pro pár průměrných programátorů, je další věc, ale musíte být schopni najmout kvalitní lidi tam, kde je potřebujete.)

25
David Thornley

"většina nemůže udělat Fibonacciho sekvenci a jednoduché binární vyhledávání"

Vaše kritéria jsou určitě nesprávná. V mé skupině jsme všichni fyzici nebo inženýři. Vsadím se, že nikdo nemohl provádět binární vyhledávání, protože jsme nechodili na kurzy CS a ve skutečném životě k tomu využíváme knihovnu. Dokonce bych řekl: někdo, kdo píše binsearch, neví, jak se zaměřit na důležité věci.

Je mnohem důležitější, pokud je kandidát chytrý a hodí se do skupiny. Pokud si chcete ověřit jeho programovací talent, dejte mu práci dělat doma. Všimněte si, jak dlouho mu to trvalo, a prodiskutujte výsledky, abyste zjistili, zda se jedná o skutečnou práci kandidátů.

18
michael

Myslím, že „najímání toho nejlepšího“ se stává příliš kultem.

Většina programovacích prací je rutinní a není kreativní. I při práci na opravdu kreativních nových projektech. Většina z nich je humdrum a často je založena na vzorcích. to platí zejména pro uživatelské rozhraní.

Většina moderních systémů také vyžaduje, aby je psalo tolik lidí, že ze své podstaty nemohou být všichni nejlepší. Většina lidí je průměrná, i když nejsou, stále musí dělat spoustu „průměrných“ úkolů.

Požadavek na základní způsobilost a minimální rozumné požadavky však není nepřiměřený a není to něco, s čím byste měli dělat kompromisy.

Přemýšlejte o rutinní operaci: V závislosti na vaší toleranci k riziku byste pravděpodobně raději nechali provést průměrný lékař, než čekat 10 let, než na to děkan lékařské fakulty bude mít čas. To neznamená, že byste měli nechat řádného provedení operace.

13
Uri

„Najímání toho nejlepšího“ znamená „najímání toho nejlepšího, co je v současné době k dispozici zhruba tam, kde jsme“, a to znamená různé věci pro různé společnosti. Někteří chtějí rockstar kodéry, jiní chtějí pečlivé softwarové inženýry a další po silnici chce zkušené softwarové řemeslníky. Neexistuje žádný „univerzální nejlepší“, tak mějte na paměti, a možná vaše specifikace práce naznačuje, že hledáte jeden typ programátora a rozhovor říká, že hledáte jiného programátora. Najednou nedostanete zápasy.

To znamená, že nemám rád práci s takovými programátory. So-tak tedy nemá nic společného se zkušeností (možná programovali už 20 let a stále to není moc dobré), ale vše, co souvisí s nadáním a nadšením. Pokud to tak ovlivní některou z těchto dvou, máte problém. Také nemá smysl najímat někoho, jehož příspěvky musí být přepracovány ostatními členy týmu, protože kód není dost dobrý. Více zadků na sedadlech není vždy v odpovědi, více zadků na sedadlech může bohužel také znamenat více práce pro lepší členy týmu, když se snaží dělat svou práci a uklidit nepořádek tak dodaný programátor.

Někteří lidé nepocházejí jako rockové hvězdy, ale jsou to solidní programátoři na střední úrovni. Je dobré mít v týmu a to není to, co mám na mysli s „tak programátorem“. Ten je někdo, kdo se sotva vyhýbá propouštění každý rok v době kontroly výkonu.

8
Timo Geusch

Jako typ manažera souhlasím s tím, že najímání „nejlepších 1%“ není praktické a není nutné. Moje rada by byla najmout ten pravý tým, který bude stavět a udržovat váš produkt (mohou to být dva velmi odlišné týmy, protože build versus údržba se velmi liší v jejich potřebách)

Chtěl bych důrazně navrhnout, abyste identifikovali lidi, které v současné době máte ve svém týmu a kteří jsou „klíčovými lidmi“ (např. Udělejte věci, mají dobré postoje, dokážete dobře pracovat s požadavky na nejistotu/vysokou úroveň atd.) A pak najmout lidi, které mají v minulosti (a samozřejmě, respekt). To eliminuje spoustu nejistoty ohledně procesu pohovoru a pomáhá gelovat tým.

Také více „dlouhodobější“ - investujte velké prostředky do interního programu. Pokud má váš programový tým 20 lidí, získejte 5 stážistů ročně a dejte jim skutečnou práci. Přiveďte zpět jeden nebo dva, které se vám líbí každý rok, a přiveďte dalších 5 náhodných proměnných. Toto je pravděpodobně nejlepší způsob, jak udržet svůj tým plný dobrých programátorů. Poté si můžete příležitostně najmout exteriér a zvýšit laťku pro tyto kandidáty.

Jak již bylo uvedeno, věnujte pozornost procesu pohovoru. Zajistěte, aby kandidáti psali kód (nebo lépe, projděte si jejich řešení problému „1 hod. Vzít domů“), aby je obědvali s týmem. Seznamte se s jejich technickými a mezilidskými schopnostmi. A nikdy se nebojte říkat „ne“, i když jste zoufalí o dalších 20 lidí pro velký projekt, který začne příští týden.

6
Al Biglan

Podle mých zkušeností se Paretto Principle vztahuje i na programování: 80% práce vykonává 20% vývojářů a naopak. OK čísla mohou být přehnaná. Ve skutečnosti budete mít něco jako 20% zaměstnanců, kteří vykonávají 50% práce (prací mám na mysli dobrou práci, nejen řádky kódu). Je to vlastně spíš zvonová křivka. Takže v týmu 10 bude mít 1 hrdina, 2 skvělí kluci, 4 průměrní a 2-3 patetičtí.

Mnoho společností používá Bellovu křivku k vážení hodnocení. Takže bez ohledu na to, jak jsou vaši kandidáti jasní, klesnou na jejich úroveň. Nemůžete mít tým, kde jsou všichni na stejné úrovni. To se nestane.

6
DPD

Tady už je spousta odpovědí, ale myslím, že je tu ještě otázka, o které je třeba diskutovat: dopad, který má pronájem takzvaných chlapů na kvalitu vašeho softwaru a jak to ztěžuje váš život jako vedoucího.

Odpověď na „existuje potřeba najmout ty nejlepší vývojáře?“ je vždy velký tuk ANO. Ve skutečnosti to však není vždy možné. Nebezpečnou chybou, o které si myslím, že děláte i při zvažování této otázky, je myslet si, že „náš software je tak jednoduchý, že to dokáže i tak člověk“. To je špatně.

Váš software bude hotový, o tom nepochybujte, ale očekávejte velmi odlišné výsledky od vynikajícího týmu než od takového týmu. Budete mít více chyb, více problémů s výkonem, více problémů s údržbou a škálovatelností atd. Budete muset hlídat své tak kluky kvůli složitějším problémům. Budete muset hlídat tak kluky, i když je to správné rozhodnutí o architektuře.

Pokud to přijmete a jste připraveni to zvládnout, je to v pořádku. Jen buďte připraveni na proces a na výsledky.

4
hbatista

Název vašeho dotazu zmiňuje „Normální desktopová aplikace“, ale váš text hovoří o tom, že je třeba aplikovat znalosti výpočetní geometrie a lineárního programování. To jsou oblasti aplikací, které vytvořily obrovské, víceleté výzkumné programy s masivními společenskými důsledky jakéhokoli pokroku (stažení, lineární abstrakty programování přidělování zdrojů). V důsledku toho existuje mnoho sofistikovaných přístupů k řešení problémů v těchto oblastech, které fungují velmi dobře.

Špatný nájem

  • možná ani neslyšel o těchto třídách problémů,
  • nemusí znát běžná řešení,
  • pravděpodobně by nevěděla o lepších věcech, které tam jsou (nápověda: většina undergradů o slyšených věcech nikdy neslyší, pokud vůbec slyší o problémech), a
  • téměř jistě by stálo implementaci takových věcí (vzhledem k tomu, že jsem viděl některé z nich dát celý postgraduální seminář v datových strukturách se hodí, včetně profesora).

Jinými slovy, přemýšlejte o tom, zda opravdu pracujete na něčem pro chodce. Pokud jste, skvělé, pronájem by měl být mnohem jednodušší. Pokud nejste, vydržte pro někoho, kdo může dělat, co potřebujete.

3
Phil Miller

Pojďme o krok zpět.

Co se snažíme dělat? Napište software.

Proč si myslíme, že si musíme najmout to nejlepší? Protože ten bláznivý Arnoldův kluk nemohl proniknout z mokrého papírového sáčku a nyní je SQL celý zašurvený a nemohu se přihlásit v.

Dobře, tak co je nejlepší ? Nevím, je to pravděpodobně někdo, kdo chce hodně peněz a má pokračování šest stop dlouhé s velkým portfoliem a pracoval na google nebo tak něco. Měl by mít titul a možná nějaké dopisy na konci svého jména. Jo, to mi připadá jako nejlepší a tím nejlepším mám na mysli někoho, kdo není tak děsivý Arnoldův kluk. Jo, a on by měl vědět, jak udělat nějaké opravdu tvrdé svinstvo, o kterém jsem ve škole slyšel, jako je „napsat bublinu“ nebo co říkají. Požádám jednoho z ostatních chlapů, aby jmenoval pár složitých věcí, které museli ve škole udělat, jo.

Zní to, jako bys prostě nechtěl toho bláznivého Arnoldova chlapce? Chtěl bys? Jsem unavený tím, že mám kód na buggy, všechno trvá věčně, než se to povede, a tito noví chlapi, s nimiž jsem vedl rozhovor, mi říkají, že musím všechno přepsat!

Správně, tak co žádáte o zrůdné Arnoldovo dítě? Vytvořte PHP web, napište jQuery, nechte PHP udělat nějaké základní CRUD s MSSQL a měnit barvy pozadí kolem.

Zní to jako úkol dobře vhodný výhradně pro ty nejlepší? Jsem si jistý, že to nejlepší umí, ale pravděpodobně to může udělat kdokoli, kdo má tu správnou sadu dovedností, která tomu odpovídá.

Takže nepotřebujete to nejlepší? Správně, prostě potřebuji někoho, kdo má sadu dovedností, která splňuje mé cíle.

Oh. Jo.

3
Incognito

Myslím, že není opravdu problém najmout skvělého vývojáře. Skutečnou výzvou je přimět je, aby pro vás pracovali chtějí.

Je třeba najmout ty nejlepší?
Věřím. Skvělý vývojář není jen ten, který všechno zvládne včas. Nejen takový jedinec je mnohem produktivnější než ostatní. Skvělý vývojář také vede příklad a jednoduše inspiruje ostatní členy týmu. Ostatní mohli při práci s nimi značně pokročit.

Dobře, takže se chystáte snížit své standardy. To je v pohodě, pravděpodobně si změníte názor poté, co najmete opravdu mizerného člověka. Ten, který bezchybně zodpoví všechny vaše otázky CS, ale kdo nemůže opravdu napsat jednu samostatnou linku výrobního kódu. Hodně štěstí :)

3
Paweł Dyda

Určitě nejsem superstarový programátor podle Joelových standardů. Přesto jsem během své 20leté kariéry jako vývojář napsal docela úspěšné projekty. Mohl jsem vyřešit vaše otázky. Ale méně z mých zkušeností v práci, kde ve skutečnosti je mnohem složitější práce prováděna vyžádáním vaší databáze nebo funkce knihovny, aby to udělala.

Ale pokud se rozhodnete najmout méně zkušené lidi, měli byste zvážit použití technologií, které se snadno ovládají. Například pokud jste plánovali použít C++ pro celý projekt, pak omezte část C++ na knihovny napsané vašimi nejlepšími lidmi a nechte ostatní implementovat uživatelské rozhraní v jazyce Visual Basic.

2
thorsten müller

Zapište hodnoty, které hledáte, u zaměstnance, který se připojí k vašim řadám.

Když jedinou oceněnou hodnotou je programovací schopnost, ocitnete se rychle obklopeni lidmi, kteří si to váží. Protože většina skutečně kvalifikovaných programátorů má propracovanější systém hodnot, zdrží se připojení k vašemu týmu.

Pravděpodobně však hledáte inovativní, kreativní, důvěryhodné, erudované, zvědavé, samoučící se, společenské, kompetentní a nadšené lidi. Ukažte, že vaše společnost tyto hodnoty chápe a respektuje a je ochotna svým zaměstnancům pomoci je dále rozvíjet.

Pochopte a přijměte hodnoty svých současných zaměstnanců a sdělte je ve svých žádostech o zaměstnání. Dobré společnosti s udržitelným hodnotovým systémem přitahují dobré zaměstnance.

2
Dibbeke

Určitě byste se měli snažit najmout jen to nejlepší. To automaticky neznamená, že v tom budete úspěšní - je tu jen tolik „těch nejlepších“, kteří budou obcházet, a v bitvě budou vítězové a poražení, aby je přilákali. Hodně z toho přijde z vaší schopnosti a ochoty tvrdě pracovat na problému a ze zdrojů, které máte k dispozici.

Vzdát se, než začnete, je nejjistější způsob, jak ztratit.

1
Mark Ransom

Binární vyhledávání je zajímavý problém, protože je dobře známo, že většina programátorů bude ve skutečnosti usilovat o jeho správné napsání ( Bently o tom píše v Programming Pearls ). Možná to není tak špatné to otestovat, pokud nevylučujete kandidáty na základě jejich neúspěchu vyřešit. Pokud to vyřeší rychle a správně, pak alespoň naznačuje, jaký typ programátoru jsou, takže v tomto konkrétním případě máte více informací.

1
Anon

musíte najmout to nejlepší. ale termín byl mnohokrát citován mimo kontext. musíte najít nejlepšího kandidáta s dovednostmi potřebnými pro tuto pozici, a ne nejlepšího programátora v celkovém smyslu. Vývoj softwaru je široký a ne každá pozice vyžaduje stejné technické znalosti.

Zeptejte se sami sebe na tuto otázku (už jste to udělali ..): Pokud máte jiného inženýra na stejné pozici po dobu 5 let, očekáváte, že si bude pamatovat fibonanciho série a binární vyhledávání?

pokud odpověď zní ne, změňte vzorec rozhovoru. Možná budete potřebovat znát tucet vyhledávacích algoritmů, pokud chcete pracovat na vyhledávací aplikaci, jako je google nebo bing. Všichni ostatní používají pouze map.get ("");

zaměřte své rozhovory na to, co pozice potřebuje, nikoli na dobrého programátora učebnic.

1
gee

Pokud vám opravdu nezáleží na kvalitě, navrhl bych použít jeden z outsourcingových webů a začít s malými projekty. Pak je můžete zaplatit, pokud mohou vykonat práci, a máte snadný způsob, jak na kauci, pokud to nedokážou.

Ptám se však, zda v aplikacích počítačového inženýrství existuje opravdu mnoho rutinního kódování. Mohou být velmi složité a většina programátorů není schopna zvládat složitost. Dalo by se snadno vytvořit spoustu okamžitého dědického kódu, který bude váš tým v příštích letech svázat. Obecně platí, že první nájemné nového projektu je nejdůležitější a nastaví tón celého projektu.

1
Brian Slesinsky

V každé organizaci máte lidi s většími zkušenostmi a lidi s méně. Nejen to, ale odborník v jednom oboru může být nováček v jiném. Určitě nadšený amatér může udělat více škody než užitku na kódové základně, ale tak se to naučí - od opravování chyb a diskuse o svých zkušenostech se svými zkušenějšími kolegy.

Mým návrhem by bylo, že se místo snahy najmout superhvězdy pokusíte najmout lidi, kteří jsou rozumně jasní, vejdou se do vaší firemní kultury, chtějí se učit a ocenit svá vlastní omezení.

1
Mark Booth

Úplně souhlasím s většinou výše uvedených komentářů, které se týkají přizpůsobení osoby problému. Zpravidla to vede k dlouhodobému vztahu, než k najímání superhvězdy, která by pracovala na běžném problému - což ho jen frustruje, aby odešel rychle.
Poté, co jste to řekli, byste se měli vždy pokusit najmout pro vaši společnost spíše než konkrétní pozici. Protože ten samý chlap se dříve či později přepne mezi týmy s osobními kontakty atd. A může se ukázat jako mrtvá váha někde jinde. Ujistěte se, že vaše společnost má velmi přísné interní pokyny pro převod a že máte jasnou představu o tom, co budete dělat ve svém týmu v příštích několika letech, než najmete osobu, o které si myslíte, že by nemusela vyhovět baru společnosti (ale vyřeší aktuální problém) ). Viděl jsem příliš mnoho případů, kdy průměrnost vývojářů způsobila, že tým tvrdě pracoval, aby se kolem nich hodil.