Як прыручыць джуніёра?

Як патрапіць у вялікую кампанію, калі ты джуніёр? Як наняць годнага джуніёра, калі ты - вялікая кампанія? Пад катом раскажу нашу гісторыю найму маладых хлопчыкаў і дзяўчынак на фронтэнд: пра тое, як мы прапрацоўвалі тэставыя заданні, рыхтаваліся праводзіць інтэрв'ю і выбудоўвалі ментарскую праграму для развіцця і онбордынгу пачаткоўцаў, а таксама чаму не працуюць стандартныя пытанні для сумоўяў.

Як прыручыць джуніёра?
Я, спрабую прыручыць джуніёра

Прывітанне! Мяне клічуць Павел, я раблю фронтэнд у камандзе Wrike. Мы ствараем сістэму для кіравання праектамі і сумеснай працы. Займаюся вэбам з 2010 года, 3 гады прапрацаваў на замежным выдаленні, удзельнічаў у некалькіх стартапах і чытаў курс па вэб-тэхналогіях ва ўніверсітэце. У кампаніі я ўдзельнічаю ў развіцці тэхнічных курсаў і ментарскай праграмы Wrike для джуніёраў, а таксама непасрэдна іх наборам.

Чаму мы наогул задумаліся пра наём джуніёраў

Да нядаўняга часу мы набіралі на фронтэнд распрацоўшчыкаў ўзроўню middle або senior – дастаткова самастойных для таго, каб пасля онбордынга рабіць прадуктовыя задачы. У пачатку гэтага года мы зразумелі, што хочам памяняць гэтую палітыку: за год колькасць нашых прадуктовых каманд павялічылася амаль у 2 разы, колькасць франтэндэраў падышла да сотні, а ў недалёкай перспектыве ўсё гэта павінна будзе падвоіцца яшчэ раз. Працы шмат, вольных рук мала, на рынку іх яшчэ менш, таму мы вырашылі звярнуцца да рабят, якія толькі пачынаюць свой шлях у франтэндзе і зразумелі, што гатовыя ўкладвацца ў іх развіццё.

Хто такі джуніёр?

Гэта самае першае пытанне, якое мы сабе задалі. Ёсць розныя крытэры, але самы просты і зразумелы прынцып такі:

Джуніёра трэба тлумачыць, якую фічу і як зрабіць. Мідлу трэба растлумачыць, якая фіча патрэбна, і ён сам разбярэцца з рэалізацыяй. Сіньёр жа сам растлумачыць табе, чаму гэтую фічу не трэба рабіць увогуле.

Так ці інакш, джуніёр - гэта той распрацоўшчык, якому патрэбен рада, як менавіта рэалізоўваць тое ці іншае рашэнне. Ад чаго мы вырашылі адштурхвацца:

  1. Джуніёр - той, хто хоча развівацца і гатовы для гэтага шмат працаваць;
  2. Ён не заўсёды ведае, у які менавіта бок жадае развівацца;
  3. Мае патрэбу ў радзе і шукае дапамогі звонку - у свайго ліда, ментара або ў кам'юніці.

Яшчэ ў нас было некалькі гіпотэз:

  1. На пазіцыю джуна будзе шторм з водгукаў. Трэба фільтраваць выпадковыя водгукі яшчэ на этапе адпраўкі рэзюмэ;
  2. Першасны фільтр не дапаможа - патрэбны яшчэ тэставыя заданні;
  3. Тэставыя заданні ўсіх напалохаюць - Яны не патрэбныя.

Ну і вядома, у нас была мэта: 4 джуніёры за 3 тыдні.

З гэтым усведамленнем мы пачалі эксперыментаваць. План быў просты: пачаць з максімальна шырокай варонкі і спрабаваць паступова звужаць яе так, каб паспяваць апрацоўваць паток, але каб не звесці яго да 1 кандыдата на тыдзень.

Размяшчаем вакансію

Для кампаніі: Будуць сотні водгукаў! Падумайце пра фільтр.

Для джуніёра: Не бойцеся апытальніка перад адпраўкай рэзюмэ і тэставага задання - гэта прыкмета таго, што кампанія пра вас паклапацілася і добра наладзіла працэс.

У першы ж дзень да нас прыляцела каля 70 рэзюмэ ад кандыдатаў "з веданнем JavaScript". А потым яшчэ. І яшчэ. Мы фізічна не маглі паклікаць усіх на інтэрв'ю ў офіс і выбралі з іх рабят з найбольш класнымі пет-праджэктамі, жывым гітхабам ці хаця б вопытам.

