Kako ukrotiti juniora?

Kako doći do velike tvrtke ako si junior? Kako zaposliti kvalitetnog junira ako si velika tvrtka? U nastavku ću ispričati našu priču o zapošljavanju mladih ljudi za frontend: o tome kako smo razvijali testne zadatke, pripremali se za provođenje intervjua i uspostavili mentorski program za razvoj i onboarding novih članova, kao i zašto standardna pitanja za intervjue ne rade.

Kako ukrotiti juniora?
Pokušavam ukrotiti junira

Bok! Zovem se Pavel, radim frontend u timu Wrike. Stvaramo sustav za upravljanje projektima i suradnju. Radim na webu od 2010. godine, 3 godine sam radio na stranoj udaljenoj poziciji, sudjelovao sam u nekoliko startupa i predavao tečaj o web tehnologijama na sveučilištu. U tvrtki sudjelujem u razvoju tehničkih tečajeva i mentorskom programu Wrike za juniore, kao i u njihovom zapošljavanju.

Zašto smo se uopće počeli baviti zapošljavanjem juniora

Do nedavno smo zapošljavali frontend programere razine middle ili senior — dovoljno neovisne da nakon onboardinga mogu obavljati proizvodne zadatke. Na početku ove godine shvatili smo da želimo promijeniti ovu politiku: tijekom godine broj naših produkcijskih timova skoro se udvostručio, broj frontend programera približio se stotinu, a u bliskoj budućnosti trebao bi se ponovno udvostručiti. Posla je mnogo, slobodnih ruku malo, na tržištu ih je još manje, pa smo odlučili obratiti se ljudima koji tek započinju svoj put u frontendu i shvatili da smo spremni ulagati u njihov razvoj.

Tko je junior?

To je prvo pitanje koje smo si postavili. Postoje različiti kriteriji, ali najjednostavniji i najjasniji princip je sljedeći:

Juniru treba objasniti koju funkcionalnost i kako napraviti. Middu treba objasniti koja funkcionalnost je potrebna, a on će se sam snalaziti s realizacijom. Senior će ti sam objasniti zašto tu funkcionalnost ne bi trebao raditi uopće.

Tako ili onako, junior je onaj programer kojem treba savjet o tome kako konkretno realizirati određeno rješenje. Od čega smo odlučili polaziti:

  1. Junior je onaj tko želi napredovati i spreman je puno raditi za to;
  2. On ne zna uvijek u kojem točno smjeru želi napredovati;
  3. Treba savjet i traži pomoć izvana — od svog vođe, mentora ili u zajednici.

Također smo imali nekoliko hipoteza:

  1. Na poziciju juniorskog zaposlenika bit će pravi plima prijava. Trebamo filtrirati slučajne prijave već u fazi slanja životopisa;
  2. Prvi filter neće pomoći — potrebni su dodatni testni zadaci;
  3. Testni zadaci će sve prestrašiti — nisu potrebni.

Naravno, imali smo cilj: 4 juniora u 3 tjedna.

S tim saznanjem počeli smo eksperimentirati. Plan je bio jednostavan: započeti s maksimalno širokim kanalom i postupno ga sužavati kako bismo stizali obraditi prijave, ali da to ne svede sve na 1 kandidata tjedno.

Objavljujemo oglas za posao

Za kompaniju: Bit će stotine prijava! Razmislite o filteru.

Za juniora: Ne bojte se upitnika prije slanja životopisa i testnog zadatka — to je znak da se kompanija brine o vama i dobro je postavila proces.

Na prvi dan primili smo oko 70 životopisa od kandidata "s poznavanjem JavaScript-a". A zatim još. I još. Fizički nismo mogli pozvati sve na intervju u ured i odabrali smo one s najboljim pet-projektima, aktivnim GitHub profilima ili barem iskustvom.

