Привет! Меня зовут Гриша Евдокимов, я тимлид в техническом департаменте 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, а не придуманные учебные сюжеты. Так, студенты прошлых наборов сделали:

  1. checkup — сервис для проверки решений вступительных задач. Именно через него ребята отправляют свои решения вступительных задач.

  2. 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 и в нашем тг‑канале.

Как поступить

Отбор простой по форме и серьёзный по сути:

  1. Тестовое задание — пара алгоритмических задач (Java, Python или JavaScript). Решение нужно отправить через тот самый checkup.

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

Заявок каждый год больше 3000 — на несколько десятков мест. Так что конкурс серьёзный.

Набор по обоим направлениям стартует примерно в сентябре. Оставляй контакты на school.hh.ru, чтобы не пропустить.

Если узнал себя в «опыта нет, а взять негде» — приходи. Решай задачи, оценивай сложность алгоритмов и приходи с запасом времени. А мы поможем получить тот самый опыт.