Жестокая действительность.
Жестокая действительность.

Для кого статья: для тех, кто набирает разработчиков в свою команду и понимает в технологиях.
О чём статья: о проблемах найма в IT, о нарисованных резюме и зазубренных уроках.
Об авторе: лид стрима в облачном провайдере, набирал большую часть команды в 2024-2025, пришлось скорректировать процесс проведения интервью.

Эта статья — не просто отчёт, а взгляд на реальность набора специалистов, где на первый план выходит борьба с инфоцыганами и “вкатышами”, которые составляют красивые резюме, учатся красиво рассказывать, но не умеют не только разрабатывать, но и просто писать код.


В поисках

За год проведения технических собеседований я, как лид стрима компьют, пообщался с сотнями кандидатов на позиции бэкенд‑разработчиков в облачную платформу. Наша цель — закрыть около десятка вакансий в трёх смежных стримах.
Интервью проводились с сентября 2024-го по сентябрь 2025-го: сначала по 4 двухчасовые встречи в день, иногда больше, иногда меньше. Сначала весь поток резюме шёл через кадровые агентства и HR, позже поток уменьшился, но встреч всё равно было много. Оценивали кандидатов я и мой руководитель, архитектор решений; иногда подключались лиды других команд или приходилось собеседовать одному. Мы вдвоем просеяли тонны резюме в поисках тех самых 10-15 человек, которые действительно могли бы усилить наши команды. Мы оценивали технические навыки в первую очередь, софт-скиллы — второстепенно, но тоже пытались оценивать, в основном на предмет совпадения культурного контекста (это важно для компании в целом) и темперамента, умении принимать взвешенные решения и отстаивать их.

Как мы быстро поняли, по резюме и первым минутам разговора с человеком невозможно оценить реальность его опыта. Есть определенная категория "типажей", которые умеют подстраиваться под воронки отбора эйчаров и проникать на технические интервью. К сожалению, в большинстве случаев HR в IT не имеют навыков и инструментов, чтобы отделить таких осознанных мошенников от честных людей. Получается, что последней "линией обороны" бизнеса от немотивированных трат становится техническое интервью, которое не может быть формальностью и должно специально подготавливаться и разрабатываться.

Ожидания vs реальность по кандидатам

Чтобы понимать, на основе какой выборки у меня собралась статистика, опишу нашего идеального сотрудника и описание среднего приходящего к нам кандидата.
Если кратко: нужно было набрать нескольких сильных мидлов с разнообразным опытом, немного понимающих в энтерпрайз-разработке и распределённых системах.
Если длинно: таблица сравнений ожиданий и реальных кандидатов.

Скрытый текст

Навык/критерий

Идеальный кандидат

Средний приходящий

Опыт разработки Java

5–6 лет

3–25 лет (иногда с руководящим опытом 5–10 лет)

Техническое образование

Да

Техническое / курсы / сертификаты

Возраст

25–30 лет

23–60 лет

Опыт с Spring Boot

Да

Иногда, иногда Java EE, ванильная Java

Понимание JVM

Есть

Как правило отсутствует

Микросервисы

Опыт разработки есть

Монолит или специфическая платформа, иногда микросервисы

Базы данных

Реляционные + может теоретически NoSQL

Реляционные поверхностно, графовые и NoSQL – на словах

Контейнеризация / Docker

Желательно

~1/3 без опыта

Kafka

Желательно

Иногда RabbitMQ, или Kafka на словах

Алгоритмы и структуры данных

Базовое понимание

Часто путаются, пишут лишний код

Код-ревью

Опыт

только половина умеют работать с чужим кодом

Live-coding

3–6 строчек

Большинство испытывает трудности, путают синтаксис

Soft skills

Умение объяснять решение

Часто односложно, абстрактно или пытаются “облаком тегов” запутать интервьюера

Грейд

middle/middle+/senior- в любой стрим

middle- в другие стримы, не Compute

90% едва дотягивают middle-

не менее 50% стажёр или junior

около 10% middle-/middle+/senior-  – потенциально наш кандидат

около 1% senior и выше – предел мечтаний, несколько человек

После сотен собеседований образовалась какая-то статистика, и мы получили вывод: разрыв между ожиданием и реальностью большой. Но проблема оказалась не только в слабых кандидатах, зачастую переоценивающих свои силы, а ещё и в новой породе «волчат» — выпускников курсов, где учат не программировать, а проходить собеседования.

Почему стандартные собеседования не работают

Почему не Leetcode и не «топ-300 вопросов по Java»