Ali glavni zaključak koji smo donijeli već prvog dana — oluja je počela. Došlo je vrijeme za dodavanje upitnika prije slanja životopisa. Njegov zadatak bio je isključiti kandidate koji nisu spremni uložiti minimalne napore za slanje životopisa, i one koji ne posjeduju znanja i kontekst barem toliko da mogu pronaći pravilne odgovore na Google-u.

U njemu su bila standardna pitanja o JS-u, HTML-u, webu, računalnim znanostima — to zna svatko tko ima predstavu o onome što se pita na intervjuima za front-end. Koja je razlika između let/var/const? Kako primijeniti stilove samo za ekrane šire od 600px? Nismo željeli postavljati ta pitanja na tehničkom intervjuu — praksa je pokazala da se na njih može odgovoriti nakon 2-3 intervjua, a da se uopće ne razumije u razvoj. Ali su barem mogli početno pokazati razumije li kandidat kontekst.

U svakoj kategoriji pripremili smo 3-5 pitanja i dan za danom mijenjali njihove setove u obliku prijave, dok nismo isključili najslabije i najteže. To je omogućilo smanjenje broja — u 3 tjedna dobili smo 122 kandidata, s kojima se moglo nastaviti raditi. To su bili studenti IT-a; dečki koji su željeli preći s backenda na frontend; radnici ili inženjeri u dobi od 25 do 35 godina koji su drastično željeli promijeniti svoje zanimanje i uložili su različite napore u samostalno obrazovanje, tečajeve i stažiranje.

Upoznajmo se bolje

Za kompaniju: Testni zadatak ne odbija kandidate, već pomaže skratiti proces selekcije.

Za juniora: Ne kopirajte testne zadatke - to je očigledno. I održavajte svoj GitHub u redu!

Da smo pozvali sve na tehnički intervju, morali bismo provesti otprilike 40 intervjua tjedno samo za juniore i samo za frontend. Stoga smo odlučili testirati drugu hipotezu - o testnom zadatku.

Što nam je bilo važno u testnom zadatku:

  1. Izgraditi dobru skalabilnu arhitekturu, ali bez prekompleksnosti;
  2. Bolje je raditi duže, ali dobro, nego napraviti nešto loše za jednu noć i poslati uz komentar 'obećajem da ću završiti';
  3. Povijest razvoja u Gitu - inženjerska kultura, iterativnost razvoja i to da rješenje nije posve očigledno prekopirano.

Složili smo se da želimo vidjeti jedan algoritamski zadatak i malu web-aplikaciju. Algoritamski zadaci su pripremljeni na razini laboratorijskih vježbi početnih tečajeva - binarna pretraga, sortiranje, provjera anagrama, rad s listama i stablima. Na kraju smo se odlučili za binarnu pretragu kao prvi probni zadatak. Web-aplikacija trebala je biti igra križić-križić uz korištenje bilo kojeg okvira (ili bez njega).

Testni zadatak je uspješno završila gotovo polovina preostalih dečki - poslali su nam rješenja 54 kandidata. Nevjerojatan uvid - koliko mislite da postoji realizacija križić-križić igre koja se može kopirati s interneta?

Koliko?Zapravo, izgleda da samo 3. I u velikoj većini rješenja su bila upravo ta 3 varijante.
Što se nije svidjelo:

  • kopiranje koda ili razvoj prema istom tutorijalu bez vlastite arhitekture;
  • oba zadatka u jednom repozitoriju u različitim mapama, povijest commit-a naravno ne postoji;
  • neuredan kod, kršenje DRY principa, nedostatak formatiranja;
  • mješavina modela, prikaza i kontrolera u jednu klasu dugačku stotine linija koda;
  • nedostatak razumijevanja jedinica ispitivanja;
  • rješenje "u izravnom pristupu" — hardkod matrice dobitnih kombinacija 3x3, što će biti prilično teško proširiti na 10x10, na primjer.

