Ako skrotiť juniora?

Ako sa dostať do veľkej spoločnosti, ak ste junior? Ako najať slušného juniora, ak ste veľká spoločnosť? Pod strihom vám poviem náš príbeh o najímaní začiatočníkov na frontende: ako sme prešli testovacími úlohami, pripravili sa na vedenie pohovorov a vybudovali mentorský program pre rozvoj a začlenenie nováčikov, a tiež prečo sa štandardné otázky na pohovory nezobrazujú nefunguje.

Ako skrotiť juniora?
Snažím sa skrotiť Juniora

Ahoj! Volám sa Pavel a robím front-end v tíme Wrike. Vytvárame systém pre riadenie projektov a spoluprácu. Webu sa venujem od roku 2010, pôsobil som 3 roky v zahraničí, zúčastnil som sa niekoľkých startupov a na univerzite som viedol kurz webových technológií. Vo firme sa venujem rozvoju technických kurzov a mentoringovému programu Wrike pre juniorov, ako aj ich priamemu náboru.

Prečo sme vôbec uvažovali o angažovaní juniorov?

Až donedávna sme pre frontend prijímali vývojárov na strednej alebo vyššej úrovni – dostatočne nezávislých na to, aby po pripojení robili produktové úlohy. Začiatkom tohto roka sme si uvedomili, že túto politiku chceme zmeniť: v priebehu roka sa počet našich produktových tímov takmer zdvojnásobil, počet front-end vývojárov sa priblížil k stovke a v blízkej budúcnosti to všetko bude treba znova zdvojnásobiť. Práce je veľa, voľných rúk málo a na trhu je ich ešte menej, preto sme sa rozhodli obrátiť na chalanov, ktorí svoju cestu vpredu len začínajú a uvedomili sme si, že sme pripravení investovať do ich rozvoj.

Kto je junior?

Toto je úplne prvá otázka, ktorú sme si položili. Existujú rôzne kritériá, ale najjednoduchší a najzrozumiteľnejší princíp je tento:

Juniorovi treba vysvetliť, aká funkcia a ako na to. Stredovi treba vysvetliť, aká funkcia je potrebná, a implementáciu si vymyslí sám. Sám signátor vám vysvetlí, prečo túto funkciu vôbec netreba robiť.

Tak či onak, junior je vývojár, ktorý potrebuje poradiť, ako implementovať to či ono riešenie. Na čom sme sa rozhodli stavať:

  1. Junior je niekto, kto sa chce rozvíjať a je pripravený na tom tvrdo pracovať;
  2. Nie vždy vie, ktorým smerom sa chce rozvíjať;
  3. Potrebuje radu a hľadá pomoc zvonku – od svojho vedúceho, mentora alebo v komunite.

Mali sme tiež niekoľko hypotéz:

  1. Na júnové stanovisko sa strhne búrka ohlasov. Náhodné odpovede musíte filtrovať vo fáze odosielania životopisu;
  2. Primárny filter nepomôže. — je potrebných viac testovacích úloh;
  3. Testovacie úlohy vystrašia každého - nie sú potrebné.

A samozrejme, mali sme cieľ: 4 juniori za 3 týždne.

S týmto poznaním sme začali experimentovať. Plán bol jednoduchý: začnite s čo najširším lievikom a snažte sa ho postupne zužovať, aby ste tok spracovali, no neznížili ho na 1 kandidáta za týždeň.

Zverejňujeme voľné pracovné miesto

Pre spoločnosť: Odpovedí budú stovky! Zamyslite sa nad filtrom.

Pre juniorov: Nebojte sa dotazníka pred odoslaním životopisu a zadania testu – je to znak toho, že sa o vás spoločnosť postarala a proces dobre nastavila.

Prvý deň sme dostali asi 70 životopisov od kandidátov „so znalosťou JavaScriptu“. A potom znova. A ďalej. Fyzicky sme nemohli pozvať všetkých do kancelárie na pohovor a vybrali sme z nich chlapcov s najlepšími pet projektmi, live Github alebo aspoň skúsenosťami.

