Ловушка отладки кода, созданного ИИ
Вы создали что-то крутое с помощью инструментов вроде Cursor или Bolt. Всё работало идеально на демо-версии. Затем пользователь попробовал ввести немного другой ввод — и всё сломалось. Вы вставляете ошибку в ИИ, он уверенно переписывает функцию, но теперь ломается другая часть.
Добро пожаловать в ловушку отладки. Исследования компаний типа GitClear показывают, что около 43% проектов, созданных при помощи искусственного интеллекта, требуют реальной работы по отладке перед тем, как они будут готовы к продакшену. Инструменты ИИ хороши в обработке «счастливого пути» — потока событий, описанного вами в запросе. Но они плохо справляются с неявными краями: пустыми массивами, нулевыми значениями, отсутствующими пользователями, границами часовых поясов, условиями гонки.
Вот где начинается ловушка: когда что-то ломается, естественное действие — вставить ошибку в ИИ и сказать ему исправить это. ИИ делает то, о чём вы его попросили. Он исправляет симптом. Ошибка перемещается куда-то ещё. Вы снова вставляете эту ошибку. Повторяете процесс. Вскоре у вас получается база кода, склеенная скотчем, которую никто — ни вы, ни ИИ — не понимает полностью.
Есть лучший способ. Это не магия. Это та же дисциплина отладки, которой инженеры пользовались десятилетиями, просто применённая намеренно к коду, написанному искусственным интеллектом.
Почему простое обращение к ИИ за исправлением не работает
ИИ является отличным помощником в отладке, но плохим драйвером процесса. Вот почему:
- ИИ не знает, какие части работают. Для него все элементы файла являются подозрительными. Часто он "исправляет" код, который был нормальным, оставляя настоящую проблему нетронутой.
- Без конкретного случая воспроизведения ошибки ИИ может только догадываться. Если вы скажете "иногда итоговая сумма неверна", у ИИ нет способа узнать, когда именно и почему это происходит. Он создаст правдоподобно выглядящий код, который решает правдоподобно звучащую проблему. Правдоподобие не равно корректности.
- Каждое такое "исправление" может вводить новые баги.
- ИИ не видит поведение вашего приложения во время выполнения. Он не наблюдает фактические значения данных. Его код основан на сопоставлении шаблонов, а не на доказательствах.
- Проблема глубины исправлений. ИИ обычно устраняет симптомы, а не причины. Неправильная итоговая сумма? Добавьте проверку в вызывающем методе. Падение из-за нулевого значения? Оберните вызов в блок
try-catch.