|
|
В журнал
Мысли23 мая 2026 г.5 мин

Чего AI не спрашивает

AI пишет нормальный код. Проекты ломаются там, где он ничего не спросил. Четыре места.


Cursor у меня открыт каждый день. Claude Code крутится в соседнем терминале прямо сейчас. Букинг на этом сайте? Вайб-коднул за вечер. AI пишет нормальный код. Проекты всё равно ломаются. Ломаются в четырёх местах, про которые модель не спросила.

Первое: бизнес.

AI видит код. Не видит, что бизнесу от этого кода нужно.

Месяц назад клиент показал мне «готовый» биллинг, собранный Claude Code. Подписки, вебхуки, ретраи, dunning. Красиво устроено. Идемпотентные вебхуки, экспоненциальный backoff, чистая схема. Принимает только USD. Клиент продаёт в трёх странах, 60% выручки в евро. Stripe Tax не настроен. НДС нет. Нумерация инвойсов не прошла бы EU-аудит. Возвратной политики, которая совпадает с конкурентом (а конкурент задаёт индустриальный стандарт), нет.

Модель сделала ровно то, что попросили. Промпт был «сделай биллинг для подписок». Никто не сказал, что бизнес продаёт в Германии и Франции, потому что фаундер думал, что инструмент сам сообразит. Инструмент не соображает того, чего нет в коде или промпте.

Сеньор спросил бы первым делом. Где вы продаёте, кто платит, какая политика возвратов, какой dispute rate. До того, как тронуть клавиатуру. Этого разговора между фаундером и Cursor не происходит.

Инструмент не соображает того, чего нет в коде или промпте.

Второе: данные во времени.

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

Таблица users с name, email, created_at. Через шесть недель надо разделить name на first_name и last_name. Через три месяца клиент должен быть ещё и поставщиком, добавляем role. Через полгода роли уже не бинарные. Миграция уродливая, потому что ни одна часть кода этого не закладывала.

Сеньор сделал бы таблицу иначе. Не идеально future-proof, просто с пониманием, что меняется, а что нет. У AI этого понимания нет. Он не жил с базой два года и не видел, как она гнётся под требования, которых никто не предвидел.

Uplevel в 2024 посчитал: команды с GitHub Copilot ловят на 41% больше багов на той же дистанции. Интересный вопрос, каких. По кодбейзам, которые я проверял, ответ один: миграционных. Код, который работал, когда его написали, и сломался, когда данные под ним сдвинулись.

Третье пугает меня больше всего.

AI пишет работающий auth. Логин, JWT, сессии истекают. Чего он не моделирует: кто и что может делать с кем. Слой авторизации. Реальная граница безопасности.

У SaaS-приложения есть организации. В каждой пользователи. Мемберы смотрят дашборды, админы меняют биллинг. Стандарт.

Вопрос: может ли мембер из Org A дёрнуть эндпоинт и увидеть данные из Org B? В каждом AI-кодбейзе, который я проверил за полгода, ответ был «да, по умолчанию». Не потому что код кривой. Потому что никто не сказал инструменту, что «юзер может получить этот ресурс» и «юзер может получить этот ресурс этого тенанта» это разные предложения.

Wiz в апреле: у 10.3% проверенных Lovable-проектов данные торчат до запуска. GitGuardian в 2025: в AI-репах утекает на 40% больше секретов, чем в человеческих. Цифры кажутся завышенными, пока не посмотришь хоть один такой кодбейз. После этого они кажутся заниженными.

Причина каждый раз одна. Модель пишет то, что попросили. Никто не попросил оградить тенант. Это предложение должно прийти от человека, который видел, что бывает, когда оно не приходит.

Четвёртое: что происходит, когда ломается.

Когда сторонний API лежит. Когда диск базы на 95%. Когда юзер заливает файл на 4 ГБ. Когда два запроса дерутся за одну строку.

AI делает обработку ошибок, если попросить. Картины, где этот код будет крутиться в реальном мире и что будет его ломать, он не строит. У сеньора эта картина рисуется автоматически. У модели её нет. У неё нет понятия «прод».

У одного клиента AI-сгенерированный email-сервис падал каждый вторник в 9 утра по ET. День разбирались. Их рассылка отправляла 50k писем через SendGrid-эндпоинт, который возвращает 429 после первых 10k. Ретрай в коде был. Синхронный, блокирующий, без backoff. Воркер-пул вис на 40 минут каждую неделю, пока запросы не дохли и очередь не разгребалась.

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

Код почти бесплатный. Платят за решения вокруг кода.

Дело в объёме. Барьер на сборку рабочего SaaS упал до нуля. a16z насчитал больше 14 000 AI-обёрток за 2025. Большинство технически работают. Большинство не доживают до первой сотни пользователей.

Раньше дифференциатор был «ты можешь это собрать». Теперь могут все. Дифференциатор стал «ты собрал то, что нужно, так, чтобы оно не развалилось». Раньше это было неявным описанием работы сеньора. Теперь оно явное.

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

Используй AI там, где он блещет. Скаффолдинг, рефакторинг, генерация тестов, бойлерплейт. Ускорение в пять раз реальное. Бери. Кто в 2026 говорит «запретим Cursor», тот воюет с прошлогодним снегом.

Но сеньоров сними с клавиатуры. Их работа не «писать код быстрее». Их работа принимать решения, которые AI принять не может. Ревью, threat modeling, обсуждение архитектуры, звонки с клиентом.

Нанимай за глаз. Не «пишет код быстро». Все пишут быстро. Может ли человек посмотреть на продуктовый спек и задать три вопроса, которые предотвратили бы баг. Этот навык только что стал редким.

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

Чего AI не спрашивает | Валерий Сацура