Ale hlavný záver, ktorý sme si urobili hneď prvý deň, bol, že začala búrka. Teraz je čas pridať dotazník pred odoslaním životopisu. Jej cieľom bolo vyradiť kandidátov, ktorí neboli ochotní vynaložiť minimálne úsilie na zaslanie životopisu, a tých, ktorí nemali znalosti a kontext, aby si správne odpovede aspoň vygooglili.

Obsahoval štandardné otázky o JS, layoute, webe, informatike – pozná ich každý, kto si predstaví, čo sa pýta na front-end pohovore. Aký je rozdiel medzi let/var/const? Ako môžem použiť štýly iba na obrazovky menšie ako 600 pixelov na šírku? Tieto otázky sme nechceli klásť na technickom pohovore – prax ukázala, že na ne možno odpovedať po 2-3 rozhovoroch bez toho, aby sme vôbec rozumeli vývoju. Ale dokázali nám na začiatku ukázať, či kandidát v zásade chápe súvislosti.

V každej kategórii sme pripravili 3-5 otázok a deň po dni sme ich zostavu menili v odpovedacom formulári, až kým sme nevyradili najpriechodnejšie a najťažšie. To nám umožnilo znížiť prietok - za 3 týždne sme dostali 122 kandidátov, s ktorým by sme mohli ďalej pracovať. Boli to študenti IT; chlapov, ktorí sa chceli posunúť dopredu z backendu; robotníci alebo inžinieri vo veku 25-35 rokov, ktorí chceli radikálne zmeniť svoje povolanie a vynaložili rôzne úsilie na sebavzdelávanie, kurzy a stáže.

Lepšie sa spoznať

Pre spoločnosť: Testovacia úloha neodrádza kandidátov, ale pomáha skrátiť lievik.

Pre juniorov: Nekopírujte a nevkladajte testovacie – je to viditeľné. A majte svoj github v poriadku!

Ak by sme všetkých zavolali na technický pohovor, museli by sme urobiť asi 40 pohovorov týždenne len pre juniorov a len na frontende. Preto sme sa rozhodli otestovať druhú hypotézu – o testovacej úlohe.

Čo bolo pre nás v teste dôležité:

  1. Vybudujte dobrú škálovateľnú architektúru, ale bez nadmerného inžinierstva;
  2. Je lepšie trvať dlhšie, ale robiť to dobre, ako zložiť remeslo cez noc a poslať ho s komentárom „Určite to dokončím“;
  3. História vývoja v Git je inžinierska kultúra, iteratívny vývoj a skutočnosť, že riešenie nebolo očividne kopírované.

Zhodli sme sa, že sa chceme pozrieť na jeden algoritmický problém a malú webovú aplikáciu. Algoritmické boli pripravené na úrovni laboratórií základnej úrovne - binárne vyhľadávanie, triedenie, kontrola anagramov, práca so zoznamami a stromami. Nakoniec sme sa rozhodli pre binárne vyhľadávanie ako prvú skúšobnú možnosť. Webová aplikácia musela byť tic-tac-toe pomocou akéhokoľvek frameworku (alebo bez neho).

Takmer polovica zvyšných chalanov splnila testovaciu úlohu – poslali nám riešenia 54 kandidátov. Neuveriteľný pohľad - koľko implementácií piškvoriek pripravených na kopírovanie a prilepenie je na internete?

KoľkoV skutočnosti sa zdá, že sú len 3. A v drvivej väčšine rozhodnutí boli práve tieto 3 možnosti.
Čo sa mi nepáčilo:

  • copy-paste alebo vývoj založený na rovnakom návode bez vlastnej architektúry;
  • obe úlohy sú v rovnakom úložisku v rôznych priečinkoch, samozrejme neexistuje žiadna história odovzdania;
  • špinavý kód, porušenie DRY, nedostatok formátovania;
  • zmes modelu, zobrazenia a ovládača do jednej triedy s dĺžkou stoviek riadkov kódu;
  • nedostatočné pochopenie testovania jednotiek;
  • „head-on“ riešenie je pevný kód matice 3x3 výherných kombinácií, ktorú bude dosť ťažké rozšíriť napríklad na 10x10.