Але галоўная выснова, якую мы для сябе зрабілі ў першы ж дзень - шторм пачаўся. Настаў час дадаць форму апытальніка перад адпраўкай рэзюмэ. Яе задачай было адсеяць кандыдатаў, не гатовых прыкласці мінімальных намаганняў для адпраўкі рэзюмэ, і тых, хто не валодае ведамі і кантэкстам хаця б у той меры, каб загугліць правільныя адказы.

У ёй былі стандартныя пытанні пра JS, вёрстку, вэб, Computer Science – іх ведае кожны, хто ўяўляе, што пытаюцца на сумоўі на франтэндзе. У чым адрозненне let/var/const? Як прымяніць стылі толькі для экранаў, меншых за 600px у шырыню? Мы не хацелі задаваць гэтыя пытанні на тэхнічным інтэрв'ю - практыка паказала, што на іх можна адказаць пасля на 2-3 сумоўі, зусім не разбіраючыся ў распрацоўцы. Але затое яны змаглі першасна паказаць нам, ці разумее, у прынцыпе, кандыдат кантэкст.

У кожнай катэгорыі мы нарыхтавалі па 3-5 пытанняў і дзень за днём мянялі іх набор у форме водгуку, пакуль не выключылі самыя прахадныя і самыя складаныя. Гэта дазволіла скараціць паток - за 3 тыдні мы атрымалі 122 кандыдаты, з якімі можна было працаваць далей. Гэта былі студэнты-айцішнікі; хлопцы, якія захацелі перайсці на фронт з бэкенда; працоўныя ці інжынеры па 25-35 гадоў, якія кардынальна захацелі змяніць род дзейнасці і прыклалі розную колькасць сіл да самаадукацыі, курсам і стажыроўкам.

Знаёмімся бліжэй

Для кампаніі: Тэставае заданне не адпужвае кандыдатаў, але дапамагае скараціць варонку.

Для джуніёра: Не копіпастыце тэставыя - гэта прыкметна. І трымайце ў парадку свой гітхаб!

Калі б мы паклікалі ўсіх на тэхнічнае інтэрв'ю, нам прыйшлося б праводзіць прыкладна па 40 інтэрв'ю ў тыдзень толькі для джуніёраў і толькі на франтэндзе. Таму мы вырашылі праверыць другую гіпотэзу - пра тэставае заданне.

Што для нас было важна ў тэставым:

  1. Выбудаваць добрую якая маштабуецца архітэктуру, але без аверінжынірынга;
  2. Лепш рабіць даўжэй, але зрабіць добра, чым за ноч зляпіць выраб і адправіць з каментаром "абавязкова давяду да канца";
  3. Гісторыя распрацоўкі ў гіце - інжынерная культура, ітэратыўнасць распрацоўкі і тое, што рашэнне не назапашана зусім нахабна.

Мы сышліся на тым, што жадаем паглядзець адну алгарытмічную задачу і невялікае вэб-прыкладанне. Алгарытмічныя былі нарыхтаваны на ўзроўні лабараторак пачатковых курсаў - бінарны пошук, сартаванне, праверка на анаграмы, праца са спісамі і дрэвамі. У выніку мы спыніліся на бінарным пошуку ў якасці першага выпрабавальнага варыянту. Вэб-дадаткам павінны былі стаць крыжыкі-нулікі з выкарыстаннем любога фрэймворка (ці без яго).

Тэставое заданне здужала амаль палова з пакінутых рабят - нам даслалі рашэнні 54 кандыдаты. Неверагодны інсайт - як думаеце, колькі рэалізацый крыжыкаў-нулікаў, гатовых да капіпасты, ёсць у сеткі?

Колькі?Насамрэч, падобна што толькі 3. І ў пераважнай большасці рашэнняў былі менавіта гэтыя 3 варыянты.
Што не спадабалася:

  • капіпаста, або распрацоўка па адным і тым жа тутарыяле без уласнай архітэктуры;
  • абедзве задачы ў адным рэпазітары ў розных тэчках, гісторыі коммітаў пры гэтым вядома няма;
  • брудны код, парушэнне DRY, адсутнасць фарматавання;
  • сумесь мадэлі, юшкі і кантролера ў адзін клас доўгай у сотні радкоў кода;
  • адсутнасць разумення юніт-тэставанні;
  • рашэнне «у ілоб» – хардкод матрыцы выйгрышных камбінацый 3х3, што досыць цяжка будзе пашырыць да 10х10, да прыкладу.

