Hvordan temme junioren?

Hvordan kan man komme inn i et stort selskap som junior? Hvordan ansette en dyktig junior hvis du er et stort selskap? Under her vil jeg dele vÄr historie om ansettelse av nybegynnere innen frontend: hvordan vi utarbeidet testoppgaver, forberedte oss til intervjuer og bygde et mentorprogram for utvikling og onboarding av nykommere, samt hvorfor standard spÞrsmÄl for intervjuer ikke fungerer.

Hvordan temme junioren?
Jeg prĂžver Ă„ temme en junior

Hei! Jeg heter Pavel, og jeg jobber med frontend i laget vÄrt hos Wrike. Vi lager et system for prosjektledelse og samarbeid. Jeg har jobbet med web siden 2010, jobbet i tre Är pÄ internasjonal fjernarbeid, deltatt i flere oppstarter og undervist i webteknologier pÄ universitetet. I selskapet bidrar jeg til utviklingen av tekniske kurs og mentorprogrammet til Wrike for juniorer, samt rekrutteringen av dem.

Hvorfor begynte vi Ă„ vurdere ansettelse av juniorer

Inntil nylig rekrutterte vi frontend-utviklere pĂ„ mid-level eller senior nivĂ„ — tilstrekkelig selvstendige til Ă„ hĂ„ndtere produktoppgaver etter onboarding. Tidligere i Ă„r innsĂ„ vi at vi Ăžnsket Ă„ endre denne politikken: i lĂžpet av Ă„ret har antallet vĂ„re produktteam nesten doblet seg, antallet frontend-utviklere har nĂŠrmet seg hundre, og i nĂŠr fremtid skal alt dette dobles igjen. Det er mye arbeid, fĂ„ hender tilgjengelig, og pĂ„ markedet er de enda fĂŠrre, sĂ„ vi bestemte oss for Ă„ henvende oss til folk som nettopp har begynt sin ferd innen frontend og innsĂ„ at vi var villige til Ă„ investere i deres utvikling.

Hva er en junior?

Dette var det fÞrste spÞrsmÄlet vi stilte oss selv. Det finnes ulike kriterier, men det enkleste og mest forstÄelige prinsippet er:

En junior trenger Ä fÄ forklart hvilken funksjonalitet og hvordan den skal lages. En mid-level utvikler trenger Ä forstÄ hvilken funksjonalitet som kreves, og sÄ finner han selv ut hvordan det skal implementeres. En senior vil selv forklare deg hvorfor denne funksjonaliteten ikke skal lages i det hele tatt.

Uansett, en junior er den utvikleren som trenger rÄd om hvordan man skal implementere ulike lÞsninger. Som vi besluttet Ä basere oss pÄ:

  1. En junior er en som Ăžnsker Ă„ utvikle seg og er villig til Ă„ jobbe hardt for det;
  2. Han vet ikke alltid hvilken retning han vil utvikle seg i;
  3. Han trenger rĂ„d og sĂžker hjelp utenfra — fra sin leder, mentor eller i fellesskapet.

I tillegg hadde vi flere hypoteser:

  1. Det vil komme en storm av sÞknader til juniorstillingen. Vi mÄ filtrere tilfeldige svar allerede pÄ tidspunktet for innsending av CV;
  2. Den fþrste filtreringen vil ikke hjelpe — vi trenger flere testoppgaver;
  3. Testoppgavene vil skremme bort alle — de er ikke nþdvendige.

Og selvsagt hadde vi et mÄl: 4 juniorer pÄ 3 uker.

Med denne forstÄelsen begynte vi Ä eksperimentere. Planen var enkel: starte med en sÄ bred trakt som mulig og gradvis snevre den inn, slik at vi rakk Ä bearbeide strÞmmen, men ikke redusere den til 1 kandidat i uken.

Vi annonserer stillingen

For selskapet: Det vil komme hundrevis av sÞknader! Tenk pÄ filtreringen.

For junioren: Ikke vĂŠr redd for spĂžrreskjemaet fĂžr du sender CV og testoppgave — det er et tegn pĂ„ at selskapet bryr seg om deg og har godt tilrettelagt prosessen.

PÄ den fÞrste dagen fikk vi omtrent 70 CV-er fra kandidater «med kunnskap om JavaScript». Og sÄ kom det flere. Vi hadde fysisk ikke mulighet til Ä kalle inn alle til intervju pÄ kontoret, sÄ vi valgte folk med de mest imponerende pet-prosjektene, aktiv GitHub eller ihvertfall erfaring.