Pozornosť sme venovali aj susedným úložiskám – skvelé projekty pre domácich miláčikov boli plusom a množstvo testovacích úloh od iných spoločností bolo skôr budíčkom: prečo sa tam kandidát nemohol dostať?

Výsledkom bolo, že sme našli skvelé možnosti v React, Angular, Vanilla JS – bolo ich 29. A rozhodli sme sa pozvať ešte jedného kandidáta bez testovania pre jeho veľmi cool pet projekty. Naša hypotéza o výhodnosti testových úloh sa potvrdila.

Technický rozhovor

Pre spoločnosť: Nie sú to strední/seniori, ktorí k vám prišli! Potrebujeme individuálnejší prístup.

Pre juniorov: Pamätajte, že toto nie je skúška – nesnažte sa mlčať na C ani bombardovať profesora prúdom všetkých vašich možných vedomostí, aby sa zmiatol a dal „výborne“.

Čo chceme pochopiť na technickom pohovore? Jednoduchá vec – ako rozmýšľa kandidát. Pravdepodobne má nejaké tvrdé zručnosti, ak prešiel prvými fázami výberu - ešte sa uvidí, či ich vie použiť. Dohodli sme sa na 3 úlohách.

Prvá je o algoritmoch a dátových štruktúrach. Perom, na papieri, v pseudojazyku a pomocou nákresov sme prišli na to, ako skopírovať strom alebo ako odstrániť prvok z jedného prepojeného zoznamu. Nepríjemným zistením bolo, že nie každý rozumie rekurzii a tomu, ako fungujú referencie.

Druhým je živé kódovanie. Išli sme do codewars.com, zvolili jednoduché veci, ako je triedenie poľa slov podľa posledného písmena, a 30-40 minút sa spolu s kandidátom snažili, aby všetky testy prebehli úspešne. Zdalo sa, že od chlapov, ktorí ovládali piškvorky, by nemalo byť žiadne prekvapenie – no v praxi si nie každý dokázal uvedomiť, že hodnota by mala byť uložená v premennej a funkcia by mala niečo vrátiť cez return. Aj keď úprimne dúfam, že to bola nervozita a chalani si s týmito úlohami poradili v ľahších podmienkach.

Nakoniec, tretí je trochu o architektúre. Diskutovali sme o tom, ako vytvoriť vyhľadávací panel, ako funguje debounce, ako vykresliť rôzne miniaplikácie v tipoch na vyhľadávanie, ako môže frontend interagovať s backendom. Bolo tam veľa zaujímavých riešení, vrátane vykresľovania na strane servera a webových soketov.

Pomocou tohto dizajnu sme uskutočnili 21 rozhovorov. Publikum bolo úplne rôznorodé – pozrime sa na komiksy:

  1. "raketa". Nikdy sa neupokojí, do všetkého sa zapletie a počas rozhovoru vás zavalí prúdom myšlienok, ktoré ani priamo nesúvisia s položenou otázkou. Ak by to bolo na univerzite, bol by to známy pokus demonštrovať všetky svoje znalosti, keď si o lístku, na ktorý ste natrafili, pamätáte len to, že ste sa včera večer rozhodli neštudovať ho – stále nemôžete získať to von.
  2. "Groot". Je dosť ťažké dostať sa s ním do kontaktu, pretože je Groot. Počas rozhovoru musíte stráviť dlhý čas snahou získať odpovede slovo po slove. Je dobré, ak je to len stupor - inak to bude pre vás pri každodennej práci veľmi ťažké.
  3. "drax". Kedysi som pracoval v nákladnej doprave a z hľadiska programovania som sa JS naučil iba na Stackoverflow, takže nie vždy rozumiem tomu, o čom sa na pohovore diskutuje. Zároveň je to dobrý človek, má tie najlepšie úmysly a chce sa stať skvelým front-end vývojárom.
  4. No, pravdepodobne "Pán hviezd". Celkovo dobrý kandidát, s ktorým môžete rokovať a budovať dialóg.

Na záver nášho výskumu 7 kandidátov sa dostali do finále, kde potvrdili svoje tvrdé schopnosti skvelou testovacou úlohou a dobrými odpoveďami na pohovor.

Kultúrne prispôsobenie