А яшчэ мы звярталі ўвагу на суседнія рэпазітары - класныя пет-праджекты ішлі ў плюс, а куча тэставых заданняў ад іншых кампаній была хутчэй за званочкам: чаму ж кандыдат не змог прайсці туды?

У выніку мы знайшлі класныя варыянты на React, Angular, Vanilla JS – такіх набралася 29. І яшчэ аднаго кандыдата мы вырашылі запрасіць без тэставых за яго вельмі стромкія пет-праджекты. Наша гіпотэза пра карысць тэставых заданняў пацвердзілася.

Тэхнічнае інтэрв'ю

Для кампаніі: Да вас прыйшлі не мідлы/сеньёры! Трэба больш індывідуальнага падыходу.

Для джуніёра: Памятайце, што гэта не іспыт - не спрабуйце адмаўчацца на тройку або заваліць прафесара патокам усіх сваіх магчымых ведаў, каб ён заблытаўся і паставіў «выдатна».

Што мы жадаем зразумець на тэхнічным інтэрв'ю? Простую рэч - як кандыдат цяміць. Верагодна, ён валодае нейкімі хард скіламі, калі прайшоў першыя этапы адбору - засталося высветліць, ці ўмее ён іх прымяняць. Мы сышліся на 3 задачах.

Першая - пра алгарытмы і структуры дадзеных. Ручкай, на лісточку, на псеўдамове і з дапамогай малюнкаў мы разбіраліся, як скапіяваць дрэва ці як выдаліць элемент з аднаскладовага спісу. Непрыемным адкрыццём стала, што не ўсё разумеюць рэкурсію і тое, як працуюць спасылкі.

Другая - лайв кодынг. Мы заходзілі на codewars.com, выбіралі нескладаныя рэчы накшталт сартавання масіву слоў па апошняй літары і на працягу 30-40 хвілін разам з кандыдатам спрабавалі прымусіць усе тэсты прайсці. Здавалася, не павінна быць сюрпрызаў ад рабят, якія здужалі крыжыкі-нулікі - але на практыку не ўсё змаглі ўсвядоміць, што значэнне трэба захоўваць у зменную, а функцыя павінна нешта вяртаць праз return. Хаця я шчыра спадзяюся, што гэта быў мандраж, і хлопцы змаглі разабрацца з гэтымі задачамі ў больш лайтавых умовах.

Нарэшце, трэцяя – крыху пра архітэктуру. Абмяркоўвалі, як можна зрабіць пошукавы радок, як пры гэтым працуе debounce, як рэндэрыць розныя фішкі ў падказках пошуку, як фронтэнд можа ўзаемадзейнічаць з бэкенд. Знайшлося нямала забаўных рашэнняў, у тым ліку пра server-side рэндэрынгу і вэб-сокеты.

Мы правялі 21 інтэрвію па такой схеме. Публіка была зусім разнамасная - давайце на коміксах:

  1. “Ракета”. Ніколі не супакойваецца, усюды залазіць, а на інтэрв'ю заваліць вас патокам думак, напрамую нават не звязаных з зададзеным пытаннем. Калі б справа была ва ўніверсітэце, гэта была б знаёмая многім спроба прадэманстраваць ну наогул усе свае веды, калі пра білет памятаеш толькі, што ўчора ўвечары вырашыў не вучыць яго — усё роўна не выцягнеш.
  2. «Грут». З ім дастаткова цяжка ўвайсці ў кантакт, таму што ён ёсць Грут. На інтэрв'ю даводзіцца доўга разгойдваць, выцягваць адказы слова за словам. Добра, калі гэта проста ступар - інакш потым у штодзённай працы вам будзе вельмі цяжка.
  3. «Дракс». Раней займаўся грузаперавозкамі, а з праграмавання вучыў толькі JS па Stackoverflow, таму не заўсёды разумее, пра што ўвогуле ідзе размова на сумоўі. Пры гэтым добры чалавек, мае лепшыя намеры і хоча стаць класным франтэндэрам.
  4. Ну і мусіць, "Зорны лорд". У цэлым, нядрэнны кандыдат, з якім можна дамовіцца і выбудаваць дыялог.

Пад канец нашых пошукаў 7 кандыдатаў выйшлі ў фінал, пацвердзіўшы свае хард скілы класным тэставым заданнем і добрымі адказамі на інтэрв'ю.

Культурная адпаведнасць

Для кампаніі: Вам з ім працаваць! Ці дакладна кандыдат гатовы працаваць экстрэмальна шмат для свайго развіцця? Ці дакладна ён упішацца ў каманду?

