Я уже пару лет таскаю ассистента в редакторе и не собираюсь возвращаться к «чистому» набору с нуля. Но раз в месяц кого-то из команды ловят на том, что в проде оказался кусок, который «модель сама написала», а человек даже не прочитал целиком. Это не про технологии — это про то, кто подписывает дифф и кого разбудят ночью.
На практике ИИ хорош там, где вы и так знаете ответ, но лень печатать: бойлерплейт, типизация, обвязка вокруг знакомого API, миграция имён после рефакторинга. Плохо — когда вы просите «сделай авторизацию» и принимаете первый вариант без проверки краевых случаев. Модель не знает ваших SLA, не помнит вчерашний инцидент с токенами и спокойно проглотит небезопасный дефолт, если он выглядит аккуратно.
Мой рабочий ритуал простой: сгенерировал — прочитал как чужой PR с плохой репутацией. Смотрю на границы ошибок, на то, что происходит при пустом ответе API, на логирование секретов «для удобства отладки», на гонки при двух параллельных запросах. Если не могу объяснить строку коллеге за минуту — строка не едет в main, как бы уверенно ни звучал чат.
Как я проверяю сгенерированное
Ещё одна ловушка — уверенный тон. Код выглядит опрятно, имена внятные, комментарии даже есть. Глаз расслабляется. Я специально ломаю сценарий руками: отключаю сеть, подсовываю кривой JSON, гоняю повторную оплату, проверяю идемпотентность. Половина «красивых» решений падает именно там, где в туториале было «happy path only». Отдельно слежу за тем, куда утекает контекст: в чат легко вставить кусок прод-конфига или данные из тикета. На практике вычищаю такое до отправки — удобство автодополнения не отменяет политику данных.
В команде мы договорились: ассистент не аргумент в ревью. «Так предложила модель» — не оправдание и не источник истины. Автор PR отвечает за поведение, тесты и за то, что в пятницу вечером не всплывёт сюрприз. Если правки по ревью делал тоже ассистент — тем более читаем дифф медленно, а не «ну там мелочи».
Договорённости в команде
И да, иногда быстрее написать самому. Если задача на пятнадцать минут понимания домена, а не на триста строк шаблона — я закрываю чат. Иначе тратишь час на правки чужого черновика и думаешь, что сэкономил время. Экономия считается по времени до рабочего и понятного результата, а не по скорости появления первого диффа. Полезный приём: попросить ассистента объяснить решение до принятия кода. Если объяснение водянистое или бьётся об инварианты, реализация скорее мимо. Это быстрее, чем сначала вмержить, а потом три часа искать «логичную» странность.
Отдельно про тесты: модель охотно пишет тесты, которые подтверждают её же ошибки. Я прошу сначала тест на ожидаемое поведение своими словами, потом реализацию — или хотя бы сам набрасываю ассерты. Иначе получаете зелёный CI и ложную уверенность.
Итоговая рамка у меня такая: ИИ ускоряет набор и черновик, человек остаётся владельцем риска. Пока это правило живое — ассистент полезен. Как только ответственность размывается, лучше выключить подсказки и вернуть мозг в контур, даже если скорость упадёт.