Катастрофа в найме разработчиков-джунов в цифрах. Как выкрутились мы

Привет, это Лиза из Лиги А.! Последний год отовсюду слышны жалобные стоны эйчаров и тимлидов, которые нанимают джунов. Ходят байки, что на джуновскую вакансию за сутки прилетает тысяча откликов, среди которых единицы адекватных. Это не байки. За деталями добро пожаловать в статью — расскажу с цифрами и примерами, как мы выкрутились из сложной ситуации с наймом.

Краткое содержание статьи

  • У нас «сломался» стандартный процесс найма джунов: трудозатраты на найм одного человека доходили до 100 часов, эйчары и тимлиды выгорали.
  • Перевернули процесс на 180 градусов.

  • С помощью автоматического тестового задания отсортировали всех кандидатов по уровню технических навыков.
  • Пошли по полученному списку сверху вниз.

  • И наняли сильного джуна после всего 5 собеседований.
  • Трудозатраты на найм снизились в 20 раз — со 100 до 5 часов.
  • Достаточный для нас технический уровень был всего у 2.5% откликнувшихся.

Дальше покажу путь до и после работы над процессом, со статистикой на всех шагах воронки. Разберу тестовые задания разработчиков и расскажу, как работает автоматика и как с ней справляется ИИ.

Спойлер — никак не справляется.

Полная боли часть про то, как сломался найм

Как работал стандартный процесс:

  1. HR размещает вакансию.
  2. Затем разбирает отклики и созванивается с кандидатами для проверки на общую адекватность.

  3. После этого кандидаты выполняют тестовое задание.
  4. Готовые тестовые вручную проверяет тимлид (благо они небольшие).

  5. Тех, кто хорошо выполнил тестовые, приглашают на техническое собеседование.

Каждый этап — это фильтр. HR эффективно фильтровал по софт-скиллам, тимлиды эффективно оценивали технические навыки. Всё работало отлично, пару лет назад.

Но многое изменилось за последний год:

👉🏻 На размещённую вакансию с галочкой «без опыта» стало прилетать 600 откликов за несколько часов, а потом ещё несколько сотен в течение нескольких дней.

👉🏻 Резюме и тексты в откликах выглядят хорошо, а на первичных созвонах с HR кандидаты поют соловьём. «Спасибо» ИИ и карьерным модулям на онлайн-курсах.

👉🏻 На тимлида сваливаются сотни слабо выполненных тестовых, которые надо проверить вручную.

В итоге все перегружены — время дорогих спецов тратится десятками часов, деньги сгорают, а выхлоп околонулевой. На сотню откликов встречается 2-3 средних кандидата, а сильные встречаются ещё реже.

А, чуть не забыла — большинство самых слабых кандидатов хотят сразу 100к на руки. Знакомо? Тогда читайте дальше

Как мы упорно искали способ починить найм

Сейчас, когда всё уже получилось, легко писать, как будто мы сначала сели, подумали, осознали все ошибки и сразу нашли правильное решение. В реальности было иначе, но структура статьи — это структура статьи.

В какой-то момент поняли, что нам важно наличие у кандидата технических навыков. Но их уровень почему-то проверяем в самом конце процесса.

Мы перевернули процесс:

  • стали оценивать технические навыки в самом начале,
  • сделали оценку автоматической,
  • подключали HR и дорогого тимлида в самом конце.

Но и это не всё.

Можно ведь не просто фильтровать кандидатов по уровню навыков, можно ещё и сортировать — от самых сильных к самым слабым. И сначала собеседовать самых сильных.

Стандартный способ оптимизации многих алгоритмов — сначала сортируешь данные, потом запускаешь тяжёлую обработку

Триумфальная проверка нового процесса

В общих чертах стало понятно, как всё должно работать. Но одно дело теоретизировать, а другое — проверять идеи на практике. Нам повезло, так как сошлись все звёзды:

  1. Появилась необходимость нанять джуна-верстальщика. На горизонте возник проект с кучей подходящих задач. Тимлиды начали сопротивляться, HR тоже. По-старому нанимать было нельзя.

  2. Лига сильно связана с HTML Academy.
  3. HTML Academy недавно провела олимпиаду по фронтенду для Яндекса. Поэтому мы смогли переиспользовать сам интерфейс олимпиады и задания.

Мы взяли все наработки и выстроили воронку следующим образом:

  1. Есть вакансия на HH.

  2. При отклике на вакансию приходит ссылка с автоинвайтом в копию интерфейса олимпиады, заточенную под нас.

  3. В интерфейсе студент выполняет серию заданий и загружает их в систему.
  4. Задания оцениваются автоматически — мы видим статистику и рейтинг кандидатов.

  5. Идём по рейтингу сверху вниз и собеседуем самых сильных. 5 приятных собеседований с отличными кандидатами и выбираем самого подходящего. И почему так нельзя было сразу?

Кстати, эйчар и тимлид перестали сопротивляться, когда узнали про изменения. У тимлида даже немного порозовели щёчки (по исходной задумке он сам должен был запилить тестовое задание с автопроверками, а ему не пришлось).

Лирическое отступление. Обман, ложь и ЧАТГПТ при найме

Механизм оценки технических навыков — самая важная часть найма разработчиков. Кандидаты научились хакать его с помощью ИИ. Как быть?

Если вы используете тесты — можете их выкидывать, они не показывают ничего. Но если у вас есть заказчики, готовые платить за решение тестов, то и разработчики, умеющие решать их с помощью ИИ, вам пригодятся. Если серьёзно, то можно каждого кандидата звать офис и заставлять решать тесты при вас. Но это не для всех.

С классическими тестовыми всё интереснее. Обычно в них реализуются задачи, максимально похожие на задачи заказчиков. Если кандидат хорошо выполняет тестовое с помощью ИИ и может так же хорошо выполнять задачи заказчика с помощью ИИ, то это хорошо или плохо? Мы в раздумьях, склоняемся к «хорошо, но с дополнительным контролем качества».

Подробно о тестовых заданиях с автопроверками

Мы искали джуна-верстальщика на зарплату 40 000 рублей. Нам нужно, чтобы он:

  • умел делать адаптивную вёрстку по макету с учётом переполнения,
  • был способен делать строгий пиксельпёрфект (когда требуется),
  • знал JS на уровне написания небольших компонентов и подключения готовых библиотек.

Взяли наш список требований, сравнили со списком навыков, который можем проверить с помощью заданий олимпиады, и нас всё устроило.

Итоговый перечень навыков, который автоматически оценивается после выполнения тестового:

  • использование готовых сборок,
  • использование готовых инструментов автоматического тестирования,
  • адаптивная вёрстка по макету, без точного попадания в макет,
  • адаптивная вёрстка по макету, с точным попаданием в макет,
  • вёрстка с учётом переполнения,
  • навыки взаимодействия с дом API (модификация дом и работа с событиями),

  • базовые навыки работы со структурами данных,
  • базовые навыки работы с датами,

  • навыки написания сложных условных конструкций.

Задания по вёрстке

Задания по вёрстке устроены следующим образом:

  • Кандидат получает несколько макетов компонентов в Figma и набор автотестов.

  • Для каждого компонента отрисованы три версии (мобильная, планшетная и десктопная) и несколько состояний при переполнении.
  • Автотесты проверяют вёрстку кандидата на пиксельпёрфект для адаптивных состояний и состояний переполнения.
  • Есть два режима проверки — с более мягким пиксельпёрфектом, и с более строгим.

Вот десктопная версия одного из компонентов и её состояние при переполнении текстом
Вот десктопная и мобильная версии другого компонента, а также состояние десктопной версии при переполнении текстом и элементами

Кандидат верстает компоненты, запускает автотесты локально. Затем загружает свой код в систему, где запускаются те же автотесты и формируется оценка.

Задания по JS

Задания по JS устроены похожим образом:

  • Кандидат получает готовую вёрстку, техническое задание и набор автотестов для нескольких компонентов.

  • У каждого компонента три уровня сложности реализации, каждый со своим набором автотестов.
  • Автотесты проверяют насколько реализация соответствует техническому заданию.
  • Как и в автотестах по вёрстке, используется метод регрессионного тестирования: серия взаимодействий с компонентом → скриншот полученного состояния → сравнение с эталоном.

Пример одного из компонентов — это аккордеон «с памятью», который помнит последовательность открытия пунктов. Помимо навыков работы с домом в нём проверяется умение использовать базовые структуры данных

Кандидат пишет скрипты и запускает автотесты локально. Затем загружает свой код в систему, где тоже запускаются автотесты и формируется оценка. В отличие от автотестов по вёрстке, в автотестах по JS есть скрытые сценарии, которые запускаются только на сервере, а локально недоступны.

Как выглядят результаты выполнения тестовых

Вот пример публичных протоколов, которыми сами кандидаты могут делиться по уникальным ссылкам. В этих протоколах первые 10 мест указываются диапазоном, а точное распределение видит только работодатель.

Пример протокола очень сильного кандидата, с которым мы в итоге общались дальше
Пример протокола среднего кандидата, который на собеседование уже не попал

Подробная статистика и результаты

— Откликов на вакансию — 1580 (100%)

— Зарегистрировалось в системе скоринга навыков — 1013 (64%)

— Начали выполнять тестовые задания — 445 (26%)

— Заработали хотя бы один балл за выполнение тестовых — 93 (6%)

— Выполнили тестовое задание хорошо — 40 (2.5%)

👉🏻 Максимально возможное количество баллов — 42, кстати, его набрали 3 человека.

👉🏻 Хорошее тестовое — от 35 баллов включительно.

👉🏻 Мы провели собеседования с 5 лучшими кандидатами и выбрали из них того, кто нам оказался ближе по софт-скиллам.

В заключение

Многие не любят тестовые задания, но в случае с джунами это не страшно, так как соглашаются их выполнить сотни людей.

Технический уровень кандидатов катастрофически низкий. Несколько сотен человек срезалось на этапе установки инструментов автоматизации. Где нужно было по инструкции установить ноду, а потом набрать команду npm i.

