10 лет работал сеньором и сейчас охренел с собеседований корпоратов

Коротко, что случилось:
— Head of Cloud Platform нашей команды 10 лет был senior+ разрабом, когда пошёл искать работу — его отбрили несколько раз корпораты, пару раз — по формальным причинам.
— Он знатно так подохренел от того, как сейчас стал устроен найм и что с рынком.
— Если что, у него огромный опыт в разработке тяжёлых систем и опенсорс-опыт (один из инфраструктурных продуктов с 10 тысячами звёзд на Гитхабе).
— Когда вышел на проект — проработал новую систему собеседований для нашей команды с нуля, чтобы такого буллшита не было.
А вообще это пост про то, как поменялась профессия после прихода агентских ИИ-сред и насколько забавно выглядит переходный процесс.
Начнём с того, что сейчас в принципе отпала необходимость в разработчике как в узком специалисте. Все, кто остался на рынке задорого, стали T-shaped. То есть одновременно и бэкендеры, и фронтендеры, и умеют деплоить, и плюс ещё продуктово мыслят, параллельно думая о бизнесе.
Собственно, у него такая работа и была последние годы, поэтому доходы у него и были сильно выше рынка.
И вот с такой подготовкой он закончил крупный проект и вышел на рынок труда с уверенностью, что его опыт там точно нужен. Казалось бы, что могло пойти не так?
Итак, за плечами у него 10+ лет плотной коммерческой разработки. Успел поработать и в аутсорсе, и в продуктовой разработке на Senior+ и лидовских позициях. Доводил проекты до денег (собственно, в этом и заключалась его работа — помогать бизнесу зарабатывать деньги за счёт разработки).
С таким бронебойным резюме он в июне вышел на рынок, будучи абсолютно уверенным, что процесс поиска пусть будет и не лёгкой прогулкой, но без работы точно не останется. В целом, он был даже готов упасть в грейде до миддла в рамках бигтеха — всё-таки неформатный опыт для корпорации.
Ещё важная вводная: последний год он практически не пишет код руками.
Эволюция работы с LLM выглядела так. Сначала, в районе 2023-го, когда только появились адекватные нейронки, перешёл на Cursor. Тогда это ещё не было агентской разработкой: там вы нажимали Tab, а машина помогала автокомплитить ваш код. Мы тогда тоже дико восторгались процессом и думали, что ничего большего уже желать нельзя: нейронки угадывают ход наших мыслей на два if’a вперёд!
Дальше появились уже модели, которые могли написать функцию или небольшую задачу, там понадобилось первое серьёзное ревью. Тогда оно ещё было обычное — что накодил, то построчно отсматриваешь через дифф, правишь прямо руками. Контекстные окна тогда были маленькими, по 80–100 тысяч токенов, поэтому задачи приходилось дробить на прямо крошечные.
Затем вышли Sonnet 3.5 и 3.7. Пошли разговоры про агентскую разработку, у западных бигтехов начался токенмаксинг, все начали пытаться внедрять AI в разработку уже массово, но методом тыка. Так прошёл год.
А примерно с февраля этого года, когда Claude Code с Опусом достаточно поумнели и подешевели, случился перелом. Opus забирал огромную задачу, планировал её вместе с разработчиком, реализовывал, покрывал тестами, а другие независимые агенты делали ревью. И только потом ещё раз ревьюил человек. Компании начали приходить к пониманию, как всё-таки это должно работать, как встраивать AI в разработку, как делать циклы из агентов, начал появляться вменяемый SDD.
В итоге навык классического написания кода руками, когда всё на кончиках пальцев, у него банально атрофировался. Этот паровоз ушёл. Для него базой стал AI-кодинг, а лайвкодинг в блокноте превратился в бессмысленный рудимент.
И тут начались открытия
Большинство гигантов вроде VK, Ростелекома, WB, Сбера или Авито присылают автоотклики и всё. Вакансии висят везде, а в ответ тишина. Почему так, стало понятно чуть позже, когда удалось пообщаться с самими эйчарами. Пробиться на собеседования в итоге удалось только туда, где у него были знакомые, готовые закинуть резюме через внутреннюю рефералку.
Стандартная воронка везде выглядела одинаково: скрининг с HR, один или два этапа алгоритмического лайвкодинга прямо в браузере, системный дизайн и финал с командой. Компании (тот же Яндекс) рассказывают, как адаптировали всё под ИИ-кодинг внутри и жгут миллионы токенов на агентов, но на входе фильтруют людей так, будто им нужны исключительно программисты-олимпиадники, задрачивающие LeetCode в перерывах между работой.
Начнём с основных игроков рынка, у которых почти всё хорошо с образом работодателя.
В Яндексе, на удивление, всё прошло неплохо. На удивление — это потому что их долгое время хейтили за 100500 этапов, а они в итоге взяли всё и оптимизировали. Итак, они, во-первых, реально прочитали отклик. Во-вторых, первый звонок с HR был по делу, девушка приятная, без типичной корпоративной душноты.
Первый технический этап — лайвкодинг на Go. Нужно было написать код для одной-двух API-ручек, предполагая работу на одном сервере. Проверяли стандартные вещи: горутины, блокировки, кэши и пара теоретических вопросов на архитектуру. Этот этап он прошёл отлично.
А вот на втором этапе его ждали алгоритмы. Прикол в том, что человек программирует с 13 лет, но LeetCode он впервые открыл за две недели до этого собеса. Этап состоял из двух частей. Первую задачку он решил. А на второй, более сложной, завтыкал — не увидел один краевой случай. Интервьюер дал ему подсказку, но правильное решение дошло до него примерно через 10 минут после конца времени собеседования. Рука на такие задачки просто не набита.
Что удивило — Яндекс дал очень детальный и искренний фидбек. И HR, и интервьюер как будто сами расстроились. В обратной связи так и написали, со скобочками сожаления: разработчик разбирается в Go, видно, что есть опыт, хорошо понимает архитектуру, но вот такие у них алгоритмические фильтры. Условно HR написала так: «Блин, жалко. Мы понимаем, что live coding срезает сильных ребят, но сорян, такие правила. Приходи через полгода».
В Т-Банке ситуация комичнее. Туда — только через рефералку, потому что иначе ответа на отклики нет. На скрининге HR начала задавать ему сугубо технические вопросы. Дошло до того, что он объяснял нюансы партиционирования и шардирования в Kafka, а она в это время пыталась понять, какой из заготовленных вариантов ответа на её экране больше всего похож на его слова (ИМХО, здесь нейронка прокатила бы без проблем).
Там же случился странный диалог про образование. Оно высшее, но не профильное техническое, поэтому он его даже в резюме не добавил — какая разница, если у тебя 10 лет продакшена и опенсорс на 10к звёзд? Но HR настаивала, аргументируя тем, что это важно, и они стараются при прочих равных набирать выпускников топовых вузов вроде ИТМО или Бауманки.
Потом был лайвкодинг. И там интервьюер начал копать в глубокий хардкор: как именно работают структуры данных в Go под капотом, как с этим взаимодействует память компьютера, в чём фундаментальная разница поведения на 32-битных и 64-битных системах. Если вы эту информацию когда-то давно читали в книжках по Go, то поздравляю. В работе она нужна редко. Естественно, он отвечал обрывисто и поплыл.
Сами интервьюеры при этом были нормальными, не давили и дали отличный фидбек при отказе: прям списком накидали, какие книги почитать и какие статьи на Хабре разобрать, если он захочет прийти к ним через год.
В Ozon процесс оказался самым рациональным. Сначала скрининговый лайвкодинг — помесь алгоритмов и знания многопоточки на уровне миддла. Просто чтобы понять, умеет ли человек вообще писать код.
Там сложность сильно зависит от департамента. Те, кто идёт в аналитику, сдают одно, а те, кто собеседуется в команду платформы (инструменты для разработчиков), проходят через адские вопросы по внутренней кухне Go, из чего состоят бинарники и хардкорные алгоритмы. Его потенциальная команда такого не требовала.
Второй лайвкодинг был чуть глубже, но тоже без жести.
Дальше назначили звонок с тремя техлидами. И там возникло классное ощущение, что не они его собеседуют, а дают ему возможность собеседовать их. Ему продавали команды, рассказывали про продукты внутри, давали задавать вопросы о том, как у них всё устроено. Всё максимально дружелюбно, чтобы разработчик захотел в конкретную команду и мог выбирать.
После этого этапа HR написала, что всё классно, и предложила пособеседоваться на грейд повыше в другой департамент. Через неделю был этап системного дизайна. И там снова плюс в карму Озона — проектировали вполне прикладную понятную задачу без оверинжиниринга и попыток собрать архитектуру Гугла на коленке.
Он бы туда и пошёл. Но в тот день я написал пост на Хабре о том, как у нас в облаке прошёл год. Он увидел его, будучи уже на финале в Ozon. В час ночи он скинул мне сообщение, обрисовав ситуацию: мол, собеседуюсь в Озон, но у вас классное облако, у меня релевантный опыт и желание идти в хардкорную техничку (а облака про это), вдруг случится мэтч.
Я ответил ему через 10 минут (к слову, бигтехи отвечали ему по паре дней, кроме Яндекса, те реагировали день в день). В 1:10 ночи мы уже договорились встретиться на следующий день.
Помимо компаний выше, были ещё другие. В целом бигтехи, хоть и стараются сокращать воронки, всё ещё неповоротливы, фильтруют всех одной LeetCode-гребёнкой и не до конца перестроили процессы под T-shaped специалистов (которых сами же внутри пытаются растить).
Поэтому он решил посмотреть на средний бизнес. Впервые в жизни он зарегистрировался на HeadHunter. И сделал руками около 1500 откликов с топового резюме.
Знаете, сколько скринингов он получил с 1500? Ровно два.
Причём на обоих звонках эйчары проводили технический опрос (под запись, чтобы передать дальше) и задавали очень много вопросов про опыт работы с ИИ. Малый и средний бизнес уже полностью перестроился: нейронки экономят деньги, и умение с ними работать стало абсолютной базой.
На одном из звонков он впрямую спросил HR, почему при таком резюме и опенсорсе ему никто не отвечает. Девушка расшарила экран и показала внутрянку их личного кабинета. Они опубликовали вакансию обычного Senior Go-разработчика в не самую известную логистическую компанию два дня назад. За два дня туда упало больше 5000 откликов. Его резюме было где-то трёхсотым в очереди. Она сказала, что то, что они вообще до него доскроллили, — это чудо.
Рынок на HH сломан абсолютно. Кандидаты, включая вчерашних джунов, массово генерят себе сеньорские резюме через ИИ. Фильтры системы просто захлёбываются в этом нейрослопе. Плюс сами внутренние нейронки ХХ отсекают кандидатов по совершенно непонятным алгоритмам. Найти нормальную работу через портал стало квестом на выживание, но и компаниям найти адекватного спеца в этой куче сгенерированного спама — огромная боль.
Очень интересно собеседование шло у нас. В целом, я хоть и руковожу облаком, всё ещё остаюсь сильным разработчиком. Так вот, у меня такой же опыт работы с LLM, и понятно было, что лайвкодинг не очень адекватно покажет, кого мы берём. Поэтому я дал ему задачу в свободной форме: «Придумай сервис, который ты бы хотел сделать для нас. Напиши ТЗ, которое ты бы скормил нейронке». Ну и обсудили, что это может быть и на час, и на 2–3 дня, потому что у него было время, пока он ждал оффера Озона.
А он сделал сразу MVP.
Заняло это не 3 дня, но за 7 он взял и с нуля поднял поверх нашего Kubernetes полностью работающий managed-сервис Valkey. Собрал личный кабинет в точно таком же дизайне, как сейчас у нашего облака. Прикрутил авторизацию, квоты, написал оператор Valkey, задеплоил всё это и детально продумал сценарии отказоустойчивости. Для примера: он там реализовал сценарий, где при падении одной ноды реплика бесшовно переходит в статус primary. Покрыл сценарии, когда мы увеличиваем ресурсы на лету. Сделал E2E-тесты поверх k3s-кластеров.
Когда он пришёл ко мне с этим результатом, доведённым почти до прода, я сразу офигел и решил, что мы точно идём дальше. Потом он сам пришёл говорить о процессах и что хочет включиться в то, как облако зарабатывает. Так у нас появился крутой Head of Cloud Platform с зарплатой выше рынка.
Дальше мы докрутили наш AI SDLC. Работаем через фреймворк OpenSpec — это подход Spec-Driven Development, SDD. Вообще не используем LLM без тестов. Если вы пытаетесь писать код агентом и не автоматизируете проверку со всех сторон, — вы всё делаете неправильно, так как для ИИ жизненно важна петля обратной связи. Если модель что-то поменяла, она должна тут же понять, что ничего не сломала. У нас автоматизированы smoke, unit, интеграционные и e2e тесты. Тестов физически больше, чем обычного кода. Более того, у наших тестов есть отдельное железо, observability, и мы их считаем такой же важной частью системы, как код, для которого пишем тесты.
Например, если мы выпускаем фичу запуска виртуальной машины, на каждый прогон поднимается локальный кластер k8s (имитируя настоящее железо через наш самописный эмулятор Redfish) и прогоняет подъём виртуалки со всеми эдж-кейсами. Это занимает 10–15 минут на фичу локально и до часа при полной CI/CD перед релизом — область всё-таки сложная, тут и виртуализация, и кластеры, и много чего ещё.
Сам процесс у нас обложен независимыми агентами с хуками, чтобы их контексты не смешивались. Выглядит так: разработчик пишет в OpenSpec задачу. Нейронка помогает её продумать и приземляет в спецификацию (список задач, зачем и как делаем). И тут же автоматически запускаются пять хуков.
— Первый смотрит, нормально ли вообще написана спецификация.
— Второй (продуктовый) отстраняется от разработчика и оценивает, а нужна ли фича бизнесу. Он может прямо сказать: «Идея интересная, но её никто не купит, а железа под неё придётся выделить на 20% больше».
— Третий хук проверяет детализацию покрытия плана.
— Четвёртый уточняет, все ли тестовые кейсы мы учли.
— Пятый просто переписывает весь этот документ, вычищая рваные фразы и англицизмы, чтобы спецификация стала человекочитаемой для любого инженера вне контекста задачи.
Только потом условный Opus уходит пыхтеть на полчаса-час или два. Он пишет тесты, прогоняет их локально, собирает логи и метрики, сам себя подправляет и рефакторит. Другие агенты делают независимое ревью тестов и кода (включая проверки на безопасность). И только финальный проход человек вычитывает глазами.
Процентов 50 мы читаем внимательно, остальное по диагонали, обращая внимание в первую очередь на тесты. Если границы абстракций проведены хорошо, а код местами написан неоптимально, — это вообще не страшно. Главное, что он выполняет функцию. Перегенерить его — дело минутное. И только потом всё коммитится и уходит в обычный CI/CD-цикл.
Из-за такого подхода у нас, к слову, упразднилась должность фронтендера как такового. Наш бывший фронтендер сейчас сидит и проходит CKA-сертификацию.
Собственно, дальше он перестроил и процесс собеседований тоже. Нам плевать, какой у кандидата диплом, мы не просим прислать трудовую книжку. Нам вообще плевать, кто вы, хоть кот, главное, чтобы вы тащили задачу и чтобы сошлись по духу с командой. Поэтому теперь на входе даём человеку доступ в наш k8s на несколько дней и просим то же самое — сделать работающий сервис. Любой. Он может использовать любые модели.
Это дорого и сложно для соискателя, мы об этом сразу предупреждаем. Но мы даём детальный ответ, точно рассматриваем и точно обещаем зарплату выше рынка. Я сначала сомневался, что это будет работать — но так работает на практике.
Мы не ожидаем, что у кандидата уже выстроен точно такой же ИИ-пайплайн, как у нас. Но если человек с порога заявляет: «ИИ — это херня, я сам руками быстрее напишу», — нам не по пути. Этот подход больше, увы, не работает, кроме пары редчайших исключений. Нам нужно посмотреть, берёт ли человек ответственность за бизнес-результат. На защите садимся и разбираем: почему такая архитектура? О каких сценариях отказа ноды или реплики подумали? Нам важно увидеть в живом диалоге, почему кандидат выбрал конкретные quality gate.
Мы маленькая компания, у нас специфически сильная экспертиза, и нам хватает опыта, чтобы просто в диалоге прощупать всю глубину знаний человека, а заодно прикинуть, будет ли нам комфортно работать вместе, не гоняя его по LeetCode.
Самые ценные на рынке сейчас — те самые старые разработчики, которые успели 5–10 лет пописать код руками, почитать документации и подебажить ночами. Этот опыт важный, потому что без него вообще непонятно, что именно спрашивать у LLM, как понять, что она выдала нормальную архитектуру, и где поставить барьеры качества и какие.
А вот что будет с новыми джунами, которые вкатываются прямо сейчас, — огромный вопрос. Они не успевают научиться писать код руками, от них требуют быстрых результатов через ИИ-агентов. Опыт у них не появляется, а шишки за них набивают агенты. И как они будут контролировать архитектуру в будущем, пока не совсем понятно. Но рынок уже сломался и поменялся навсегда. Мы просто быстро адаптируемся и смотрим, к чему это приведёт.
Автор: km1337