За свою карьеру я прошёл много собеседований, в том числе в корпорации, в том числе многоэтапные. Бизнес разный, продукты разные, люди разные. В крупных компаниях интервьюверы обычно обладают экспертизой и задают авторские задачи для live coding. В небольших фирмах часто используют шаблонные вопросы из статей вроде «Топ‑300 вопросов по Java». (вроде этой и этой).

Перед первым собеседованием я задумался: что было бы интересно решать мне самому как кандидату? Начал с того, что знаю лучше всего — баз данных и SQL. Начал с предметной области. Быстро придумал модель склада. Нужно нарисовать модель данных. Я человек ленивый, мне лень открывать графический редактор и рисовать схемы. Напишу текстом, тем более СУБД имеют такой язык как DDL. Получилось что-то вроде этого:

-- Сотрудники склада
CREATE TABLE sotrudnik (
    id uuid NOT NULL,
    name varchar(255) NOT NULL,
    surname varchar(255) NOT NULL, 
    position_id uuid NOT NULL, 
    created_at timestamp NOT NULL,
    CONSTRAINT sotrudnik_pk PRIMARY KEY (id),
    CONSTRAINT sotrudnik_un UNIQUE (name, surname)
);
-- Товары
CREATE TABLE nomenklatura (
    id uuid NOT NULL,
    name varchar(255) NOT NULL,
    supplier varchar(255) NOT NULL, 
    receipt_date timestamp NOT NULL, 
    created_at timestamp NOT NULL,
    CONSTRAINT nomenklatura_pk PRIMARY KEY (id),
    CONSTRAINT nomenklatura_un UNIQUE (name, supplier, receipt_date)
);

(Код носит иллюстративный характер, все совпадения с существующими бизнес-моделями случайны)

Сформулировал серию задач, которые можно модифицировать перед каждым собеседованием. Это защита от «говорящих попугайчиков», которые ходят по собесам и собирают задания.. Сначала одну задачу дал, на следующем – вторую. 

Точно так же придумал максимально не связанную с бизнесом задачу на live coding на java. Собеседник не обязан быть погружён в нашу предметную область, и его некогда погружать, формат интервью не подразумевает этого. И так же такую задачу я могу быстро модифицировать.

Мы не даём задачи, оторванные от реальности. Мы не задаём олимпиадные вопросы, вопросы на самом деле формирует бизнес: предыдущие ошибки, фиксы, запросы пользователей.

Почему разные

Обычно кандидат рассказывает о своем опыте, какой-то интересной задаче или проекте. Рассказывают в целом разное, разные технологии используют, поэтому я задаю разные уточняющие вопросы. Всегда есть тема для разговоров, всегда есть нюансы, которые интересно уточнить.

Что касается разговора о технологиях –  у меня нет какого-то гайда или списка, откуда я читаю, поэтому формулирую вопросы всегда по-разному, а сами вопросы чаще подстраиваю под то, что рассказал человек о своем опыте.

Я понимаю, что есть инфоцыгане, которые ходят по собеседованиям, собирают задачи, делятся друг с другом, готовят говорящих попугайчиков, заучивают вопросы и ответы, поэтому все мои задачи на лайфкодинг могут модифицироваться, обычно перед интервью вношу мелкие правки в одну или две задачи. Или не вношу. Так у меня образовался небольшой набор задачек, которые стали использовать мои коллеги-лиды. Бывает, перед интервью вношу мелкие правки в код, который даю для проверки. Или удаляю часть ошибок. Бывает, что кандидат подозрительно быстро и идеально решает задачу. Я в таком случае могу скопировать из нашего confluence другую (что обычно лень) или модифицировать эту, чтобы проверить, говорящий попугайчик это или человек разумный.

Это кажется сложным, но для погружённого в тему человека не составит труда адаптировать разговор под кандидата. Таким образом решается несколько проблем:

  • LeetCode и топ-300 вопросов не отражают реальную практику и, что важнее, потребности бизнеса.

  • Вопросы и задачи мы подбираем под опыт кандидата, проверяя понимание, а не заученные ответы.

  • Если задача широко известна, предсказуема, а решение идеальное — кандидат мог использовать готовые ответы или ИИ.

  • Live-coding и код-ревью выявляют реальные навыки. Видеосвязь позволяет наблюдать за процессом принятия решений, реакцию кандидата на вопросы и изменения в постановке.

Как вкатиться и не выкатиться: определяем «волчат»