Men den viktigste konklusjonen vi kom til den fĂžrste dagen — stormen hadde begynt. Det var pĂ„ tide Ă„ legge til et spĂžrreskjema fĂžr innsending av CV. MĂ„lsetningen var Ă„ sile ut kandidater som ikke var villige til Ă„ legge ned minimum innsats for Ă„ sende inn CV, og de som ikke hadde kunnskapen og konteksten til Ă„ google de riktige svarene.

Det inneholdt standardspĂžrsmĂ„l om JS, nettside-design, web, datavitenskap — disse kan alle som har en viss forstĂ„else av hva som blir spurt om i frontend-intervjuer. Hva er forskjellen mellom let/var/const? Hvordan anvende stiler bare for skjermer som er mindre enn 600px i bredde? Vi Ăžnsket ikke Ă„ stille disse spĂžrsmĂ„lene pĂ„ det tekniske intervjuet — erfaringen viste at man kunne svare pĂ„ dem etter 2-3 intervjuer uten Ă„ ha noen som helst forstĂ„else for utvikling. Men de kunne likevel gi oss en tidlig indikasjon pĂ„ om kandidaten forstod konteksten.

I hver kategori forberedte vi 3-5 spĂžrsmĂ„l og endret dag for dag settet med spĂžrsmĂ„l i svarskjemaet, til vi hadde utelukket de mest trivielle og de mest krevende. Dette gjorde at vi kunne redusere strĂžmmen — pĂ„ 3 uker fikk vi 122 kandidater, som man kunne jobbe videre med. Dette var IT-studenter; folk som Ăžnsket Ă„ gĂ„ fra backend til frontend; arbeidere eller ingeniĂžrer i alderen 25-35 Ă„r, som Ăžnsket en radikal karriereskifte og som hadde lagt inn ulike mengder arbeid i selvstudier, kurs og praksisplasser.

Bli bedre kjent

For selskapet: Testoppgaven skremmer ikke kandidatene, men hjelper til med Ä kutte ned pÄ utvelgelsesprosessen.

For junioren: Ikke kopier testoppgavene — det merkes. Og hold GitHub-profilen din ryddig!

Hvis vi hadde invitert alle til teknisk intervju, mĂ„tte vi ha gjennomfĂžrt omtrent 40 intervjuer i uken bare for juniorer og kun for frontend. Derfor bestemte vi oss for Ă„ teste den andre hypotesen — om testoppgaven.

Hva som var viktig for oss med testen:

  1. Bygge en god, skalerbar arkitektur, men uten overengineering;
  2. Det er bedre Ä ta seg tid til Ä gjÞre det bra, enn Ä smelle sammen noe pÄ en natt og sende det med kommentaren «jeg skal absolutt fullfÞre dette»;
  3. Historikken om utviklingen pĂ„ Git – ingeniĂžrkultur, iterativ utvikling, og at lĂžsningen ikke er plagiat for Ă„ si det mildt.

Vi ble enige om at vi Ăžnsket Ă„ se en algoritmisk oppgave samt en liten web-applikasjon. Algoritmene var designet pĂ„ nivĂ„ med laboratorieoppgaver fra tidlige kurs — binĂŠrsĂžk, sortering, anagram-sjekking, arbeid med lister og trĂŠr. Til slutt bestemte vi oss for binĂŠrsĂžk som den fĂžrste testoppgaven. Web-applikasjonen skulle bli kryss og nĂžtter ved bruk av valgfritt rammeverk (eller uten).

Testoppgaven ble lĂžst av nesten halvparten av de resterende kandidatene — vi mottok lĂžsninger fra 54 kandidater. Utrolig innsikt — hvor mange implementeringer av kryss og nĂžtter, klare til kopiering, tror du finnes pĂ„ nettet?

Hvor mange?Faktisk ser det ut til at det bare er 3. Og i det overveldende flertallet av lĂžsningene var det nettopp disse 3 alternativene.
Hva likte vi ikke:

  • Kopiering, eller utvikling basert pĂ„ samme tutorial uten egen arkitektur;
  • Begge oppgavene i ett repositorium i forskjellige mapper, men det finnes selvfĂžlgelig ingen commits-historikk;
  • Rotete kode, brudd pĂ„ DRY-prinsippet, mangel pĂ„ formatering;
  • Blanding av modell, visning og kontroller i en klasse som er hundrevis av linjer lang;
  • Mangel pĂ„ forstĂ„else av enhetstesting;
  • lĂžsning «rett pĂ„ sak» — hardkoding av vinnerkombinasjoner 3x3, noe som vil vĂŠre ganske vanskelig Ă„ utvide til 10x10, for eksempel.

