Kuidas saada suurde ettevĂ”tte, kui oled algaja? Kuidas palgata vÀÀriline algaja, kui oled suur ettevĂ”te? Kirjutan siia alla meie loo algajate palkamisest front-endis: kuidas me töötasime testĂŒlesandeid vĂ€lja, valmistusime intervjuudeks ja kujundasime mentorprogrammi uute töötajate arendamiseks ja sisseelamiseks, ning miks tavakĂŒsimused vestlusteks ei toimi.

Mina, pĂŒĂŒan taltsutada algajat
Tere! Minu nimi on Pavel, teen front-endi Wrike'i meeskonnas. Loome projektide haldamise ja koostöö sĂŒsteemi. Olen veebitehnoloogiatega tegelenud alates 2010. aastast, töötanud 3 aastat vĂ€lismaal eemalt, osalenud mitmetes idufirmades ja Ă”petanud veebitehnoloogiate kursust ĂŒlikoolis. Aitan ettevĂ”ttes tehniliste kursuste ja Wrike mentorprogrammi arendamisel algajatele, samuti osalen nende vĂ€rbamisel.
Miks me ĂŒldse mĂ”tlesime algajate palkamisele
Hiljemalt oleme vĂ€rvanud front-end arendajaid tasemel middle vĂ”i senior â piisavalt iseseisvaid, et pĂ€rast onboardingut tootearendusega tegeleda. Selle aasta alguses mĂ”istsime, et soovime seda poliitikat muuta: aasta jooksul on meie tootmismeeskond peaaegu kahekordistunud, front-end arendajate arv on lĂ€henenud sajale ning lĂ€hitulevikus peaks see kahekordistuma veel kord. Töö on palju, vabade kĂ€te arv on vĂ€ike ning turul on neid veel vĂ€hem, seetĂ”ttu otsustasime pöörduda noorte poole, kes alles alustavad oma teed front-end arenduses ja mĂ”istsime, et oleme valmis nende arendusse investeerima.
Kes on junior?
See on kĂ”ige esimene kĂŒsimus, mille me endalt kĂŒsisime. On erinevaid kriteeriume, kuid kĂ”ige lihtsam ja arusaadavam pĂ”himĂ”te on jĂ€rgmine:
Juniorile tuleb selgitada, millist funktsiooni ja kuidas teha. Middle tasemel arendajale tuleb selgitada, milline funktsioon on vajalik, ning ta saab ise teostamisega hakkama. Senior aga selgitab sulle ise, miks seda funktsiooni ei tasu ĂŒldse teha.
Igal juhul on junior see arendaja, kellele on vajalik nÔuanne, kuidas tÀpselt teatud lahendust ellu viia. Sellega lÀhtusime:
- Juuniour on keegi, kes soovib areneda ja on selle jaoks valmis kÔvasti töötama;
- Ta ei tea alati, millises suunas ta soovib areneda;
- Ta vajab nĂ”u ja otsib abi mujalt â oma liidilt, mentorilt vĂ”i kogukonnast.
Meil oli ka mitu hĂŒpoteesi:
- Juuniortasemele tuleb vastuste tulv. Tuleb filtreerida juhuslikud vastused juba CV-de saatmise etapis;
- Esimene filter ei aita â vajalikud on veel katsetööd;
- Katsetööd panevad kĂ”ik kartma â neid pole vaja.
Ja muidugi, meil oli eesmÀrk: 4 juuniore 3 nÀdala jooksul.
Selle teadlikkusega hakkasime eksperimenteerima. Plaan oli lihtne: alustada vĂ”imalikult laia toruga ja proovida seda jĂ€rk-jĂ€rgult kitsendada nii, et jĂ”uaksime voo töötlemisega, kuid et see ei kahaneks ĂŒhe kandidaadini nĂ€dalas.
Avaldame töökuulutuse
EttevÔtte jaoks: Tuleb sadu vastuseid! MÔelge filtrile.
Juuniore jaoks: Ărge kartke kĂŒsitluse ees enne CV saatmist ja katsetööd â see on mĂ€rk sellest, et ettevĂ”te hoolib teist ja on protsessi hĂ€sti seadistanud.
Esimese pĂ€evaga saime ligikaudu 70 CV-d kandidaatidelt, kellel on teadmised JavaScriptist. Ja siis veel. Ja veel. Me ei suutnud fĂŒĂŒsiliselt kutsuda kĂ”iki intervjuule kontorisse ning valisime nende seast vĂ€lja noored, kellel olid kĂ”ige lahedamad pet-projektid, aktiivne GitHub vĂ”i vĂ€hemalt natuke kogemust.
Kuid peamine jĂ€reldus, mille me esimesel pĂ€eval tegime â torm on alanud. On aeg lisada kĂŒsimustik vorm enne CV saatmist. Selle eesmĂ€rk oli vĂ€lja filtreerida kandidaate, kes ei ole valmis tegema minimaalset pingutust CV saatmiseks, ja neid, kes ei oma teadmisi ja konteksti vĂ€hemalt selles ulatuses, et osata googeldada Ă”igeid vastuseid.
KĂŒsimustes oli tavakĂŒsimused JS-i, koodimise, veebitehnoloogia, Computer Science kohta â neid teab igaĂŒks, kes teab, mida kĂŒsitakse esmakordsel frontendi intervjuul. Milles seisneb erinevus let/var/const? Kuidas rakendada stiile ainult ekraanidele, mille laius on alla 600px? Me ei tahtnud neid kĂŒsimusi esitada tehnilisel intervjuul â praktika on nĂ€idanud, et neile saab vastata pĂ€rast 2-3 intervjuud, teadmata absoluutselt midagi arendamisest. Kuid need suudavad esialgselt nĂ€idata meile, kas kandidaat mĂ”istab konteksti.
Igas kategoorias oleme ette valmistanud 3-5 kĂŒsimust ja muutnud nende komplekti pĂ€evast pĂ€eva, kuni oleme vĂ€ljajĂ€tud kĂ”ige lihtsamad ja keerulisemad. See aitas meil vĂ€hendada voogu â kolme nĂ€dala jooksul saime 122 kandidaati, kellega oli vĂ”imalik edasi töötada. Need olid IT-Ă”pilased; poisid, kes soovisid backendilt frontendile ĂŒmber minna; töötajad vĂ”i insenerid vanuses 25-35, kes soovisid radikaalselt muuta oma tegevusala ja panustasid erinevas mahus enesetĂ€iendamisse, kursustele ja praktikale.
Tutvume lÀhemalt
EttevÔtte jaoks: Testitöö ei heiduta kandidaate, vaid aitab vÀhendada funnelit.
Juuniore jaoks: Ărge kopeerige testtöid â see on mĂ€rgatav. Ja hoidke oma GitHub korras!
Kui me oleksime kutsunud kĂ”iki tehnilisele intervjuule, oleksime pidanud nĂ€dalas lĂ€bi viima umbes 40 intervjuud ainult algajate ja ainult frontendile. SeetĂ”ttu otsustasime testida teist hĂŒpoteesi â testitöö kohta.
Mis oli meie jaoks testitöös oluline:
- Ehitada hea, skaleeritav arhitektuur, kuid ilma ĂŒleinseneerimise.
- Parem on teha kauem, aga korralikult, kui öösel kuhjaga asju kokku kloppida ja saata kommentaariga «kindlasti viin lÔpuni»;
- Ajalugu arenduses Git'is â insenerikultuur, arenduse iteratiivsus ja see, et lahendus pole ĂŒldse pealt kopeeritud.
Leppisime kokku, et soovime vaadata ĂŒhte algoritmilist ĂŒlesannet ja vĂ€ikest veebirakendust. Algoritmilised ĂŒlesanded olid ette valmistatud algkursuste laboratoorsete tööde tasemel â binaarne otsing, sortimine, anagrammide kontrollimine, töötamine loendite ja puudega. LĂ”puks valisime binaarse otsingu esimeseks katsetamiseks. Veebirakenduseks pidid olema ristsĂ”nad, kasutades mĂ”nd raamistiku (vĂ”i ilma selleta).
Peaaegu pooled jÀÀnud poisid said testĂŒlesande kĂ€tte â meile saadeti lahendused 54 kandidaati. Usumatu ĂŒllatus â kui arvate, kui palju ristsĂ”nade realiseerimist, mis on valmiskujul koopiateks, on internetis?
Kui palju?Tegelikult tundub, et ainult 3. Ja enamikus lahendustes olid just need 3 varianti.
Mis ei meeldinud:
- koopiakood, vÔi arendus sama Ôpetuse alusel ilma oma arhitektuurita;
- kaks ĂŒlesannet ĂŒhes hoidlas erinevates kaustades, kuid commitide ajalugu puudub;
- must kood, DRY printsiibi rikkumine, puuduv vormindamine;
- mudeli, vaate ja kontrolli segamine ĂŒhte sadu ridu ulatuvasse klassi;
- puudulik arusaam ĂŒksustestestritest;
- lahendus «otse» â kĂ”va koodi panemine 3x3 vĂ”idukombinatsioonide maatriksisse, mida on raske laiendada nĂ€iteks 10x10 peale.
Ja me pöörasime tĂ€helepanu ka naaberepositoridele â Ă€gedad pet-projectid tĂ”id kasumit, samas kui hulk teiste ettevĂ”tete testĂŒlesandeid oli pigem mĂ€rk sellest, et miks kandidaat ei saanud seal lĂ€bi;
Kokku leidsime Ă€gedad variandid Reactiga, Angulariga, Vanilla JSe'ga â neid oli 29. Ja ĂŒhe kandidaadi otsustasime kutsuda ilma testideta tema Ă€gedate pet-projectide tĂ”ttu. Meie hĂŒpotees testĂŒlesannete kasulikkuse kohta kinnitust leidis.
Tehniline intervjuu
EttevÔtte jaoks: Teie juurde tulid mitte keskastme/seniori! Vajalik on rohkem individuaalset lÀhenemist.
Juuniore jaoks: MĂ€letage, et see ei ole eksam â Ă€rge pĂŒĂŒdke vaikides kolme saada vĂ”i petta professorit kĂ”igi oma teadmistevooga, et ta segadusse satuks ja «suurepĂ€raselt» hindaks.
Mida me tahame tehnilisel intervjuul aru saada? Lihtsat asja â kuidas kandidaat mĂ”tleb. TĂ”enĂ€oliselt on tal mĂ”ned kĂ”vad oskused, kui ta on lĂ€binud esimesed valikufaasid â tuleb vaid vĂ€lja selgitada, kas ta oskab neid rakendada. Oleme kokku leppinud 3 ĂŒlesandes.
Esimene â algoritmid ja andmestruktuurid. Pliiatsi ja paberi, pseudokoodi ja jooniste abil arutasime, kuidas kopeerida puu vĂ”i kuidas eemaldada element sidustatud loendist. Ebameeldivaks avastuseks oli, et kĂ”ik ei mĂ”ista rekursiooni ja kuidas viidatud muudatused toimivad.
Teine â reaalajas kodeerimine. Me sisenesime , valisime lihtsaid ĂŒlesandeid nagu sĂ”nade massiivi sortimine viimase tĂ€he jĂ€rgi ja 30-40 minuti jooksul pĂŒĂŒdsime koos kandidaadiga kĂ”ik testid lĂ€bitud saada. Tundus, et ĂŒllatusi ei tohiks tulla lastelt, kes on valmis saanud kriipsude ja nullide mĂ€ngu â kuid praktikas ei suutnud kĂ”ik aru saada, et vÀÀrtust tuleks salvestada muutujasse ja funktsioon peaks midagi tagastama lĂ€bi return. Kuigi ma siiralt loodan, et see oli nĂ€rvikĂ”di ja lapsed suutsid nende ĂŒlesannetega paremates tingimustes hakkama saada.
LĂ”puks kolmas osa â veidi arhitektuurist. RÀÀkisime, kuidas teha otsinguriba, kuidas debounce töötab, kuidas renderdada erinevaid vidinaid otsingutulemustes, ning kuidas frontend saab backendiga suhelda. Leidus palju huvitavaid lahendusi, sealhulgas serveripoolne renderdamine ja veebisoketid.
Viisime lĂ€bi 21 intervjuud sellise skeemi alusel. Publik oli tĂ€iesti kirju â vĂ”tame koomiksite abil:
- âRaketaâ. Ta ei rahune kunagi, tunneb huvi kĂ”iges, ja intervjuus uputab teid mĂ”tete vooga, mis ei pruugi isegi otseselt olla seotud esitatud kĂŒsimusega. Kui see toimuks ĂŒlikoolis, oleks see paljudele tuttav katse nĂ€idata absoluutselt kogu oma teadmiste kogumit, kui mĂ€llu on jÀÀnud ainult see, et eelĂ”htul otsustasid seda mitte Ă”ppida â igal juhul ei suuda sa midagi kaasas kanda.
- âGrootâ. Temaga on vĂ€ga raske kontakti saada, sest ta on Groot. Intervjuus tuleb kaua aega kulutada, et vĂ€lja kisuda vastused sĂ”na haaval. Hea, kui see on lihtsalt takistus â muidu on igapĂ€evasel tööl pĂ€rast seda vĂ€ga raske.
- âDraxâ. Varem tegelesin kaubaveoga ja programmeerimisest Ă”ppisin ainult JS-i Stackoverflow's, seega ei saa ma alati aru, millest vestlusel rÀÀkida. Kuid olen hea inimene, mul on parimad kavatsused ja tahan saada suurepĂ€raseks frontend-arendajaks.
- Ja ilmselt, «TĂ€hesĂ”dalane». Ăldiselt on ta korralik kandidaat, kellega on vĂ”imalik kokkuleppele jĂ”uda ja dialooge luua.
Oma uurimistöö lĂ”pus 7 kandidaati kliendile, kes kinnitasid oma hard skill'e Ă€geda testĂŒlesande ja hĂ€id vastuseid intervjuudes.
Kultuuriline sobivus
EttevÔtte jaoks: Te töötate temaga! Kas kandidaat on tÔeliselt valmis oma arengu nimel ÀÀrmiselt palju vaeva nÀgema? Kas ta sobib meeskonda?
Juuniore jaoks: Te töötate nendega! Kas ettevĂ”te on tĂ”eliselt valmis investeerima noorte arendamisse vĂ”i lĂŒkkab ta lihtsalt kogu musta töö teie kaela madala palga eest?
Iga junior, vĂ€lja arvatud toote meeskond, kelle juht peab need vĂ”tma, satub mentorisse. Mento ĂŒlesanne on viia ta lĂ€bi kolmekuulise onboardimist ja kĂ”vade oskuste arendamise protsessi. SeetĂ”ttu tulime igal kultuurikohandamisel mentoritena ja kĂŒsisime endalt: "Kas ma vĂ”tan vastutuse arendada kandidaati kolme kuu jooksul meie plaani jĂ€rgi?"
See etapp kulges sujuvalt ja tÔi meile lÔpuks 4 pakkumist, millest 3 vastu vÔeti, ning poisid asusid meeskondadesse.
Elu pÀrast pakkumist
EttevÔtte jaoks: Hoolitsege oma juniorite eest vÔi teevad seda teised!
Juuniore jaoks: AAAAAAAAAAAAAA!!!
Uue töötaja saabudes tuleb ta onboardida â viia ta kursusele protsessidest, rÀÀkida, kuidas kĂ”ik ettevĂ”ttes ja meeskonnas toimub, ning kuidas ĂŒldiselt töötada. Kui junior tuleb, tuleb mĂ”ista, kuidas teda arendada.
Kui me sellest mÔtlema hakkasime, koostasime nimekirja 26 oskusest, millega meie arvates peaks noor töötaja kolm kuud kestva onboardingu lÔpuks hakkama saama. Nende hulka kuulusid tehnilised oskused (meie tehnoloogiatehnoloogia jÀrgi), teadmised meie protsesside, scrumi, infrastruktuuri ja projekti arhitektuuri kohta. Koondasime need kolme kuu ajakava raames teeplaaniks.