Također smo obraćali pažnju na susjedne repozitorije — cool pet-projekti su išli u plus, a hrpa testnih zadataka od drugih tvrtki bila je više signal: zašto kandidat nije uspio proći tamo?

Na kraju smo pronašli sjajne opcije na Reactu, Angularu, Vanilla JS — skupilo se njih 29. I još jednog kandidata smo odlučili pozvati bez testa zbog njegovih super cool pet-projekata. Naša hipoteza o koristi testnih zadataka se potvrdila.

Tehničko intervjuiranje

Za kompaniju: Niste se susreli s mid-level ili senior kandidatima! Trebamo više individualnog pristupa.

Za juniora: Zapamtite, ovo nije ispit — nemojte pokušavati samo šutjeti na trojku ili zbuniti profesora svim svojim znanjem, kako bi on zbunjuje i dao "odličan".

Što želimo razumjeti na tehničkog intervju? Jednu jednostavnu stvar — kako kandidat razmišlja. Vjerojatno posjeduje neke hard skills, ako je prošao prve faze selekcije — ostalo je utvrditi zna li ih primijeniti. Dogovorili smo se o 3 zadatka.

Prvi — o algoritmima i strukturama podataka. Olovkom, na komadu papira, na pseudokodu i s crtežima analizirali smo kako kopirati stablo ili kako ukloniti element iz jednostruko povezanog popisa. Neugodna spoznaja bila je da ne razumiju svi rekurziju i kako poveznice funkcionišu.

Drugi — live coding. Prijavili smo se na codewars.com, birali jednostavne stvari poput sortiranja niza reči po posljednjem slovu, a tijekom 30-40 minuta zajedno s kandidatom pokušavali smo proći sve testove. Činilo se da ne bi trebalo biti iznenađenja od ljudi koji su savladali križiće i nuli — no u praksi nisu svi shvatili da se vrijednost mora čuvati u varijabli, a funkcija nešto mora vraćati preko return. Iako iskreno se nadam da je to bio tremor i da su se momci uspjeli snaći s tim zadatcima u lakšim uvjetima.

Napokon, treći — malo o arhitekturi. Razgovarali smo o tome kako napraviti pretraživač, kako funkcionira debounce, kako renderirati različite widgete u predlozima za pretraživanje, kako frontend može komunicirati s backendom. Bilo je nekoliko zanimljivih rješenja, uključujući server-side renderiranje i web-sokete.

Proveli smo 21 intervju prema ovoj shemi. Publika je bila potpuno raznolika — hajde da to ilustrujemo na stripovima:

  1. „Raketa“. Nikada ne miruje, svuda se umiješa, a na intervjuu će vas preplaviti prevelikim tokom misli, koje uopće nisu povezane s postavljenim pitanjem. Da je to na univerzitetu, to bi bila poznata mnogima pokušaj demonstriranja svih svojih znanja, kada se s upitom usko povežete, a sjećate se samo da ste sinoć odlučili da ga ne učite — ionako ne biste uspjeli.
  2. „Groot“. Teško je uspostaviti kontakt s njim, jer on je Groot. Na intervjuu se dugo mučite da izvučete odgovore, riječ po riječ. Dobro je ako je to samo zastoj — inače će vam kasnije u svakodnevnom poslu biti jako teško.
  3. „Drax“. Ranije se bavio transportom tereta, a od programiranja je učeći samo JS putem Stackoverflowa, pa ne razumije uvijek o čemu se zapravo razgovara na intervjuu. Ipak, dobar je čovjek, ima najbolje namjere i želi postati odličan frontend stručnjak.
  4. I vjerojatno, „Zvjezdani lord“. U cjelini, dobar kandidat s kojim se može dogovoriti i uspostaviti dijalog.

Na kraju naših istraživanja 7 kandidata došlo je do finala, potvrđujući svoje hard skill-ove odličnim testnim zadatkom i dobrim odgovorima na intervjuu.

Kulturalna prilagodba