«Волчатами» я называю выпускников курсов, где учат не разрабатывать, а «вкатываться» в IT за пару месяцев. Их резюме выглядят гладко, но при детальном изучении:

  • большие периоды работы в сверхкрупных компаниях, где огромная текучка кадров и сотни проектов. Либо мелкая нарезка опыта в no-name компаниях. Ни тот, ни тот вариант резюме проверить никто не сможет, СБ не поможет. 

  • в резюме опыт работы подчёркивается какими-то корпоративными и экономическими показателями. Разработчик повысил довольство клиентов всей компании на 2% - не верю! Это показатель подразделения или направления бизнеса. Разработчики зачастую таких показателей не видят.

  • в рассказах об опыте могут путать термины, смешивать несовместимые технологии и понятия;

  • повторяют заученные фразы. А если прервать, скорее всего запутается, уже так складно не будет;

  • уходят от конкретики («это делали архитекторы», «это было до меня»). Весь рассказ плоский, буквально так:

— Что именно разрабатывали?

— Корпоративная платформа, её начали писать до меня, я сильно её развивал.

— А что она делала?

— Там была микросервисная архитектура, гейтвей, всё в кубе, сообщения отправляли по кафке.

— А что конкретно делала?

— Микросервисы были в кубернетисе, балансировались балансировщиком, была авторизация на гейтвее.

— Хорошо, а какая была интеграция на платформе?

(Ремарка автора: развернутый вопрос для обсуждений, имелось в виду, какие части синхронные, какие асинхронные, какие протоколы, связь с базой/кешем, монолитным или кластерным, какая балансировка у них)

— Кафка была.

— А были ли партиции, реплики?

— Да были, под каждый микросервис топик.

(Ремарка автора: вообще термин не подходящий под ответ никак)

  • были более прокаченные волчата, которые на уточняющие вопросы отвечали облаком тегов англоязычных терминов с русскоязычными предлогами (помните же некогда хайповую штуку на основе ActionScript и Flash? Люди реально могут отвечать таким облаком тегов). Попытка поговорить на упомянутые темы как правило бесполезна. 

Облако тегов: когда-то мегапопулярная вещь была.
Облако тегов: когда-то мегапопулярная вещь была.

Выявлять таких особей помогает:

  • адаптация вопросов под собеседника, импровизация на основе его рассказа и поведения;

  • если рассказ слишком гладкий, но без конкретики – прерывание, смотрим, сможет ли "попасть в колею";

  • варьируем формулировки ранее заданных вопросов или задаем специально формулированные вопросы о том, что рассказал пятью минутами раньше;

  • много терминов – много вопросов по ним., смешиваю в одном вопросе несколько несовместимых терминов, например. Могут быть заданы заведомо некорректные вопросы (технические и по заданной теме. разумеется).

  • много англицизмов – вопрос с упоминанием русскоязычного термина или аббревиатуры.

Если человек действительно работал с технологией, он сможет поддержать разговор на эту тему. Если же перед нами «волчонок» — начинается театр одного актера. Как правило, до ревью кода или live coding дело не доходит.

Спасти Сару Коннор

Отдельно встречаются эпические истории с ИИ, которые умнее кандидатов.

Как уже писал, есть проблема использования ИИ на собеседованиях. Но проблема не в их наличии, а в том, что на курсах "как вкатиться в Software Architecture за два часа" не учат общению с нейронками (LLM). Ведь если б они умели писать промпты и настраивать ассистентов, то вкатывались бы куда-то в ML, верно? Мошенники-волчата сами себя выдают.

Вот как против них работает мой подход:

  • нет списка вопросов, значит перечень вопросов и ответов для приклеиванию к монитору будет составляться долго

  • набор вопросов основывается на рассказе об опыте (да, я всё слышу, даже если в это время делаю заметки, просматриваю резюме или готовлю блок кода для ревью). Если человек работал с технологией, то он сможет поддержать разговор на эту тему, так? Если нет – у него нет времени корректно сформулировать вопрос нейросети.

  • набор вопросов корректируется и изменяется в зависимости от ответов. Если человек отказывается писать SQL-запрос, мотивируя тем, что работает с NoSQL или ORM, он же с удовольствием поговорит о словарях, снапшотах и кешах 1-2 уровня, так ведь? Да, человек не знает всего, но если использует какие-то абстракции для работы с базой данных. то знает эти абстракции. Но при ответе с помощью ИИ я буду вопросы задавать не более адекватные, чем услышанные мною ответы. С ИИ можно уйти в область сказок на 3-4 вопросе.

  • вопросы формулирую по-разному, не всегда полно, не всегда корректно. Отчасти чтобы проверить софт-скиллы. Изредка кандидаты задают уточняющие вопросы, почти никогда не говорят, что вопрос некорректный. Нейросети как правило не подсказывают ошибку в вопросе и не задают уточняющие вопросы сами по себе. Уверенные в себе кандидаты заметят нестыковки и могут поспорить.

  • формулировки вопросов могу корректировать под собеседника: если назвал много англицизмов, вопрос будет состоять из других терминов, если ответ литературным языком, вопросы будут по возможности полностью на русском, если ответы максимально абстрактны – кандидат хорошо понимает абстракцию –  вопросы станут тоже максимально открытыми. LLM может уйти в область фантазий или древнегреческого солипсизма.

  • если кандидат не отвечает по существу, ушёл в себя, отвечает не про то, я меняю формулировку вопроса, иногда совсем по иначе вопрос выглядит. Тогда роботы вообще переключаются в другую канву повествования, зачастую – сказочную, формулировка вопроса может сильно влиять на ответ. 

Я ни в коем случае не порицаю использование "ИИ" для ускорения и автоматизации работы. Обычно технические интервью подразумевают проверку хард-скиллов и знаний кандидатов, а не скорость реакции и умение писать промпты. Для работы с нейронками всё ж надо уметь валидировать их ответы и уметь критически относиться ко всем предложенным решениям.

Есть конечно и другие сигналы от порабощённых роботами, но их не буду раскрывать в статье.

Как проводили интервью

Стандартное интервью длилось 2 часа и включало:

1. Рассказ о себе — показывает софт-скиллы и задает канву. Хороший рассказ сразу перетекает в техническую дискуссию.

2. Технологические вопросы — импровизация на основе резюме и рассказа. Здесь особенно видно разницу между знанием и заучиванием. У самых сильных кандидатов может незаметно перетечь в 6 секцию (дизайн-ревью).

3. Live-coding на Java — даю простые задачи на пару строк кода. Удивительно, но многие с 10-летним опытом не могут написать работающий код в реальном времени.

4. Live-coding на SQL и разговор о теории БД — иногда пропускаю секцию, иногда провожу частично. Говорим о принципах работы РСУБД, нагрузке, разделению данных, принципах хранения. Может быть несложная задача на написание или правку написанного с ошибкой SQL-запроса.

5. Code review — наш главный фильтр. Подготовил специальный файл с сотнями ошибок — от синтаксических до архитектурных. Для ревью даю произвольное количество методов из него, иногда чуть корректирую. Большинство «волчат» и джунов находят только неправильное наименование и кривые отступы.

6. Design review — этап для самых сильных духом. У меня есть заранее подготовленные картинки, формулировки заданий немного варьирую, могу "забыть" рассказать нюанс. Общаемся, задаём друг другу вопросы. Путаем друг друга. Разумеется, у каждой такой картинки есть несколько решений.  Разумеется, в статье не раскрою, как оцениваю. Иногда конкретную задачу заменяю более философскими вопросами в духе критики и защиты какой-то технологии или решения. К сожалению, редко выпадала возможность провести эту секцию (примерно 5% кандидатов).

В целом старались проводить все секции, чтобы дать оценку кандидату со всех сторон. У нас большой стек, немного различающийся от команды к команде, достаточно большие требования к разработке и продукту, поэтому необходимо определить профпригодность кандидата по всем нашим критериям. Всего знать нельзя, даже сильные разработчики в чём-то могут показать недостатки, нам же надо было успешное в среднем прохождение всех основных секций (без дизайн-ревью).

Почему код-ревью

В моём стриме сейчас 3 продукта, 7 микросервисов, плюс готовятся еще 2 продукта, это минимум 5 микросервисов, разрабатываем общие библиотеки. Есть необходимость переключать людей между продуктами даже внутри стрима, значит надо уметь работать с чужим кодом, это важное требование. Кроме того, у нас в компании практикуется кросс-ревью, это когда разработчики ревьювят MR друг друга, и деплой на DEV-стенд возможен только при наличии минимум двух (в некоторых командах- минимум трёх) подтверждений от команды. Это повышает и вовлечённость разработчиков, возможность "держать руку на пульсе", понимать хотя бы поверхностно доработки в том сервисе, в котором в данный момент не работаешь, и повышает инженерную культуру, разработчики непрерывно обучают друг друга и особенностям синтаксиса, и "чистым" подходам к разработке и проектированию микросервисов.

Проверка софт-скиллов

Человек, имеющий за плечами опыт разработки, будет в адекватных границах защищать своё вИдение, своё решение, свой опыт – это естественно. Сильный специалист будет видеть попытки запутать, некорректные и перефразированные вопросы. Если он при этом уверен в себе, то укажет на мою ошибку или повтор. Это ценно для команды. Мы вкладываемся в развитие, нам не интересно "здесь и сейчас" написать лишь бы что. Могут быть недочёты в проектировании, опечатки в аналитике, мы ожидаем от разработчика внимания к деталям и не только желание, но и умении искать ошибки в работе коллеги и помогать их исправлять.

Кандидаты, которые опытом получили свою "сеньорность", а не просто отсидели на стуле 15 лет, могут рассказывать о своем опыте достаточно абстрактно и поверхностно, но при уточняющих вопросах могут не только рассказать нюансы технологии/подхода/решения, но и аргументированно защитить или раскритиковать. Тогда рассказ о своём опыте становится дизайн-интервью. Если есть понимание решений, технологий, чувствуется ответственность кандидата за сделанные ранее решения, то секции live coding могут сильно упрощаться. Важно, конечно, чтобы он умел писать код, но оценка будет уже более лояльной. Как правило зря, код хороший получается, не всегда идеальный, но вполне годный вариант, написанный за пару минут.

Также секция ревью кода показывает навыки и командной работы, и умение выцепить главное и второстепенное, акцентрировать внимание на ошибках "по своему статусу". Секция даёт большой простор для обсуждений, подсказок, наводящих теоретических вопросов. Могу вопросами запутать или не согласиться с аргументацией. Смотрим, как человек себя ведёт при адекватных и не очень адекватных спорах. Сильных кандидатов (по оценкам в других секциях) этим нисколько не смутить.

Примеры живых кейсов

Воссозданы примерные диалоги.
Все live-кодинги проходят в онлайн текстовом редакторе, мы с собеседником видим кто что пишет или выделяет.

Кейз 1. Космические корабли бороздят просторы банка.

Live-coding SQL. Теоретическая секция по базам выполнена не очень хорошо.

(Показываю модель данных в виде DDL скрипта и задание на написание запроса)

— Я последнее время не очень много работал с реляционными базами

— А с какими тогда?

— С графовыми. На последнем проекте я реализовывал отображение графов для окулус

— А что именно отрисовывали?

— Графы. Я работал на паре с лидом, он придумал этот движок, я реализовывал некоторые задачи

— А что рисовали?

— Графы рисовали, были разные сущности, движок позволял видеть их в трёхметрном виде, масштабировать части.

— А что было в узлах, что в ребрах?

— Разные сущности на нашей платформе, связи?

(Читаю резюме: последнее место работы банк. До этого тоже)

— То есть простой SQL-запрос написать не получится?

— Нет

— Но модель сама понятна? 

— Да, вполне.

— Представим, что подобная модель в графовой базе, напишите такой же запрос для графовой БД

(На экране появляется случайный набор латинских букв и скобочек)

Космические корабли бороздят просторы Большого Театра...
Космические корабли бороздят просторы Большого Театра...

К сожалению, у нас в команде шло обсуждение использования Neo4j, и я примерно представляю внешний вид запросов к ней.

Кейз 2. Я уже забыл этот язык.

Пришел кандидат с 4 годами опыта, с указанием, что у него какие-то еще пет-проекты. Начали с live-coding на джаве.

(Показываю код на джаве и задание в 3 строки, требуется написать небольшие функции. Рассказываю голосом, что нужно сделать)

— Итак, надо придумать, какие методы сюда подойдут, чтобы соответствовать интерфейсам, и реализовать это.

(Пишет среднее между джавой, джава скриптом и питоном)

— Это точно скомпилируется?

— Наверно. Знаете, я последнее время пишу на котлине, джаву уже забыл.

(Бинго! Котлинист мне нужен. Очень рад! Стираю его поэзию на псевдокоде. )

— Хорошо. Представим, что все это на котлине, пишите функции на котлине.

(Звуки пыхтения и паники)

— Ну вообще я сейчас в основном пишу на Golang

Гофер пришёл на собеседование джавистов.
Гофер пришёл на собеседование джавистов.

Да, за 4 года поработал с тремя языками, звезда пришла. Жаль, не прошёл интервью.

Кейз 3. Да кому нужны эти реляционки? Я эксперт по полнотекстовому поиску.

Кандидат рассказывает об опыте, путанно, общими словами. Пытаюсь выяснить хоть какие-то нюансы.

— А какая интеграция была у вас между микросервисами? Где данные хранили?

— У нас реактивные микросервисы на grpc, всё было асинхронно.

— Хорошо, а хранили данные где? FTP, кеш, реляционки или что?

— Нет,  у нас же реактивный стек, реляционные базы не используем, все на полнотекстовом поиске.

— А что за СУБД? Oracle? MySQL? Postgres?

(пауза)

— Postgres

— Postgres для полнотекствого поиска?

(пауза)

— А нет, там база noSQL была.

— Эластик?

(Ремарка от автора: устаревшее название, сейчас Elastic Search потеряло популярность, более популярный форк называется иначе)

