Привет! Меня зовут Гриша Евдокимов, я тимлид в техническом департаменте hh.ru и уже несколько лет участвую в организации Школы программистов. Этой осенью мы запускаем её в 17-й раз — и сегодня я хочу разобрать ловушку, с которой сталкивается почти каждый начинающий разработчик.

Представим: ты студент технической специальности, умеешь писать код. Но на работу без опыта не берут, а опыт негде взять без работы. Замкнутый круг, в котором даже толковый студент на собеседовании выглядит слабее, чем он есть. Университет даёт алгоритмы, математику и умение думать. А командного опыта, код‑ревью и навыка спроектировать и развернуть свой сервис — почти нет, хотя именно об этом часто спрашивают на собеседовании.
Школа программистов — как раз про то, как закрыть этот разрыв. За 7 месяцев ученики проходят путь от «решаю задачки на парах» до «мой код работает в проде, и я понимаю, как устроена разработка в большой компании».
И сразу к главному: обучение бесплатное, проходит онлайн и длится всего семь месяцев. Теперь к вопросу, который возникает почти у всех.
Бесплатно — в чём подвох?
На самом деле подвоха нет, причина простая: Школа — это часть нашей воронки найма. Нам в hh постоянно нужны сильные разработчики. Те, кто вырос в Школе, хорошо знают наши процессы и часто остаются с нами на годы — поэтому растить инженеров со студенческой скамьи нам так же важно, как нанимать готовых. По этой причине мы вкладываем время своих инженеров — и не берём за это денег.
Разница с платными курсами тут принципиальная. У курсов бизнес‑модель — продать тебе следующий уровень. У нас — найти будущих коллег. Поэтому нам незачем растягивать программу, рисовать красивую статистику трудоустройства или обещать золотые горы. Нам нужно, чтобы ты действительно научился — потому что однажды мы можем оказаться в одной команде.
И сразу честно: оффер в команду в после окончания Школы — не единственный сценарий. Многие выпускники уходят с навыками в другие компании, и это нормально. Мы растим инженеров, а не «ресурс под свои задачи».
За все эти годы курс прошло более 375 человек. И более 110 из них попали в наш технических департамент. А один из выпускников первого набора сейчас руководит целым направлением МL hh.ru.
Чем придётся платить
Денег не возьмём, но заплатить придётся временем и силами:
7 месяцев обучения: 4 месяца теории + 3 месяца командного проекта
Два онлайн‑занятия в неделю по будням, примерно с 18:00 до 20:00 по Москве.
Около 15 часов нагрузки в неделю на теоретической части и около 20 часов — на проектной.
Совмещать Школу с учёбой непросто, поэтому заранее рассчитывай силы.
Формат «посмотреть видосы в записи по выходным» здесь не сработает. У нас — живые онлайн‑занятия, домашка и спрос примерно как на работе.
Как мы учим
Теория идёт по двум направлениям на выбор — Frontend и Backend. Фронт — это CSS, JavaScript, React, TypeScript. Бэк — Java, Spring, базы данных, асинхронность. Сверху — общие лекции для всех: как работать в командах, что такое код‑ревью и канбан, Python и Docker.
Это тот контекст, из‑за нехватки которого джуниоры обычно буксуют в первые месяцы на работе: объясняем, почему задачи живут на доске, а сервис крутится в контейнере. И эти лекции, как и всё остальное, ведут наши же инженеры и менеджеры — те люди, которые делают hh каждый день. Домашние задания тоже проверяют действующие инженеры — люди, которые каждый день пишут код в продакшене.
А дальше — самое ценное: 3 месяца командного проекта под менторством. Это не учебная песочница. Студентов разбивают на небольшие кроссфункциональные команды: фронтендеры и бэкендеры работают вместе, как в обычной продуктовой разработке. Цель — собрать проект целиком, а не один кусок. У каждой команды есть свой ментор из hh. Он не всегда работает в том же направлении и не всегда сможет ревьюить твой код. Зато поможет не застрять и подскажет, как всё устроено в настоящих командах.
Остальное вы решаете сами. Мы не используем спринты — только канбан И команда сама договаривается о правилах: когда проводить дейлики, как делить и резать задачи, что показывать на каждом демо. За проектную часть таких демо будет три. На каждом команда показывает работающий проект, а на финальном — мы зовём весь технический департамент. То есть почти как на настоящей работе — только с правом ошибаться, задавать вопросы и учиться.
Что значит «настоящий проект»
Лучше всего показать это на примерах. Идеи для проектов мы собираем со всей компании — это реальные задачи от команд hh, а не придуманные учебные сюжеты. Так, студенты прошлых наборов сделали:
checkup — сервис для проверки решений вступительных задач. Именно через него ребята отправляют свои решения вступительных задач.
hh‑vacancy‑suggest — саджест (умные подсказки) при поиске вакансий в соискательском поиске hh. В отличие от первого , этим проектом пользуются уже не студенты Школы, а реальные клиенты сервиса.
Заметил иронию? Часть инструментов студенты Школы создают для самой Школы — и ими потом пользуются следующие наборы. А некоторые проекты, например саджест вакансий, уходят ещё дальше — к реальным пользователям hh. Это и есть честный продакшен: у твоего кода появляются пользователи, у твоих решений — последствия, а у багов — те, кто их замечает. В итоге в твоём портфолио оказывается не «пет‑проект на выходные», а продукт, который реально работает.
Разомнёмся
Мы не учим программировать с нуля — ждём, что ты уже пишешь код и знаком с базовыми алгоритмами. Чтобы было понятно, какой уровень подготовки мы ожидаем, — вот задачка в духе наших вступительных:
Дан массив целых чисел и число target. Определи, есть ли в массиве два элемента, сумма которых равна target (нужен только ответ «да/нет», не индексы).
Решить «в лоб» можно двойным циклом за O(n²). Самое быстрое — O(n) через хеш‑таблицу. А вот классический трюк на «два указателя»: отсортировать массив (это O(n*log(n)) и пройти его с двух концов — заодно покажу, как это выглядит:
def has_pair_with_sum(nums: list[int], target: int) -> bool: nums = sorted(nums) left, right = 0, len(nums) - 1 while left < right: current = nums[left] + nums[right] if current == target: return True if current < target: left += 1 else: right -= 1 return False
Если пока не понимаешь, что тут происходит, — это нормально. Именно такие вещи мы и разбираем. А если понимаешь, почему после сортировки хватает двух указателей за один проход и почему через хеш‑таблицу можно вообще без сортировки, за O(n)? — значит, ты в хорошей форме.
Язык, кстати, нам не важен: на вступительном ты выбираешь свой — Java, Python или JavaScript. Полные разборы наших задач лежат на Хабре: разбор 2024 и свежий разбор. Совет: решай сам, без нейросетей. На собеседовании ChatGPT не поможет, а навык останется с тобой.
Кто доходит до конца
Скажу как есть: Школа требует сил, поэтому до финала доходят не все. Но это вопрос не таланта, а только времени и упорства. Обычно сходят с дистанции не те, кому не хватает знаний, а те, кто недооценил нагрузку.
И да, за неуспеваемость тоже могут отчислить. Здесь придётся реально учиться — регулярно ходить на лекции и делать домашки. Если относится к обучению серьёзно и не бросать на полпути, пройти программу вполне реально.
А вот оффер в hh получают только самые целеустремлённые — те, кто вкладывается в команду и проект целиком, а не просто «делает задачи в своей зоне ответственности». На проекте сразу становится видно, кто как работает.
Кто всё это ведёт
Раз уж заговорили о доверии, расскажу, кто делает Школу. На самом деле за проектом стоит небольшая команда: трое сотрудников из технического департамента (я как тимлид плюс фронтендер и бэкендер — мы отвечаем за программу и менторство), HR (для которого Школа — часть работы), и ещё пара ребят, которые берут на себя всю организацию, чтобы инженеры могли сосредоточится на обучении, а не логистике. Для одного из них Школа — основная фуллтайм‑работа.
Что касается меня, то мне просто нравится смотреть, как люди растут. Берёшь студента без опыта, вкладываешься семь месяцев, а через пару лет он катит в прод фичи лучше, чем катал бы я. Ради этого ощущения я и занимаюсь Школой.
Что в итоге
Если коротко, за эти месяцы ты получишь:
реальный проект в портфолио — не учебную заглушку, а штуку, которая работает
опыт командной разработки: трекер, демо, ответственность за общий
результат, не только за свой кусоккод‑ревью каждый день — и на домашках от инженеров hh, и в команде друг от друга. Обычно обратную связь такого уровня спецы получают только устроившись на работу
шанс на оффер — или как минимум сильную строчку в резюме, с которой проще пройти собеседование в другие компании
И это не формат «сделай по методичке» — вы с командой сами выбираете технологии, выстраиваете процессы, режете большую задачу на куски и запускаете проект с нуля.
Не только программисты: впервые — Школа аналитиков
И ещё одна новость: в этом году мы впервые запускаем Школу аналитиков — отдельный поток для тех, кому ближе данные и аналитика, чем разработка. Это самый первый набор и стартует он примерно в сентябре. Если тебе интересно это направление — следи за анонсами на school.hh.ru и в нашем тг‑канале.
Как поступить
Отбор простой по форме и серьёзный по сути:
Тестовое задание — пара алгоритмических задач (Java, Python или JavaScript). Решение нужно отправить через тот самый checkup.
Собеседование — стандартный созвон, на котором мы поговорим о том, как ты рассуждаешь и принимаешь решения, а не только о том, получился ли у тебя правильный ответ.
Заявок каждый год больше 3000 — на несколько десятков мест. Так что конкурс серьёзный.
Набор по обоим направлениям стартует примерно в сентябре. Оставляй контакты на school.hh.ru, чтобы не пропустить.
Если узнал себя в «опыта нет, а взять негде» — приходи. Решай задачи, оценивай сложность алгоритмов и приходи с запасом времени. А мы поможем получить тот самый опыт.