Для джуніёра: Вам з імі працаваць! Ці сапраўды кампанія гатова ўкладвацца ў рост джуніёраў, ці проста зваліць на вас усю брудную працу за нізкую зарплату?

Кожны джуніёр апроч прадуктовай каманды, лід якой павінен пагадзіцца яго ўзяць, трапляе да ментара. Задача ментара - правесці яго праз трохмесячны працэс онбордынгу і прапампоўкі хард-скілаў. Таму на кожны cultural fit мы прыходзілі ў якасці ментараў і адказвалі сабе на пытанне: «Ці вазьму я на сябе адказнасць прапампаваць кандыдата за 3 месяцы па нашым плане?»

Гэты этап праходзіў без асаблівасцей і ў выніку прынёс нам 4 афера, 3 з якіх былі прынятыя, і хлопцы выйшлі ў каманды.

Жыццё пасля афера

Для кампаніі: Паклапаціцеся пра вашых джуніёраў ці гэта зробяць іншыя!

Для джуніёра: АААААААААААА!!!

Калі выходзіць новы працаўнік, яго трэба заанбардзіць - увесці ў курс працэсаў, распавесці, як усё ўладкована ў кампаніі і ў камандзе і як наогул яму працаваць. Калі выходзіць джуніёр, трэба зразумець, як яго развіваць.

Калі мы пра гэта задумаліся, то сфарміравалі спіс з 26 скілаў, якімі, на нашу думку, павінен валодаць джуніёр да канца трохмесячнага тэрміна онбордынгу. Туды ўвайшлі хард-скілы (па нашым стэку), веды па нашых працэсах, скраме, інфраструктуры, архітэктуры праекта. Мы аб'ядналі іх у роадмап, размеркаваны па часе на 3 месяцы.

Як прыручыць джуніёра?

Напрыклад, вось роадмап майго джуніёра

Да кожнага джуніёра мы прымацоўваем ментара, які працуе з ім у індывідуальным рэжыме. У залежнасці ад ментара і бягучага ўзроўню кандыдата сустрэчы могуць праходзіць ад 1 да 5 разоў на тыдзень па 1 гадзіне. Мянтарамі добраахвотна становяцца ініцыятыўныя франтэндары, якія хочуць рабіць нешта большае, чым проста пісаць код.

Частка нагрузкі з ментараў здымаюць курсы па нашым стэку - Dart, Angular. Курсы праводзяцца рэгулярна для невялікіх груп 4-6 чалавек, дзе хлопцы займаюцца без адрыву ад працы.

На працягу 3 месяцаў мы перыядычна збіраем зваротную сувязь ад джуніёраў, іх ментараў і лідаў і карэктуем працэс індывідуальна. 1-2 разы за ўвесь перыяд праводзіцца праверка прапампаваных скілаў, такая ж праверка праводзіцца ў канцы - на іх аснове фармуюцца рэкамендацыі, што менавіта варта падцягнуць.

Заключэнне

Для кампаніі: Ці варта ўкладвацца ў джуніёраў? Так!

Для джуніёра: Шукайце кампаніі, якія старанна адбіраюць кандыдатаў і ведаюць, як іх развіваць.

За 3 месяцы мы прагледзелі 122 апытальнікі, 54 тэставыя заданні і правялі 21 тэхнічнае інтэрв'ю. Гэта прынесла нам 3-х класных джуніёраў, якія зараз прайшлі палову сваіх роадмапов па онбордынгу і акселерацыі. Яны ўжо закрываюць рэальныя прадуктовыя задачы ў нашым праекце, дзе толькі на франтэндзе больш за 2 000 000 радкоў кода і больш за 400 рэпазітароў.

Мы высветлілі, што варонка для джуніёраў можа і павінна быць дастаткова складанай, але ў выніку праз яе праходзяць толькі тыя хлопцы, якія сапраўды гатовы вельмі шмат працаваць і ўкладвацца ў сваё развіццё.

Цяпер наша асноўная задача - завяршыць трохмесячныя роадмапы па развіцці для кожнага джуніёра ў рэжыме індывідуальнай працы з ментарам і агульных курсаў, сабраць метрыкі, фідбэк лідаў, ментараў і саміх рабят. На гэтым першы эксперымент можна будзе лічыць завершаным, рабіць высновы, паляпшаць працэс і запускаць яго нанава для адбору новых кандыдатаў.

Крыніца: habr.com

Дадаць каментар