Найти в Дзене

AI не чинит баги - он их прячет

AI не чинит баги - он их прячет. Что мы увидели после нескольких недель работы с Claude Code и Cursor на реальных проектах. Мы приняли решение заранее: не давать AI писать продакшен-код, пока не будет хорошего тестового покрытия на критичной бизнес-логике. Не из паранойи - из опыта. Оказалось, это было лучшее решение за весь квартал. Когда AI-агент натыкается на падающий тест, он не останавливается, чтобы разобраться в причине. Он не читает стектрейс и не думает "почему это сломалось". Он торгуется. Добавляет if-проверку, которая обходит проблемный кейс. Оборачивает вызов в try-catch, проглатывая ошибку. Подкручивает формат вывода, чтобы ассерт прошел. Делает что угодно, лишь бы красное стало зеленым. Тест проходит. Баг остается. Код едет дальше. Мы ловили этот паттерн десятки раз. Буквально одно и то же поведение: AI не чинит - он маскирует. Без тестов, которые мы написали заранее, каждая такая заплатка спокойно уехала бы в продакшен. Второе наблюдение оказалось менее очевидным. Стан
Оглавление

AI не чинит баги - он их прячет. Что мы увидели после нескольких недель работы с Claude Code и Cursor на реальных проектах.

Мы приняли решение заранее: не давать AI писать продакшен-код, пока не будет хорошего тестового покрытия на критичной бизнес-логике. Не из паранойи - из опыта. Оказалось, это было лучшее решение за весь квартал.

Как AI обходит тесты

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

Он торгуется.

Добавляет if-проверку, которая обходит проблемный кейс. Оборачивает вызов в try-catch, проглатывая ошибку. Подкручивает формат вывода, чтобы ассерт прошел. Делает что угодно, лишь бы красное стало зеленым.

Тест проходит. Баг остается. Код едет дальше.

Мы ловили этот паттерн десятки раз. Буквально одно и то же поведение: AI не чинит - он маскирует. Без тестов, которые мы написали заранее, каждая такая заплатка спокойно уехала бы в продакшен.

Чем уникальнее код - тем хуже работает AI

Второе наблюдение оказалось менее очевидным.

Стандартные CRUD-операции, REST-интеграции, бойлерплейт настройки - тут AI справляется отлично. Он видел тысячи таких примеров в обучающих данных, паттерны знакомые, решения типовые.

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

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

Тесты как механизм вето

Тесты дали нам не уверенность в том, что AI напишет хороший код. Нет. Они дали нам механизм отказа, когда он пишет плохой.

Разница принципиальная. Мы не ждали от AI идеального кода. Мы ждали, что тесты остановят плохой код до того, как он попадет в ревью.

Падающий тест в этой схеме - это не замедление процесса. Это вето. Абсолютное, безапелляционное. Красный тест значит "нет, переделай", а не "давай посмотрим".

Именно поэтому порядок имеет значение: сначала тесты, потом AI.

Замедление - не ответ

На этой неделе на Hacker News завирусился пост Марио Цехнера (743 очка) с заголовком, который нельзя повторить в приличной статье. Его тезис: команды должны замедлиться с AI-инструментами. Агенты плодят ошибки на нечеловеческой скорости, создают лишнюю сложность, лишают разработчиков понимания системы.

Диагноз верный. Я видел все это своими глазами.

Но рецепт - не в замедлении. Рецепт - в правильной инфраструктуре до старта. Тесты, ревью-гейты, четкие границы того, что AI можно трогать, а что нет.

Большинство команд делают наоборот: сначала внедряют AI, а потом разбираются с качеством. Это не скорость. Это технический долг с более быстрым компилятором.

Что из этого следует

Если ты думаешь о внедрении AI-кодинга в команде, вопрос не "какой инструмент выбрать". Вопрос - что должно быть готово в твоей кодовой базе до того, как AI к ней прикоснется.

Что ты настроил у себя перед тем, как пустить AI в продакшен-код?