NÀiteks, siin on minu noore töötaja teeplaan
Iga noore töötaja juurde mÀÀrame mentori, kes töötab temaga individuaalselt. SĂ”ltuvalt mentorist ja kandidaadi hetke tasemest vĂ”ivad kohtumised toimuda 1 kuni 5 korda nĂ€dalas, igaĂŒks kestab 1 tunni. Mentoriteks saavad vabatahtlikult aktiivsed front-end arendajad, kes soovivad teha rohkemat kui lihtsalt koodi kirjutamist.
Osa koormusest mentorite pealt vĂ”etakse Ă€ra meie tehnoloogia kursuste kaudu â Dart, Angular. Kursusi viiakse lĂ€bi regulaarselt vĂ€ikestes gruppides, kus on 4â6 inimest, kus osalejad saavad töötada ilma töölt eemalolekuta.
Kolme kuu jooksul kogume perioodiliselt tagasisidet noortelt, nende mentoritelt ja juhtidelt ning kohandame protsessi individuaalselt. Kogu perioodi jooksul toimub 1-2 korda oskuste tĂ”endamine, samuti toimub selline kontroll lĂ”pus â nende pĂ”hjal koostatakse soovitused, mida tuleks tĂ€iendada.
KokkuvÔte
EttevÔtte jaoks: Kas tasub investeerida noortesse? Jah!
Juuniore jaoks: Otsige ettevÔtteid, kes valivad kandidaate hoolikalt ja teavad, kuidas neid arendada.
Kolme kuuga oleme vaadanud ĂŒle 122 kĂŒsitluse, 54 testĂŒlesannet ja viinud lĂ€bi 21 tehnilist vestlust. See on meile toonud 3 suurepĂ€rast noort, kes on nĂŒĂŒd lĂ€binud poole oma sisseelamisest ja kiirendamisest. Nad lahendavad juba reaalseid tootearenduse ĂŒlesandeid meie projektis, kus ainult frontendis on rohkem kui 2 000 000 koodirida ja ĂŒle 400 repositooriumi.
Olemegi vÀlja selgitanud, et noorte vÀrbamisprotsess vÔib ja peaks olema piisavalt keeruline, aga lÔpuks lÀbivad selle vaid need noored, kes on tÔeliselt valmis palju tööd tegema ja investeerima oma arengusse.
Meie peamine ĂŒlesanne on nĂŒĂŒd lĂ”petada iga juniori arengu kolme kuu plaan individuaalse mentori juhendamisel ja ĂŒldkursustel, koguda mÔÔdikud, tagasisidet juhtidelt, mentoritelt ja osalistelt. Selle esialgne eksperiment on siis lĂ”petatud, teeme jĂ€reldused, parandame protsessi ja kĂ€ivitame selle uuesti uute kandidaatide valimiseks.
Allikas: habr.com