Vi la ogsĂ„ merke til naborepositorier — flotte pet-prosjekter gikk i pluss, men mange testoppgaver fra andre selskaper var mer et tegn pĂ„: hvorfor klarte ikke kandidaten Ă„ komme seg videre der?

Til slutt fant vi flotte kandidater pĂ„ React, Angular, Vanilla JS — vi samlet opp 29. Og en annen kandidat bestemte vi oss for Ă„ invitere uten test basert pĂ„ sine veldig imponerende pet-prosjekter. Hypotesen vĂ„r om nytten av testoppgaver ble bekreftet.

Teknisk intervju

For selskapet: De som kommer til deg er ikke midler/seniore! Det kreves mer individuell tilnĂŠrming.

For junioren: Husk at dette ikke er en eksamen — prĂžv ikke Ă„ bare holde deg til et trepoengs svar eller overvelde professoren med all din mulige kunnskap, slik at han blir forvirret og gir deg "utmerket".

Hva Ăžnsker vi Ă„ forstĂ„ i det tekniske intervjuet? En enkel ting — hvordan kandidaten tenker. Han har sikkert noen hard skills hvis han har kommet seg gjennom de fĂžrste utvelgelsene — nĂ„ gjenstĂ„r det Ă„ finne ut om han kan bruke dem. Vi ble enige om 3 oppgaver.

FĂžrste — om algoritmer og datastrukturer. Med penn og papir, pĂ„ pseudokode og med tegninger, diskuterte vi hvordan man kan kopiere et tre eller hvordan man kan fjerne et element fra en enkelt lenket liste. En ubehagelig oppdagelse var at ikke alle forsto rekursjon og hvordan referanser fungerer.

Andre — live coding. Vi gikk inn pĂ„ codewars.com, valgte enkle oppgaver som sortering av et array av ord etter den siste bokstaven og i lĂžpet av 30-40 minutter forsĂžkte vi sammen med kandidaten Ă„ fĂ„ alle tester til Ă„ gĂ„ igjennom. Det virket ikke som det skulle vĂŠre noen overraskelser fra folk som mestret kryss og prikk — men i praksis klarte ikke alle Ă„ innse at verdien mĂ„tte lagres i en variabel, og at funksjonen mĂ„tte returnere noe via return. Jeg hĂ„per virkelig at dette var nervĂžsitet, og at de klarte Ă„ hĂ„ndtere disse oppgavene under mer avslappede forhold.

Til slutt, tredje — litt om arkitektur. Vi diskuterte hvordan man kan lage en sþkefelt, hvordan debounce fungerer, hvordan man kan rendre forskjellige widgets i sþkeforslagene, og hvordan front-end kan interagere med back-end. Det ble funnet mange interessante lþsninger, inkludert om server-side rendering og websockets.

Vi har gjennomfþrt 21 intervjuer etter denne modellen. Publikum var helt variert – la oss bruke tegneserier som eksempel:

  1. «Raket». Han roer seg aldri, blander seg inn overalt, og under intervjuene overvelder han deg med tankestrĂžmmen sin, som sjelden henger sammen med det spĂžrsmĂ„let som stilles. Hvis det hadde vĂŠrt i en universitetssetting, ville dette vĂŠrt en velkjent mĂ„te Ă„ demonstrere alle kunnskapene sine pĂ„, nĂ„r man bare husker at man i gĂ„r kveld bestemte seg for ikke Ă„ lĂŠre seg om det — det hjelper lite.
  2. «Groot». Det er vanskelig Ă„ fĂ„ kontakt, fordi han er Groot. Under intervjuene mĂ„ man ofte bruke tid pĂ„ Ă„ dra ut svarene hans ord for ord. Det er greit hvis det bare er en dundrende blokkering – ellers vil det bli veldig vanskelig i det daglige arbeidet.
  3. «Drax». Han har tidligere jobbet med frakt, og har bare lÊrt programmering gjennom JS pÄ Stackoverflow, sÄ han forstÄr ikke alltid hva samtalen egentlig dreier seg om under intervjuet. Men han er en god person, har de beste intensjoner, og vil bli en flott frontend-utvikler.
  4. Og kanskje, «Starlord». Generelt en god kandidat, som man kan forhandle med og fÞre en dialog.

Mot slutten av undersÞkelsene vÄre 7 kandidater kom til finalen, og bekreftet sine hard skills med et flott testprosjekt og gode svar i intervjuene.

Kulturell tilpasning

For selskapet: Det er deg de skal jobbe med! Er kandidaten virkelig klar for Ă„ jobbe ekstremt mye for egen utvikling? Vil han passe inn i teamet?

For junioren: Det er dere de skal jobbe med! Er selskapet virkelig klare til Ä investere i veksten av juniorene, eller vil de bare kaste alt skittent arbeid over pÄ dere for en lav lÞnn?

Hver junior, i tillegg til produktteamet, hvis leder mÄ godta Ä ta dem inn, fÄr en mentor. Mentorens oppgave er Ä guide gjennom en tre mÄneders onboarding-prosess og utvikling av hard skills. Derfor mÞtte vi opp til hver kulturell tilpasning som mentorer og stilte oss selv spÞrsmÄlet: «Vil jeg ta ansvar for Ä utvikle kandidaten i lÞpet av 3 mÄneder etter planen vÄr?»

Denne fasen gikk uten spesielle forhold, og resulterte til slutt i 4 tilbud, hvorav 3 ble akseptert, og gutta ble en del av teamene.

Livet etter tilbudet

For selskapet: Ta vare pÄ juniorene deres, eller sÄ vil andre gjÞre det!

For junioren: AAAAAAAAAAA!!!

NĂ„r en ny medarbeider begynner, mĂ„ vedkommende onboardes – introduceres til prosessene, fĂ„ vite hvordan alt fungerer i selskapet og teamet, og hvordan de generelt skal jobbe. NĂ„r en junior begynner, er det viktig Ă„ forstĂ„ hvordan vi kan utvikle vedkommende.

NÄr vi tenkte pÄ dette, laget vi en liste med 26 ferdigheter som vi mener en junior bÞr ha nÄr onboarding-perioden pÄ tre mÄneder er over. Dette inkluderte hard skills (i henhold til vÄr tech stack), kunnskap om vÄre prosesser, scrum, infrastruktur og prosjektarkitektur. Vi samlet dem i en veikart som er fordelt over tid i lÞpet av tre mÄneder.

Hvordan temme junioren?

For eksempel, her er veikartet til min junior

Til hver junior knytter vi en mentor som jobber med vedkommende individuelt. Avhengig av mentoren og kandidatens nÄvÊrende nivÄ kan mÞtene foregÄ 1 til 5 ganger i uken, i en times tid hver gang. Mentoren tar frivillig pÄ seg oppgaven, og er en initiativrik frontend-utvikler som Þnsker Ä gjÞre mer enn bare Ä skrive kode.

En del av arbeidsmengden fra mentorene lettes ved kurs i vÄr tech stack - Dart, Angular. Kursene gjennomfÞres regelmessig for smÄ grupper pÄ 4-6 personer, der deltakerne kan jobbe uten avbrudd fra jobben.

I lĂžpet av de tre mĂ„nedene samler vi jevnlig tilbakemeldinger fra juniorene, deres mentorer og ledere, og justerer prosessen individuelt. 1-2 ganger i lĂžpet av perioden gjennomfĂžres en evaluering av de tilegnede ferdighetene, og en lignende evaluering skjer pĂ„ slutten – basert pĂ„ denne utarbeides anbefalinger om hva som bĂžr forbedres.

Konklusjon

For selskapet: Er det verdt Ä satse pÄ juniorer? Ja!

For junioren: Se etter selskaper som nĂžye velger kandidater og vet hvordan de skal utvikles.

I lÞpet av tre mÄneder har vi gÄtt gjennom 122 spÞrreskjemaer, 54 testoppgaver og hatt 21 tekniske intervjuer. Dette har gitt oss tre flotte juniorer som nÄ har fullfÞrt halvparten av sine onboarding- og akselererings veikart. De lÞser allerede reelle produktoppgaver i vÄrt prosjekt, hvor det bare pÄ frontend er over 2 000 000 linjer med kode og mer enn 400 repositorier.

Vi har funnet ut at traktoren for juniorer kan og bÞr vÊre ganske krevende, men til slutt er det bare de som virkelig er klare til Ä jobbe hardt og investere i sin egen utvikling som gÄr gjennom den.

NÄ er vÄr hovedoppgave Ä fullfÞre tre mÄneders utviklingsplaner for hver junior i individuell arbeid med en mentor og felles kurs, samle mÄlinger, tilbakemeldinger fra ledere, mentorer og selve deltakerne. Dette vil markere slutten pÄ det fÞrste eksperimentet, hvor vi kan trekke konklusjoner, forbedre prosessen og starte den pÄ nytt for Ä velge nye kandidater.

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster