А что, если AI-код вообще не нужно ревьюить?

от автора

Сейчас почти все представляют AI-разработку одинаково. Агент пишет код. Разработчик открывает diff, делает code review и разрешает релиз. То есть мы заменили программиста на AI, но сам процесс практически не изменился.

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

Почему бы не применить этот принцип к разработке? Если после изменений система проходит все тесты, выполняет продуктовые сценарии, не ломает существующее поведение, укладывается в требования по производительности и безопасности, то зачем вообще читать код? Мы ведь никогда не проверяли код ради кода. Мы всегда пытались понять только одно — правильно ли работает система. Раньше это было невозможно без code review. Код писал человек, и только другой человек мог оценить его качество.

Но теперь код все чаще пишет AI.

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

Код перестает быть главным артефактом

Мне кажется, что главным артефактом разработки постепенно становится уже не код, а система проверок. Именно тесты начинают описывать ожидаемое поведение системы. Не только unit-тесты, но и интеграционные, E2E, контрактные, нагрузочные проверки, проверки безопасности и мониторинг после релиза. Если система ведет себя так, как должна, то, возможно, нам уже не так важно, как именно она реализована.

Когда-то разработчики писали на ассемблере и внимательно следили за каждой инструкцией процессора. Затем появились языки высокого уровня, и сегодня большинство из нас даже не задумывается, какой машинный код сгенерировал компилятор. Конечно, хорошему инженеру по-прежнему полезно понимать, что происходит «под капотом», и при необходимости уметь разобраться в сгенерированном коде. Но в повседневной работе мы доверяем компилятору, потому что проверяем не последовательность инструкций, а то, что программа работает правильно. Возможно, AI — это просто следующий уровень этой же эволюции. Код, написанный агентом, постепенно становится таким же промежуточным представлением, каким когда-то стал ассемблер: нас все меньше интересует, как он написан, и все больше — что в итоге делает система.

Личное наблюдение

Я неожиданно поймал себя на том, что именно так последние месяцы работаю над AURAIDO — AI-платформой для создания брендированных аудиоканалов для бизнеса. Большую часть кода уже пишут агенты. А я почти перестал думать о реализации отдельных фич. Вместо этого большую часть времени я трачу на проектирование архитектуры, описание требований для агентов, построение автоматических проверок и определение тех мест, где решение обязательно должен принимать человек.

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

Возможно, именно туда и движется наша профессия

Если AI берет на себя написание кода, то роль разработчика неизбежно меняется. Мы становимся в большей мере Product Owner’ами — потому что именно качество требований определяет качество результата. Мы становимся архитекторами — потому что именно архитектура позволяет агентам безопасно изменять систему. Мы становимся инженерами по качеству — потому что именно мы строим систему автоматического тестирования, которая определяет, можно ли выпускать изменения. И мы становимся инженерами по безопасности — потому что именно человек должен определить границы, где автоматике пока нельзя доверять полностью.

Принцип Утки

Возможно, у AI-разработки должен появиться свой Принцип Утки.

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

Если она ведет себя как правильная система — значит, для пользователя она и есть правильная система.

Проверять нужно не код.

Проверять нужно поведение.

ссылка на оригинал статьи https://habr.com/ru/articles/1058956/