— Да, он, на нем был движок для поиска на платформе.

— И как вы там создавали таблицы?

(Ремарка от автора: таблиц там нет, другой термин)

(Звуки пыхтения и паники)

— Хорошо, а как данные хранятся в эластике, за счет чего происходит поиск?

(Кандидат отключается)

Внезапно на интервью.
Внезапно на интервью.

Визуализация: поток кандидатов и отсева

Рассказ о себе

100%

Разговор о технологиях

90%

Код-ревью

54%

Live-coding Java

27%

Live-coding SQL

10%

Дизайн-интервью

5%

Интервью с ГД

3-4%

Проверка СБ

3%

Воронка наглядно.
Воронка наглядно.

Не учитывался отсев резюме кадровыми агентствами и моими коллегами из HR. С учётом их фильтрации, думаю, воронка была бы ещё уже.

Что же в сухом остатке? А в сухом остатке у нас:

  • укомплектованный стрим, 5 новых разработчиков: первый уже отработал год, последний недавно прошёл испытательный срок.

  • отличное общение в команде, несмотря на сильное отличие в опыте и мировоззрениях. Общение и обмен опытом пришли в команду сами, вместе с людьми.

  • ещё помог найти сильных разработчиков в дружественный стрим.

  • смежные команды используют наработки в процессе проведения интервью: саму структуру, задачи, оценки, отчет по интервью.

Вообще рассказ, о моей команде заслуживает отдельной статьи. И она будет.

Выводы

  • В 2023–2024 рынок IT раздувался: вакансии, курсы быстрого обучения, инфоцыгане.

  • Кандидаты с красивыми резюме, но без практики, доходят до финальных этапов.

  • Проблема не в HR, а в новой реальности, где мошенники адаптируются быстрее бизнеса.

  • Всё больше людей используют ИИ, но те, кто умеют, идут в другую область.

  • Списки вопросов из интернета бесполезны — только кастомные задачи.

  • Импровизация и адаптация — лучшая защита от заученных ответов.

  • Live-coding и код-ревью — надёжный фильтр практических навыков.

К сожалению, с развитием инфоцыганства, нейросетей, с учётом западных санкций и штормов в экономике оказалось сложно искать толковых специалистов на раздутом рынке. Фильтры со стороны эйчаров работают не так, как хотелось бы: люди научились обходить их. Чрезмерная автоматизация такой фильтрации, к сожалению, может привести к ложноотрицательному результату, в результате команда будет искать своего сотрудника мечты слишком долго. Приходится в новых реалиях на интервью внимательнее изучать кандидата. Частично это даёт свои результаты.

Технических подробностей здесь может быть недостаточно, задачи, инструменты и особенности годятся на отдельную статью.

За год мы нашли важный баланс: не усложнять процесс отбора до абсурда в 10 этапов, но и не пропускать "волчат". У нас люди работают с людьми. Мы предпочитаем быть, а не казаться.