Больше 400 человек справилось с настройкой окружения, что уже неплохо. Но меньше четверти из них смогли выполнить хотя бы одно задание по вёрстке или по JS. А показали адекватный уровень скиллов только 40 человек.

Когда перед вами стоит цель нанять одного джуна, то возможность выбирать из 40 сильных кандидатов — это хорошо. Особенно, когда вручную не приходится просеивать несколько сотен. Но в целом на рынке — беда.

Поделитесь в комментариях своим опытом найма джунов. С какими проблемами столкнулись и как вышли из ситуации?

Если вы тоже страдаете с наймом джунов и хотите попробовать сделать похожую автоматизацию, пишите на почту HTML Academy. Ребята помогут настроить процессы и сэкономить время дорогих тимлидов и HR.

А мы уже отмучались с наймом и теперь в нашей команде работают опытные специалисты, которые готовы подключаться к вашим проектам. Пишите нам на почту или мне в телеграм — @gingerliza.

Ну и заходите в Лиговский телеграм канал. Пишем про разработку, опыт, процессы и делаем интересные опросы для разработчиков.

0
17 комментариев
Написать комментарий...
yesYouStp

реклама хтмл академии из подтасованных фактов, надо просто подключить какую-то ахинею-олимпиаду от какой-то хтмл академии

статью писал какой-то трудно-воспитуемый в плане ума организм:

"джуна-верстальщика на зарплату 40 000 рублей. Нам нужно, чтобы он:"
"был способен делать строгий пиксельпёрфект"
"знал JS на уровне написания компонентов"

лол

Ответить
Развернуть ветку
Градибор Пожарский
Нам нужно, чтобы он: "был способен делать строгий пиксельпёрфект" "знал JS на уровне написания компонентов" лол

Что не так? 14 лет назад приходил джуном — требования со скидкой на время были такие же, оплата со скидкой на время — тоже. Ничего сверхъестественного в требованиях нет.

Ответить
Развернуть ветку
pepeChill
14 лет назад

Загугли изменения курса доллара и инфляцию за 14 лет.

Ответить
Развернуть ветку
Градибор Пожарский
оплата со скидкой на время
Ответить
Развернуть ветку
Градибор Пожарский

в пересчёте в долларах так и было. ну ок, немного больше, но тогда и джунов столько не было, откровенно говоря

Ответить
Развернуть ветку
Александр Першин

Старт для джуна без опыта за 40к — это нормальная история по рынку. Не только в Лиге такие условия. Это в среднем типично для аутсорс-компаний. Они на старте платят не так много, потому что им приходится вкладываться в джунов.

Вот тут детальный рассказ о том, как работают со стажёрами в Purrweb, те же среднерыночные цифры – https://www.youtube.com/watch?v=CcDgWKjt4KA

Ответить
Развернуть ветку
Владимир Рыбин

Зачем же искать на стороне джуна без опыта, если своя же академия с профессий практически мидлов выпускает? ( не сарказм :))

Ответить
Развернуть ветку
Елизавета Фелюгина
Автор

Спасибо за интерес :)
Академия всегда выпускала крепких джунов, которые по умолчанию шли к нам, а в 2023 году стала подключать на финальный этап обучения не только нас, но и другие компании.
Поэтому поток ребят в Лигу резко начал снижаться

Ответить
Развернуть ветку
Yan Keller

Ну видно, что вы провели серьезную работу над оптимизацией и получили значительные результаты

Ответить
Развернуть ветку
Елизавета Фелюгина
Автор

Старались, спасибо!

Ответить
Развернуть ветку
Алла Панова

Ох как интересно! Могу ли я пройти это тестовое задание для интереса? Я кстати закончила профессия в Академии несколько лет назад

Ответить
Развернуть ветку
WEBKZPRO

40К вообще смешно ведь!

Ответить
Развернуть ветку
Денис Татаринов

Интересно, спасибо. Призадумался даже.

Ответить
Развернуть ветку
Jaroslav Baker

Работать за 40к - себя не уважать, даже если нет опыта. Странно, что у таких кандидатов хватает мозгов на выполнение задач, если их не хватает для того чтобы не работать почти за бесплатно.

Ответить
Развернуть ветку
Серафим Высотин

Мне кажется, вы судите по стандартам Москвы, СПб и других больших городов или "элитных" сфер работы. В небольших городах 40-45к на руки считается приличной зарплатой. Знаю многих кто работает за 35-40, с опытом и высшим образованием. Хотя, конечно, для программистов сейчас 40 это смешная зарплата.

Ответить
Развернуть ветку
Jaroslav Baker

так ведь в статье как раз про программистов, удивительно, если за такие деньги кто-то выдает что-то сносное в результате своей работы, если это так - дайте их мне сюда) готовы платить 60 😁

Ответить
Развернуть ветку
Александр Першин

У нас есть рейтинги лучших выпускников (фронты и реактеры), которые построены после выполнениями ими проектов совокупным объёмом 100-150 часов. И там намного более сложные вещи делаются, чем в этих тестовых. Все проекты оценены тимлидами, код доступен. Так что если вам нужны сильные ребята — пишите, всё предоставим

Ответить
Развернуть ветку
14 комментариев
Раскрывать всегда