Дисклеймер: В этой статье нет названий компаний. Это собирательный образ того, во что превратился процесс найма. Если вам показалось, что вы узнали себя — вам не показалось.

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

Откуда взялся демпинг? Бизнес попал в ловушку метрик. Менеджмент видит, что скорость генерации строк кода выросла в разы, и считает, что разработка стала дешевой и простой. Раз «код пишется сам», значит, ценность программиста упала — отсюда и попытки демпинговать рынок, срезая офферы на 25%. Но это иллюзия. Бизнес не понимает, что ИИ увеличил скорость создания хаоса, а не готовых систем. И вместо проверки системного мышления — того, как архитектор наводит порядок в ИИ-хаосе, — на техсобесах продолжают устраивать школьные викторины. Этот перекос отлично проявился на задании с «Code Review».

Мне 48. Больше 25 лет я в бэкенде: проектирование систем, интеграции, оптимизация. За плечами — платформа, прошедшая технический Due Diligence и проданная за $4.5M. Последние месяцы я не работал в найме: восстанавливался после тяжёлого периода и строил свой open-source оркестратор на PHP 8.4 / Swoole / Go с PHPStan Level 10.

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

Игра в угадайку

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

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

Пять «платёжек»

  • Интервьюер (И): Есть несколько сущностей, какой паттерн применишь?

  • Я: Можно конкретнее?

  • И: Есть пять ПЛАТЁЖЕК. Какой паттерн?

  • Я: (такс, значит речь идёт о платёжных поручениях, но при чём тут паттерны?) Хм… Ну, наверное, интерфейс с методом «pay» и, может быть, абстрактный класс (просто ляпнул, не став задавать уточняющий вопрос второй раз).

Уже после собеседования, обсудив с DeepSeek, я понял, что речь скорее всего шла о платёжных системах (payment gateways) и паттернах «Стратегия» и «Фабрика». За 25 лет я впервые слышу слово «платёжка» в контексте платёжных систем.

Когда я пишу код, у меня в голове нет лекции по паттернам. Я не думаю: «Так, тут у нас фабричный метод, а здесь — стратегия, а вот этот кусок — декоратор». Я просто вижу задачу и сразу знаю, как её разложить:

  • вот тут нужен интерфейс, чтобы не зависеть от конкретики;

  • здесь — изолированный сервис, чтобы не раздувать контроллер;

  • здесь — очередь, чтобы не держать синхронно;

  • здесь — DTO, чтобы не таскать массив.

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

Опросник на память

Дальше — стандартный опросник на механическую память:

  • И: Какой порядок выполнения операторов в MySQL?

  • Я: А что такое операторы в MySQL запросе?

  • И: (объяснил про SELECT, WHERE конструкции в SQL-запросе) Если в SELECT есть alias, можно ли его использовать в WHERE?

Интервьюер проверял знание спецификации парсера СУБД на память. В реальной работе инженер не гадает у доски, как именно отработает синтаксис — он пишет предсказуемый и читаемый код, а любые тонкости реализации проверяет за секунду в консоли или через EXPLAIN. Я ответил, что можно, не став тратить время на ментальную компиляцию (в MySQL алиас из SELECT в WHERE использовать нельзя, так как WHERE выполняется раньше). Но суть в другом: этот вопрос проверяет навык зазубривания учебника, а не умение писать оптимальные запросы для highload-систем.

Очередной вопрос:

  • И: Что за класс Error в PHP 8?

  • Я: Я не помню, в моём последнем проекте ни разу не возникало подобных ошибок (PHPStan level 10).

Интервьюер ждал, что я начну цитировать справочник и расписывать иерархию классов, реализующих \Throwable (хотя на практике любой нормальный бэкендер для отлова всех рантайм-проблем просто ставит \Throwable на автомате). При строгом статическом анализе на Level 10 с кодом, вылизанным до нуля ignore-строк, ты просто забываешь о существовании внутренних фаталов языка — они отсекаются ещё до деплоя.

И снова вопрос:

  • И: В чём разница между моком и стабом?

  • Я: Не помню, я писал тесты последний раз руками около года назад.

Вопрос про индексы

Дальше — вопрос, который окончательно добил:

  • И: В каком случае индекс в БД не будет использоваться?

  • Я: Запущу EXPLAIN и посмотрю, что покажет.

  • И: Ну а если там будет Full Table Scan?

  • И: Например, если в запросе LIKE.

  • Я: Если поиск не с начала строки, индекс не сработает. Нужен FULLTEXT индекс.

Стоп. Зачем спрашивать, когда индекс не используется? Моя задача — чтобы он использовался. Я 25 лет пишу запросы так, чтобы база не умирала. А меня спрашивают, как её убить. Это как учить хирурга оставлять скальпель в пациенте.

«Code Review»

Финалом было тестовое на «Code Review». По факту — кусок хаотичного кода, собранный из всех возможных плохих практик: запрос в контроллере без валидации, отправка уведомлений в бизнес-методе, отсутствие DTO, N+1.

Это была задача для мидлов на внимательность внутри архитектурной помойки. В нормальной команде такой пул-реквест возвращается автору с одной фразой: «Удали и перепиши с нуля».

Я начал вслух набрасывать нормальную архитектуру: вынос тяжёлых синхронных процессов в очереди, лечение N+1 через жадную загрузку (with), оптимизация выборок чанками через ORDER BY. Когда здание горит, инженер тушит пожар и перестраивает несущие конструкции, а не ищет глазами инвентарные таблички на мебели.