Za kompaniju: Hoćeš li raditi s njim! Je li kandidat spreman raditi ekstremno puno za svoj razvoj? Je li se sigurno uklopio u tim?

Za juniora: Hoćeš li raditi s njima! Je li kompanija spremna ulagati u rast juniora, ili će jednostavno sve prljave poslove prebaciti na vas za nisku plaću?

Svaki junior, osim u proizvodnom timu, čiji vođa ga mora prihvatiti, dobiva mentora. Zadatak mentora je provesti ga kroz trodnevni proces onboardinga i unapređenja hard skill-ova. Stoga smo na svaki test kulture dolazili kao mentori i postavljali si pitanje: „Hoću li preuzeti odgovornost za unapređenje kandidata za 3 mjeseca prema našem planu?“

Ova etapa je prošla bez posebnosti i na kraju nam je donijela 4 ponude, od kojih su 3 prihvaćene i momci su ušli u timove.

Život nakon ponude

Za kompaniju: Pobrini se za svoje juniore ili će to drugi učiniti!

Za juniora: AAAAAAA!!!

Kada novi zaposlenik dođe, potrebno ga je onboardati – uvesti ga u procese, objasniti kako sve funkcionira u tvrtki i timu te kako uopće treba raditi. Kada dođe junior, potrebno je razumjeti kako ga razvijati.

Kada smo razmišljali o tome, sastavili smo popis od 26 vještina koje, prema našem mišljenju, junior treba imati do kraja tromjesečnog onboarding razdoblja. Uvrstili smo hard-skills (prema našem tech stacku), znanje o našim procesima, scrumu, infrastrukturi, arhitekturi projekta. Spojili smo ih u roadmap raspoređen tijekom 3 mjeseca.

Kako ukrotiti juniora?

Na primjer, evo roadmapa mog juniora.

Svakom junioru dodijeljujemo mentora koji s njim radi individualno. Ovisno o mentoru i trenutnoj razini kandidata, sastanci se mogu održavati od 1 do 5 puta tjedno po 1 sat. Mentorima se dobrovoljno javljaju proaktivni frontend developeri koji žele raditi više od samog pisanja koda.

Dio opterećenja s mentora preuzimaju tečajevi o našem stacku – Dart, Angular. Tečajevi se redovito održavaju za manje grupe od 4-6 osoba, gdje se sudionici bave radom bez prekidanja.

Tijekom 3 mjeseca povremeno prikupljamo povratne informacije od juniora, njihovih mentora i voditelja te individualno prilagođavamo proces. 1-2 puta tijekom cijelog razdoblja provodi se provjera stečenih vještina, a slična provjera se radi na kraju – na temelju njih se formiraju preporuke o tome što se treba dodatno usavršiti.

Zaključak

Za kompaniju: Treba li ulagati u juniore? Da!

Za juniora: Tražite tvrtke koje pažljivo biraju kandidate i znaju ih razvijati.

Tijekom 3 mjeseca pregledali smo 122 upitnika, 54 testna zadatka i proveli 21 tehnički intervju. To nam je donijelo 3 sjajna juniora, koji su sada prošli polovicu svojih roadmapa za onboarding i akceleraciju. Već rješavaju stvarne proizvodne zadatke u našem projektu, gdje na frontend-u ima više od 2 000 000 linija koda i više od 400 repozitorija.

Utvrđeno je da može i treba postojati relativno složena cijev za juniore, ali na kraju njome prolaze samo oni koji su zaista spremni puno raditi i ulagati u svoj razvoj.

Trenutno je naš glavni zadatak završiti trojmesečne razvojne planove za svakog juniorskog zaposlenika putem individualnog rada s mentorom i zajedničkih tečajeva, prikupiti metrike, povratne informacije vođa, mentora i samih učenika. Na temelju ovoga prva eksperimenta moći ćemo ga smatrati završenim, donijeti zaključke, poboljšati proces i ponovo ga pokrenuti za odabir novih kandidata.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster