Разработчики с опытом 4–6 лет всё чаще получают либо отказ, либо оффер на позицию ниже ожидаемой. Реальные проекты, приличный стек, конкретные результаты — и стандартный ответ: «Мы решили продолжить поиск других кандидатов». Без объяснений. Без обратной связи. Ничего.
Никто не знает, что именно идёт не так. Алгоритмы? Системный дизайн? Поведенческие вопросы? Или просто не повезло с интервьюером в конкретный день?
Я строю эту систему, потому что хотел ответить именно на этот вопрос.
Почему собеседования перестали давать обратную связь
Конкурс на позицию middle-разработчика вырос с десятков до сотен откликов. Рынок переполнен: после волны сокращений в крупных компаниях и после того как ИИ-инструменты снизили видимый порог входа в профессию, резюме стало больше, а вакансий — нет.
Интервьюер, который проводит четыре собеседования в день, физически не может давать развёрнутую обратную связь каждому кандидату. Это время, юридические риски, эмоциональная нагрузка. Проще написать шаблонный отказ и открыть следующее резюме.
Параллельно произошло кое-что ещё. ChatGPT сделал доступным live-coding с подсказками в соседней вкладке и прохождение тестовых заданий с ИИ-помощью. Рекрутеры это знают. В ответ собеседования усложнились, стали длиннее, добавили больше этапов. Фильтры жёстче именно потому, что сигнал зашумлен.
Итог: разработчик получает меньше информации в момент, когда она нужна больше всего.
Я сам проводил технические собеседования в роли нанимающего. Отклонённым кандидатам старался давать обратную связь — но это исключение, не правило. Система устроена так, что молчание проще.
Проблема, которую не решают существующие платформы
Когда разработчик понимает, что нужно готовиться, он идёт на LeetCode, Stepik или Coursera. Это не плохие инструменты. Но у них общая слепая зона: они дают контент — но не дают приоритет.
LeetCode покажет задачи, но не скажет, какой раздел критичен именно для вас. Курс на Stepik пройдёте от начала до конца, даже если 80% материала уже знаете. YouTube-видео посмотрите — и через три недели забудете половину, потому что знание без практики деградирует.
Самая честная аналогия: готовиться к марафону, бегая случайные дистанции без данных о пульсе, темпе и слабых группах мышц.
Нужна была система, которая:
- строит реальный профиль компетентности, а не самооценку
- знает, что ты забыл, не только что не знал
- показывает конкретную точку приложения усилий прямо сейчас
Такой системы не было. Я решил построить её.
Контент-завод: главный инженерный вызов
Техническую архитектуру можно спроектировать за неделю. Контент — нельзя.
Платформа без курсов — красивый пустой ресторан. Пользователь приходит один раз, видит пять тем по одному разделу и уходит навсегда. Нужен был масштаб с первого дня: десятки категорий, сотни подтем, тысячи вопросов с объяснениями и распределением по уровням сложности. Ручное создание — это месяцы работы и команда методистов. У меня было несколько недель и я один.
Решение: использовать LLM не как замену знаниям, а как конвейер производства структурированного контента. Но здесь скрывается главная проблема, которую я не ожидал.
Почему «просто попросить ИИ» не работает
Первые партии вопросов от модели были технически корректны — но бесполезны как учебный материал. Вопросы на знание синтаксиса, тривиальные определения, варианты ответов, где правильный очевиден даже без знания темы. Такие вопросы тестируют внимательность при чтении, а не понимание.
Проблема не в модели. Проблема в том, что «хороший вопрос для технического собеседования» — нетривиальное требование, которое нужно формализовать явно.
Система автокоррекции — главное know-how
Ключевой элемент — не генерация, а валидатор с каталогом анти-паттернов. После того как модель создаёт вопрос, валидатор прогоняет его по списку известных дефектов: вопрос на синтаксис, а не на понимание; правильный ответ угадывается по исключению из вариантов; объяснение просто называет правильный ответ, не объясняя принцип; все варианты одинаково правдоподобны и вопрос не имеет однозначного ответа.
Если дефект найден — валидатор не просто отбраковывает вопрос, а возвращает его на регенерацию с конкретной инструкцией: «вопрос проверяет синтаксис — переформулируй так, чтобы правильный ответ требовал понимания поведения, а не знания метода». Модель получает диагноз и подсказку как его исправить, а не просто сигнал «плохо».
Это и есть главный рычаг масштабирования качества. Без него LLM генерирует по 20–30% брака в каждой партии и не знает почему. С валидатором — тот же брак, но каждый дефект именован и исправлен в том же цикле. Финальный ручной ревью забирает ещё 5–10%.
65+ категорий, 10 000+ вопросов, глоссарии, теоретические статьи, экзаменационные сеты — за несколько недель. С этой системой любая новая тема воспроизводима за день.
Алгоритм, который знает, что вы забыли
Большинство систем оценивают знания бинарно: прошёл тест или нет. Но знание — не бинарная величина. Оно деградирует. То, что отлично знали месяц назад, сегодня размыто до «кажется, что-то про это слышал».
Я реализовал простую модель деградации:
score = accuracy * max(0.3, 1 - days_elapsed / 30) * 100Отвечали на вопросы по теме с точностью 90% — но 25 дней назад — уровень владения уже не 90, а около 34. Тема помечается как «слабая» и попадает в очередь приоритетного повторения.
Это намеренно простая модель — я не строил клон системы с точными расписаниями напоминаний. Мне нужна была система, которая быстро показывает «где вы уже не так уверены, как думаете». Этого достаточно, потому что главная проблема разработчиков — не незнание, а переоценка стареющих знаний. «Я это знаю» — и провал на следующем вопросе о том же, но глубже.
Рекомендации на дашборде строятся по трём категориям:
- 🔴 Критично (уровень < 40%) — учить прямо сейчас
- 🟡 Слабо (40–65%) — повторить до конца недели
- 📘 Не начато — расширять покрытие
Конкретная точка приложения усилий вместо «учи всё подряд».
Архитектурные решения
Контент как код
Первый вопрос при проектировании образовательной платформы: куда класть контент? Очевидный ответ — база данных, админка, редактор. Я выбрал Git.
65 категорий лежат как JSON/Markdown-файлы. Обновление курса = коммит. Откат = git revert. Code review контента через pull request. Когда FastAPI изменит поведение dependency injection — один коммит обновляет все затронутые вопросы, diff виден сразу, откат занимает секунду. CMS такого не даст. Для продукта это означает: контент эволюционирует вместе с технологиями, а не застывает в момент публикации.
Domain-Driven Design
Backend — 13 независимых доменов: auth, users, content, interview, code_review, billing, admin и другие. Оверхед для одного разработчика? Да. Но когда добавлял систему промокодов — работал только в домене billing, не трогая ничего вокруг. Для продукта: каждая новая фича добавляется без страха сломать то, что уже работает. Скорость итераций не падает с ростом кодовой базы.
Геймификация как механика, не украшение
XP, стрики, достижения легко сделать пустыми. Большинство платформ так и делают — бейджи, которые ничего не значат.
Я проектировал с одним вопросом: меняет ли это поведение? Стрик теряется если не ответить ни на один вопрос за день — создаёт привычку ежедневного возврата. XP за завершение темы больше, чем за отдельный вопрос — мотивирует доходить до конца. Пользователи со стриком возвращаются заметно чаще тех, кто занимается хаотично. Неудивительно — но важно, что механика работает именно так, как задумывалась.
Я также добавил «заморозку стрика» — один пропуск в месяц не ломает серию. Без этого стрик превращается в тревогу, а не в мотивацию.
Мок-интервью с ИИ
Здесь есть деталь, которая меняет всё: интервью генерируется по описанию конкретной вакансии. Вставляешь текст джоб-описания — система строит вопросы под стек, уровень и контекст именно этой позиции. Не «вопросы по Python вообще», а «вопросы для senior backend в компании с таким-то продуктом и требованиями».
Это закрывает один из главных пробелов подготовки: большинство кандидатов готовятся к абстрактному собеседованию, а не к конкретному. Разница ощутима — особенно в системном дизайне и поведенческих вопросах, где контекст компании сильно влияет на ожидаемые ответы.
Главная ценность — обратная связь по каждому ответу: что раскрыто, что пропущено, где ответ поверхностный. То, чего не даёт реальное собеседование. Структурные вопросы оцениваются хорошо. Для вопросов с нюансами оценка менее надёжна — если ответ нестандартный, но правильный, ИИ может занизить. Это честное ограничение: обратная связь от системы лучше, чем тишина после отказа, но живого разбора с опытным инженером не заменяет.
Что удивило в процессе
Самое сложное в контент-заводе — не сгенерировать, а проверить. Когда в очереди 500 вопросов на ревью, хочется ускориться. Я установил правило: сомнение = переработка, не публикация. Это замедляет процесс, но контент остаётся честным.
Главная проблема не технологическая. «Как построить» решается за несколько недель. «Как убедить пользователя вернуться завтра» — совсем другая задача. Технически платформа работает. Удержание — это отдельный продуктовый вопрос.
ИИ как инструмент требует дисциплины автора. Модель генерирует убедительно — но не обязательно правильно. Система автокоррекции решает проблему структурно, но финальная ответственность за качество остаётся на человеке.
Почему это про экспертность, а не заучивание
Интервьюер, который видит сотни кандидатов с подготовкой через ИИ-шпаргалки, очень хорошо умеет задавать следующий вопрос — тот, который ломает заученный ответ и требует объяснить принцип.
Tech Path Finder строит именно это: не знание ответов, а понимание принципов. Вопросы уровня senior не тестируют память — они тестируют способность рассуждать при неопределённости. Поэтому в объяснениях к каждому вопросу — не «правильный ответ», а почему этот ответ правильный и при каких условиях это изменится.
Это то, что ИИ в соседней вкладке не даст. И то, что отличает кандидата, которому дают оффер, от кандидата, которому пишут шаблонный отказ.
Попробуйте
Ответьте на 20 вопросов по любой теме. Через 10 минут дашборд покажет, где реальные пробелы — и это, как правило, неожиданно.
Платформа доступна на tech-path-finder.ru. В системе 10 000 кредитов для тестирования — этого хватает чтобы полноценно пройти даже платный курс и составить собственное впечатление.
Для читателей блога действует промокод POTAPOV — по нему можно получить дополнительно 20 000 кредитов. Промокод активен до 19 апреля 2027 года.
Если вы нанимаете разработчиков и хотите посмотреть на инструмент с другой стороны — напишите мне.
Константин Потапов — senior/principal-инженер, строю продукты и консультирую команды.



