Рынок найма junior-разработчиков в России переживает странный период: требования к начинающим специалистам по факту выше, чем к senior-инженерам, потому что конкуренция за первые позиции несопоставимо жёстче. Один из разработчиков с 7,5-летним стажем решил проверить, насколько эта диспропорция отражает реальный уровень кандидатов, и провёл собственный эксперимент.

Вместо классического алгоритмического задания — написать сортировку или обойти граф — он подготовил тестовое в формате рефакторинга. Исходная точка: намеренно плохо спроектированный монолит интернет-магазина на Django с плотной связностью компонентов, смешением бизнес-логики и HTTP-слоя, спорными зависимостями между модулями и потенциальными проблемами согласованности данных. Задача — не просто «переписать Django на FastAPI», а декомпозировать монолит в поддерживаемый backend-проект с понятной структурой. Выбор архитектуры, подхода к тестированию, организации авторизации и использования паттернов вроде SAGA оставался за кандидатом.

Минимальный порог включал перенос бизнес-логики, разделение HTTP-слоя и доменной логики, явный слой доступа к базе данных, валидацию входных данных, обработку ошибок, запуск одной командой, конфигурацию через переменные окружения и базовую контейнеризацию. Оценка шла в два этапа: сначала — как заказчик, проверяя, работает ли продукт со стороны клиента; затем — как инженер, оценивая поддерживаемость решения. Финальный этап — устное объяснение принятых решений и предложения по дальнейшему развитию проекта.

Все присланные проекты запустились; около трети — без критических ошибок, часть содержала API Gateway, Kafka и чистую архитектуру.

Результаты удивили. Все присланные проекты запустились — этого автор не ожидал. Около трети решений обошлись без критических ошибок. Встречались и сильные работы: один из кандидатов самостоятельно реализовал API Gateway с проверкой токенов, применил чистую архитектуру и грамотно выстроил взаимодействие с Kafka — хотя ничего из этого явно не требовалось. На собеседованиях большинство кандидатов смогли внятно объяснить свои решения, что тоже стало неожиданностью.

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

Эксперимент обнажает структурную проблему: стандартные критерии найма — годы опыта, умение решать олимпиадные задачи на доске — слабо связаны с тем, что backend-разработчик делает каждый день. В реальной работе это разбор legacy-кода, аккуратные изменения в хрупких интеграциях, вытаскивание структуры из монолитов и инфраструктурные задачи под бизнес-ограничения. Именно такой сценарий и воспроизводило тестовое.

Отдельный контекст — роль ИИ-инструментов. Автор не считает использование нейросети при выполнении задания проблемой: по его логике, сейчас важнее различить человека, который осознанно применяет ИИ как инструмент, от того, кто генерирует код без понимания рисков и компромиссов. Студент, показавший лучший результат, открыто рассказал, где и как использовал нейросеть, — и это стало частью его преимущества, а не поводом для дисквалификации.

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