Уже после собеседования я понял комизм ситуации: они ждали от меня чек-листа по мелким багам (типа дубликатов или идемпотентности в этом конкретном файле), в то время как там не было самого главного — структуры. Наниматели перепутали верхнеуровневый инженерный аудит с тестом на усидчивость. Это проверка не квалификации, а готовности терпеть плохой код.

Как должно быть на самом деле

Для контраста: вчера я делал тестовое задание на Code Review, на которое потратил честные шесть часов. И это было нормально.

Это был сложный модуль каскадного удаления сущностей. Внутри — классическая боль: рефлексия в циклах, магические массивы с числовыми индексами, сырые SQL-запросы, N+1, отсутствие DTO, слабая типизация.

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

Я не играл в угадайку. Я разбирал архитектуру:

  • вынес настройки many-to-many в отдельный Value Object;

  • заменил «кучку аргументов» на DTO;

  • убрал рефлексию, заменил на Doctrine Metadata;

  • поправил сырые SQL-запросы, добавил нормальную типизацию;

  • привёл PHPDoc в порядок.

Это проверка уровня, а не тест на усидчивость.

«Для статистики»

Через день HR пишет:

«Согласились бы вы на оффер на 25% ниже ваших ожиданий? Мне просто нужно для статистики)»

Мой ответ был коротким: «Нет. Озвученная сумма была абсолютным минимумом».

Сильные инженеры не работают за еду

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


  1. CraftDream
    18.08.2026 10:52

    Спрос на разработчиков действиельно стал насыщаться тем, что ИИ резко поднимает возможности каждого человека. Выходит, что бизнесу просто не нужен такой уровень экспертизы, каким стали обладать сеньоры помноженные на ИИ.

    Бизнесу вообще часто не до деталей - если работает, пиносит прибыль, не приносит убытков - это ок.

    Пример - тормозные сайты на реакте. С виду работает, но если серьезно пользоваться - одни лаги. Хуки сделали чтобы разрабатывать быстро, но чтобы писать на хуках сложные UI без тормозов - нужно иметь очень много опыта, чутья, времени, усидчивости и воли. Бизнесу некогда обэтом думать и тем более оплачивать.

    Интересное время, и это только начало.


    1. CentaurVova Автор
      18.08.2026 10:52

      Была похожая история. Проект изначально был написан на Laravel, потом его начали нейрослопить на Symfony, затем на Go. В команде, судя по всему, никто не понимал, как это работает.

      На тех. собеседовании спрашивали про DDD. Я ответил, что классический DDD — для enterprise-систем со сложными перекрёстными доменами. Для большинства проектов это оверинжениринг.

      Подозреваю, что под DDD они имели в виду не стратегическое проектирование, а просто bounded context. Или просто хотели услышать модное слово.

      Привет, карго-культ баззвордов.


    1. DimNS
      18.08.2026 10:52

      Бизнес конечно молодец, но что будет через 1-3-5 лет, сегодня это: вау, какой шустрый time to market, а завтра не станут ли появляться эти вот убытки от сегодняшней гонки

      Или потом и будем разбираться да?


      1. CraftDream
        18.08.2026 10:52

        На работе у меня очень сложная CAD система. В какой-то момент на чуточку больших схемах я начал замечать тормоза.

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

        В коде всё правильно и четко было, но профилирование торвомзов огромное - я не смог сам ничего понять.

        Попросил Fable - он с MCP и профилированиеями исследовал около дня и выловил где-то связанных 4 дефекта, в итоге схема ускорилась почти в 10 раз. Я бы такое за месяц дебагов бы не отловил - просто не релаьно, десятки файлов, десятки сущностей переплетены в большом FSD ...

        Мы потеряли контрль над деталями еще до ИИ - система просто нереально сложная. А теперь мы вернули контроль над деталями, но с помощью Fable


  1. iiwabor
    18.08.2026 10:52

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

    Проблемы начнутся потом, но до этого "потом" еще дожить надо.

    И есть весьма большие шансы на то, что никакого "потом" не будет вообще - или ишак сдохнет, или...


    1. CentaurVova Автор
      18.08.2026 10:52

      Работа работе рознь. На одном из прошлых мест фичи могли месяцами не выходить в прод. Архитектор разглядывал код чуть ли не под микроскопом. Код обрастал проверками, но работал именно так, как задумано — без сайд-эффектов. В случае проблем отвечал он, а не ИИ и не разработчики.

      И честно, я не понимаю гонку за фичами. Человеческое восприятие инертно. Нет смысла пихать в UI кучу новых фич — скорее всего, ими никто не будет пользоваться.

      Возвращаясь к случаю, когда проект переписывали с Laravel на Symfony, а потом на Go — я схватился за голову: зачем? Оставили бы Laravel и постепенно переводили частями на Go.

      Тут ИИ не решает за разработчиков. Это было чьё-то «умное» решение: «Symfony — круто, Laravel — отстой». Потом оно превратилось в «DDD — круто, Go — быстро». Смешно, если бы не было грустно.


  1. vtal007
    18.08.2026 10:52

    Порядок выполнение запросов SQL - обычный вопрос для Аналитиков данных (и видимо не только)

    зачем он нужен? да чтоб понимали, что порядок написания и порядок выполнения - разный

    и в where альяс написать нельзя, но можно в групбай (потому что после селект)

    Это полезно понимать (и не только это), когда запросы замороченные, чтоб лишний раз не вешать ДВХ

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

    Это не на мех память, это в целом то теоретические вопросы

    И это еще не спросили, что дадут разные варинты джойнов, если где-то (по колонке. по которой идет джойн) будут наллы и дубликаты


  1. Dhwtj
    18.08.2026 10:52

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