Хабр, привет! Меня зовут Андрей Пронин, я руководитель «бирюзовой» студии заказной разработки ProninTeam и наставник на курсе по управлению командой разработки в Яндекс Практикуме.
Сегодня я расскажу, как мы набираем джунов в команду: как отбираем резюме, проверяем тестовые, проводим собеседования и какое место в этом уравнении занимает Практикум. Будет полезно как выпускникам, так и всем начинающим разработчикам — многие из наших требований сходятся с запросами рынка.
Как устроена студия ProninTeam
ProninTeam — это студия бирюзового типа. Моя роль в ней, скорее, организаторская — собрать людей и сделать так, чтобы всё работало. От отсутствия бюрократии в конечном итоге выигрывают все.
В первую очередь, заказчики. Под каждый проект мы формируем команду, в которой есть проджект-менеджер и необходимое для проекта количество фронтенд- и бэкенд-разработчиков, дизайнеров и других специалистов.
Как это происходит: мы оцениваем трудозатраты на проект, эпик и потенциальное количество спринтов и начинаем работать. Если в процессе мы понимаем, что фича требует более серьёзного участия, например, бэкенда, чем мы запланировали в начале, мы можем привлечь бэкендера с другого проекта. В такой схеме заказчику легко развивать свой продукт, не озадачиваясь кадровыми вопросами, ведь процессы из-за них не встанут.
Сотрудничество с ProninTeam выгодно и джунам. Это отличный трамплин для роста. Люди набираются у нас опыта и откликаются на более выгодные оферы в других компаниях.
Многие из джунов, ушедших в другие компании, остаются у нас в качестве наставников — получают опыт менторства, развивают скилы и получают пользу для карьеры. Час наставника стоит дороже, чем час джуна-разработчика, но такие специалисты приносят неоценимую пользу — помогают джунам писать качественный код и расти. Получается что-то вроде конвейера: иногда уже через три-четыре месяца начинающие разработчики получают необходимый опыт, меняют работу и остаются с нами в роли наставников, а свободное место занимают новые джуны.
Так мы приходим к трёхстороннему win-win: заказчик получает эффективную команду и качественный код, джуны — портфолио и рост, а студия зарабатывает на марже и развивается.
Как мы набираем джунов в команду
Отбор проходит в несколько этапов.
Публикация вакансий
Главный источник кадров для ProninTeam — это Яндекс Практикум. Есть несколько путей, по которым выпускники попадают в нашу команду.
Первый — это сарафанное радио. Раньше я просто писал знакомым наставникам разных курсов, что мне нужен, например, бэкенд-разработчик, — и мне советовали талантливого джуна. Со временем «сарафан» перестал генерировать нужный поток соискателей, и я переключился на помощь Карьерного центра Практикума.
Специалисты центра помогают выпускникам найти работу: подсказывают, как оформить резюме и портфолио, репетируют с ними собеседования и делятся партнёрскими вакансиями. Один из таких партнёров — это ProninTeam. Для меня сделали отдельный чатик с менеджерами разных направлений. Когда на каком-нибудь из проектов освобождается место, я пишу: ищу X на проект Y за сумму Z. А потом уже возвращаюсь смотреть резюме заинтересовавшихся студентов.
Недавно всё это автоматизировали. В Практикуме появилась Карьера — платформа, где джуны находят работу в IT. Там я тоже размещаю вакансии.
Чаще всего мы набираем в команду разработчиков, в частности на Django (бэкенд) и Next.js (фронтенд). Проджект-менеджеры, дизайнеры и тестировщики требуются реже, так как текучесть кадров по этим направлениям меньше.
Просмотр резюме
Сначала мы получаем резюме. Как такового скрининга у нас нет. Это же новички — что там скринить? Круто, когда человек занимался проектами, но шанс нужно дать каждому. Отсутствие опыта для нас — не критерий отбора.
То же и с сопроводительными. Я их читаю, но это не критерий отбора. Умение писать сопроводительные ничего не говорит о навыках человека в разработке. Эти документы нужны компаниям с HR-отделами и большим потоком входящих откликов. У меня же компания маленькая, ни одного HR-менеджера в штате нет, а поток желающих ограничен.
Единственное, из-за чего кандидат может не пройти первый этап, это финансовые ожидания. Нет смысла напрягать человека, заставлять его делать тестовое задание и тратить своё время, если я заранее знаю, что мы его не потянем. Но обычно ожидания всё же адекватные.
Тестовое задание
После просмотра резюме мы даём кандидатам тестовое задание. По нашим расчётам, оно должно занять примерно три дня и шесть-семь часов чистой работы. У нас есть два задания: бэкендеры создают API для целевых сборов (без интеграции платёжной системы), а фронтендеры — React-компонент со сложным поведением в зависимости от разрешения экрана.
Успешно проходят этот этап 30–40% кандидатов. Причём «успешно» — не значит «идеально», поэтому даже лучших мы, как правило, просим доработать тестовое с нашими замечаниями. Если после второй итерации человек выдаёт приличный результат, мы готовы идти с ним дальше. А если человек выполняет задание, но недотягивает до нашей планки, мы всё равно стараемся принести ему пользу — подробно рассказываем, что можно было сделать лучше и какие знания стоит подтянуть.
Может возникнуть вопрос: почему через тестовое проходит меньше половины кандидатов, ведь все они оканчивают одни и те же курсы? Дело в том, что Практикум даёт базу для запуска карьеры, а мы ожидаем от джунов чуть большего. Или чуть более специфического. Наше задание похоже на дипломный проект в Практикуме, но чуть сложнее и с поправкой на наши кейсы. Чтобы выполнить его, нужно применить весь опыт, полученный на курсе, и провести ещё немного самостоятельной работы.
Например, в Практикуме студенты осваивают React, а у нас нужен Next.js. В Практикуме учат развёртывать окружение через Pip, а мы используем Poetry. Это не rocket science: если человек хорошо учился, готов менять свои привычки и осваивать новое, у него всё получится. Таким заданием мы проверяем ещё и самоходность — одно из самых важных качеств для новичка в разработке.
Кроме неспособности взглянуть на задачу под новым углом, новички допускают и другие ошибки. Например, не понимают, как строится архитектура проекта. Понятно, что это нарабатывается с опытом, но если по тестовому видно, что человек совсем не владеет темой, это повод рассмотреть другого кандидата.
Такой же красный флаг — это нейрослоп в тестовом. В использовании ИИ нет ничего плохого, и сегодня это такой же инструмент, каким раньше был Stack Overflow. Но джуну необходимо понимать, что он генерирует и зачем.
Собеседование
Кандидата, который успешно выполнил тестовое, мы приглашаем на собеседование.
Фронтенд-разработчиков собеседуют эксперты по фронтенду, тестировщиков — тестировщики, а у проджект-менеджеров и бэкендеров я провожу собеседования сам. Кстати, про то, как набираю проджектов, я написал у себя в канале — рассказал, как взял первого менеджера в команду и какие хард- и софтскилы нужны, чтобы пройти собеседование.
Как может проходить интервью в IT, можно посмотреть на моём канале «Андрей += Пронин», где я публикую записи мок-собеседований. Но у нас в компании всё чуть иначе.
Во-первых, собеседование длится по меньшей мере два часа. Во-вторых, я всё чаще ухожу от типовых вопросов к обсуждению тестового. В нём достаточно фактуры, которую можно обсудить и сделать выводы. Обычно я строю вопросы в формате «почему так, а не иначе» — например, почему кандидат выбрал для контейнеризации Docker Alpine, а не Slim. Или почему сделал валидацию в одном, а не другом фрагменте кода. Важно, чтобы человек не просто шёл по методичке и отвечал «так было в курсе», а осознанно закапывался в материал, применял те или иные решения и знал, какие у них есть альтернативы.
Получается, что я прохожу по всем тем же темам, что и интервьюеры, которые задают «100 вопросов для подготовки к собеседованию», но делаю это в формате беседы. Мне кажется, такой подход вызывает меньше стресса у кандидата и даёт мне более верные результаты. Ведь важно не то, как хорошо человек выучил теорию, а то, как он понимает её и применяет знания на практике.
Вместо заключения
У Практикума есть неформальный слоган: «будет сложно, но вы справитесь». Это правда. Больше тридцати человек, которые прошли через ProninTeam, когда-то были обычными джунами, сменившими профессию. В масштабах страны тридцать человек — это почти ничего, но для каждого из этой тридцатки — это безмерно много.
Само существование ProninTeam в нынешнем виде показывает, что у каждого человека есть возможность изменить свою жизнь. Найти своё место в разработке стало сложнее, но рынок ещё существует, а ИИ нас пока не вытеснил. Особенно джунов. И если вы готовы стараться, много работать и идти до конца, всё получится.