Pre spoločnosť: Pracuješ s ním! Je kandidát ochotný na svojom rozvoji extrémne tvrdo pracovať? Naozaj zapadne do tímu?

Pre juniorov: Pracujete s nimi! Je firma naozaj pripravená investovať do rastu juniorov, alebo na vás jednoducho zvalí všetku špinavú prácu za nízky plat?

Každý junior okrem produktového tímu, ktorého vedenie musí súhlasiť s jeho prijatím, dostane mentora. Úlohou mentora je previesť ho trojmesačným procesom získavania a zlepšovania tvrdých zručností. Preto sme do každého kultúrneho fitka prišli ako mentori a odpovedali na otázku: „Prevezmem zodpovednosť za vývoj kandidáta do 3 mesiacov podľa nášho plánu?“

Táto etapa prebehla bez zvláštnych čŕt a nakoniec nás priviedla 4 ponuky, z ktorých boli 3 prijaté a chalani sa prihlásili do tímov.

Život po ponuke

Pre spoločnosť: Postarajte sa o svojich juniorov alebo iní!

Pre juniorov: AAAAAAAAAAAA!!!

Keď príde nový zamestnanec, treba ho začleniť – zoznámiť sa s procesmi, povedať mu, ako všetko vo firme a v tíme funguje a ako by mal fungovať celkovo. Keď vyjde junior, musíte pochopiť, ako ho rozvíjať.

Keď sme sa nad tým zamysleli, vyšiel nám zoznam 26 zručností, ktoré by podľa nás mal mať junior do konca trojmesačného onboardingového obdobia. To zahŕňalo tvrdé zručnosti (podľa nášho stacku), znalosť našich procesov, Scrumu, infraštruktúry a architektúry projektu. Spojili sme ich do cestovnej mapy, rozloženej na 3 mesiace.

Ako skrotiť juniora?

Tu je napríklad cestovná mapa môjho juniora

Každému juniorovi pridelíme mentora, ktorý s ním pracuje individuálne. V závislosti od mentora a aktuálnej úrovne kandidáta sa stretnutia môžu konať 1 až 5-krát týždenne po 1 hodine. Mentori sú dobrovoľní front-end vývojári, ktorí chcú robiť niečo viac, než len písať kód.

Časť záťaže pre mentorov je odstránená kurzami na našom stacku - Dart, Angular. Pravidelne sa konajú kurzy pre malé skupiny 4-6 osôb, kde študenti študujú bez prerušenia práce.

V priebehu 3 mesiacov pravidelne zbierame spätnú väzbu od juniorov, ich mentorov a leadov a prispôsobujeme proces individuálne. Načerpané zručnosti sa kontrolujú 1-2 krát počas celého obdobia, rovnaká kontrola sa vykonáva na konci - na základe nich sa vytvárajú odporúčania, čo presne je potrebné zlepšiť.

Záver

Pre spoločnosť: Oplatí sa investovať do juniorov? Áno!

Pre juniorov: Hľadajte spoločnosti, ktoré starostlivo vyberajú kandidátov a vedia ich rozvíjať

Počas 3 mesiacov sme skontrolovali 122 dotazníkov, 54 testovacích úloh a uskutočnili 21 technických rozhovorov. To nám prinieslo 3 skvelých juniorov, ktorí teraz dokončili polovicu svojich onboardingových a akceleračných plánov. V našom projekte, kde je len na frontende viac ako 2 000 000 riadkov kódu a viac ako 400 úložísk, už dokončujú reálne produktové úlohy.

Zistili sme, že lievik pre juniorov môže a mal by byť dosť zložitý, no nakoniec ním prejdú len tí chalani, ktorí sú naozaj pripravení veľmi tvrdo pracovať a investovať do svojho rozvoja.

Teraz je našou hlavnou úlohou dokončiť trojmesačné rozvojové roadmapy pre každého juniora v režime individuálnej práce s mentorom a všeobecných kurzov, zbierať metriky, spätnú väzbu od leadov, mentorov a samotných chalanov. V tomto bode možno prvý experiment považovať za ukončený, možno vyvodiť závery, proces vylepšiť a možno ho znova začať s výberom nových kandidátov.

Zdroj: hab.com

Pridať komentár