Комментарии (0)


  1. kmatveev
    26.01.2026 16:49

    Промпт, видимо, был такой: "напиши статью про проблемы найма из-за того, что на рынке полно "волков", которые нарисовали себе опыт и знание технологий".


    1. shadowphoenix Автор
      26.01.2026 16:49

      Пруфы?

      Я 2 месяца писал её.

      Я почти год проводил собеседования, насмотрелся на людей.


      1. kmatveev
        26.01.2026 16:49

        Очень мало технической конкретики, кроме SQL-табличек ничего нет. Статья упоминает задачи на code review и написание кода, но ни одного примера нет, а это было бы интересно на техническом ресурсе. Ситуация же с наймом известна и такая уже несколько лет, ничего нового статья не сообщает. Примеры диалогов с кандидатом-вруном, увиливающим от ответа - это в любой школе подглядеть можно. Из-за этого текст полон воды и повторения одного и того же разными словами. Ну и по стилю жёстко отдаёт нейронкой.

        Если что, то мой стек примерно такой же, как ваш. Задачу на написание кода я даю такую: написать самый простейший publish-subscribe, ожидаю что-то типа guava event bus, а если напишут что-то типа spring ApplicationListener - я охренею. Обычно начинают писать кафку. Задача на code review - я написал классик, который сопоставляет заказы на покупку и продажу, на 15 строк примерно, его ревьюим.


        1. shadowphoenix Автор
          26.01.2026 16:49

          Вы правы. Статья больше про советы. Она и так объёмная. Конкретные задачи думал выложить отдельной статьёй. Но это тоже непросто, куски кода большие.


        1. shadowphoenix Автор
          26.01.2026 16:49

          Как я упоминал, у меня не сколько задачи, сколько шаблоны задач, которые я могу адаптировать под людей. Все вариации я не перечислю при всём желании. Код показал для примера, чтоб была понятна примерная сложность задач. Ничего космического. Микросервис не надо писать за полчаса.

          Нейронкой (алисой) я смягчал стилистику и правил опечатки только, ничего больше.

          Почему кажется, что отдаёт нейронкой? Написаны конкретные действия и советы.

          Что именно и в какой школе поглядеть можно? Я воспроизвёл реальные диалоги, они слишком абсурдны, чтобы быть придуманными. Проведя пару сотен собеседований, можно набрать много такого материала.


          1. nin-jin
            26.01.2026 16:49

            Да-да, волчара, знаем мы ваши «я только опечатки», когда схватили за руку.


            1. shadowphoenix Автор
              26.01.2026 16:49

              Я когда хватал за руку- там даже не стройный псевдокод бывал, а дикая смесь нескольких языков .

              Что касается сиквела - такое вообще порой пишут, будто сильно путают декларативное и императивное.


        1. csharpreader
          26.01.2026 16:49

          Очень мало технической конкретики
          Cкажем прямо, статья написана только ради того, чтобы обгадить вкатунов-"волчат".


          1. shadowphoenix Автор
            26.01.2026 16:49

            Статья не техническая, а околотехническая, хабы - найм и наниматели. Конкретные задачи и разбор стоят отдельной статьи, раз есть интерес у людей. Ну и удваивать размер статьи не стоит деталищацией примеров - сложнее чтать будет.

            Статья для того, чтоб обгадить мошенников - плохо? На самом деле там конкретные рецепты и кейзы, если читать после первой картинки.


        1. 9lLLLepuLLa
          26.01.2026 16:49

          А чем по вашему плох ApplicationListener в спринговом приложении ?


          1. kmatveev
            26.01.2026 16:49

            Он не плох, он прекрасен. Я имел в виду "охренею" в хорошем смысле. Мне очень нравится дизайн, когда тип получаемого события указывается как generic-параметр интерфейса и всё, этого достаточно. Я не стал смотреть, как оно работает, я знаю, как я бы это сделал, это красивая идея. Если до этого додумается человек на собеседовании, то я приятно удивлюсь и буду о нём очень высокого мнения.


      1. Viacheslav01
        26.01.2026 16:49

        Разметка очень похожа на LLM, мой мозг после первых пары абзацев пометил как LLM и отказался читать дальше.


        1. shadowphoenix Автор
          26.01.2026 16:49

          А чем именно похоже? Я проверял опечатки и сгладил стилистику алисой, но там непринципиальные изменения, имхо, вышли.


          1. Viacheslav01
            26.01.2026 16:49

            Структурирование, склонность к выделению жирным типа важных мест.


            1. shadowphoenix Автор
              26.01.2026 16:49

              Блин, а я очень долго писал тезисы, чтоб потом развернуть их, чтоб было понятнее, а не просто завязка-конфликт-кульминация-развязка. Оказывается, не надо было.


              1. talbot
                26.01.2026 16:49

                Вот я тоже так пишу обычно: сначала заголовки–тезисы и структура, потом уже подробности и текст. Но я и есть нейросеть—почти сорок лет уже её тренирую.


                1. shadowphoenix Автор
                  26.01.2026 16:49

                  И я так же писал-пишу эти статьи, от h1 к h2 и h3, а потом и абзацы получаются. Некоторые считают, что структурированное последовательное изложение - удел нейронок. Печально.


                  1. Viacheslav01
                    26.01.2026 16:49

                    Ну тут скорее совокупность с выделениями, просто структурировано просто маячок, а когда по тексту жирным выделяются фразы, это уже для меня ллм детектед.


                    1. talbot
                      26.01.2026 16:49

                      Ну использовать выделение в тексте вообще полезно, типографика как раз про это: расстановка акцентов через начертание. Почему теперь нормальная типографика стала считаться уделом нейронок?


      1. astenix
        26.01.2026 16:49

        Пыхтение, паника, опровержение ©


  1. no1D
    26.01.2026 16:49

    тут в соседней статье человек под ваш стек сидит без работы


    1. shadowphoenix Автор
      26.01.2026 16:49

      Увы, команда набрана. Помимо стека много других аспектов есть.

      Спасибо, почитаю.


    1. 9lLLLepuLLa
      26.01.2026 16:49

      найм джунов почти везде приостановлен


    1. shadowphoenix Автор
      26.01.2026 16:49

      Пообщался. У него не совсем наш стек. Да и дело не в стеке, а в формальном опыте, по регламентам компании, в которой работаю, а также многих других, есть некий порог, требования к образованию. Пообщаемся ещё, может помогу консультациями.

      Последние неск. лет почти нет вакансий джунов, по крайней мере по сравнению со старшими уровнями, довольно печально.


      1. no1D
        26.01.2026 16:49

        Очень жаль что вы не озвучили эти аспекты в своём списке требований, раз теперь выясняется что формальные технические требования не являются решающими.
        Вы же понимаете что это та самая проблема на которую жалуются соискатели?


        1. shadowphoenix Автор
          26.01.2026 16:49

          Нет, эти требования ставятся для фильтрации до того, как я получаю резюме. Скрининг типа, или проще, разговор с эйчаром. Это вне скоупа моей статьи. Так же как и отказ СБ при наличии судимостей. Понятно, что во многих компаниях это стопающий фактор, и в статье я не освещал его.

          А соискатели много на что жалуются. Статья не совсем об этом, а взгляд "с другой стороны баррикад".


          1. igorp1024
            26.01.2026 16:49

            Вот как раз интересно было спросить насчёт фильтра по СБ, отсеявшего 1%. Есть инфа, за что судимость была у кандидата? Мне просто любопытно, что может быть у человека с таким бэкграундом.


            1. shadowphoenix Автор
              26.01.2026 16:49

              Речь не про эту компанию и не про эту вакансию.

              Были люди с местом рождения в УССР, с административками.


  1. antonb73
    26.01.2026 16:49

    Хорошая статья. Спасибо.


  1. Tim_86
    26.01.2026 16:49

    Великолепная и практичная статья. Live-coding, код-ревью, SQL, импровизация собеседующего на техническом интервью - работающие инструменты отбора. Оценка технических навыков и реального опыта в первую очередь.


  1. ByJumping
    26.01.2026 16:49

    Идеальный кандидат 25-30 лет.... Пара па па па... Пам


    1. shadowphoenix Автор
      26.01.2026 16:49

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


      1. Femistoklov
        26.01.2026 16:49

        Тоже сразу возраст подметил. Вы спрашиваете очень много (и вижу, что это обосновано высоким уровнем разработки в компании), причём времени на подумать и вспомнить, очевидно, нет (2 часа всего на всё про всё). Человек до 30, конечно, может иметь такую квалификацию и уверенность в обсуждаемых темах, но, по моему мнению, это больше исключение. Скорее всего, те, с которыми вам будет "интересно" поговорить - люди за (возможно, далеко за) 30. Вы и сами-то, поди, не "29-летний сеньор".


        1. shadowphoenix Автор
          26.01.2026 16:49

          Всё так. Но входные данные (до процесса рефакторинга отбора) были как я описал. Почти все, кого я высоко оценил, были 40+. Но это не обратный эйджизм. Самые 2 крутых рок-звезды были лет 25-27. Сейчас в стриме работает парень не старше 25, который основные секции прошёл не хуже сеньоров. Архитектурные секции конечно не проходил, незачем. Конечно, это удача и редкость.


        1. shadowphoenix Автор
          26.01.2026 16:49

          Кстати, смешно, но я никогда не был сеньором. Что на делфи - при росте из мидла сразу в управление выпал (давно было), что сейчас - дали лида минуя просто сеньора. Наверно не надо слишком серьёзно относиться к этим английским (испанским) званиям.


          1. Femistoklov
            26.01.2026 16:49

            Ну это я условно. Из-за повальной раздачи должностей и званий недостаточно опытным людям мем такой появился - "20-скольки-то летние сеньоры".


            1. shadowphoenix Автор
              26.01.2026 16:49

              Да, а я по мему пишу статью. Было бы смешно, если бы не было 8- и 9-часовых созвонов несколько месяцев.


        1. onets
          26.01.2026 16:49

          Тоже заметил на собесах, что осознанность в ответах на системном дизайне начинается примерно с 10 лет опыта и выше. ВУЗ заканчивают в 22 - то есть это от 32-35 лет


          1. shadowphoenix Автор
            26.01.2026 16:49

            Ну условно до 30 нечего даже спрашивать слишком сложные вопросы, трата времени. А за 30- только если всё остальное пройдено. Просто рисовальщика нанимать в be тоже не интересно.


    1. pravosleva
      26.01.2026 16:49

      Для остальных тоже есть выбор - эйджизм или пенсия? Что-то из этого наверняка подойдёт )


      1. shadowphoenix Автор
        26.01.2026 16:49

        Консалтинг. Видел удачные примеры. Да, ошибка выжившего, но и мотиватор.

        До пенсии дожить ещё надо. Работу найти реальнее.