Ситуация

Как понять программу, которую написал кодовый агент?

С кодом всё в порядке. Не хватает того, что целую картину не держал никто, — поэтому и устаревать нечему.

Короткий ответ

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

#Позиция, названная прямо

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

Довод

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

Это не предостережение об ИИ. Это наблюдение о том, что узкое место сдвинулось. Раньше ограничением было то, как быстро можно написать программу; для многих компаний теперь ограничение в том, как быстро хоть кто-то может выяснить, что было написано.

#Что здесь действительно другое

По сравнению с обычным легаси у этого случая необычная и слегка дезориентирующая форма.

Обычное легаси в сравнении с построенным ИИ
Обычное легасиПостроенное ИИ
ДокументацияЕсть и устарелаЧасто обширна, сгенерирована и никем не проверена
Есть у кого спроситьОни ушлиОни здесь и тоже это не читали
Качество кодаОбычно видимая жалобаНередко хорошее и не имеет отношения к делу
ОднородностьОднородно по-своему странноТри решения одной задачи в трёх местах, каждое разумно локально
ВозрастГодыМесяцы, иногда недели
Чего не хватаетПонимание распалосьПонимание не создавалось

Последняя строка и меняет то, что вы делаете. Нет ни устаревшего документа, который надо поправить, ни ушедшего эксперта, на которого можно свалить. Есть просто система, и вопрос о том, что в ней есть, никто никогда не задавал в форме, дающей долговечный ответ.

#Как это проявляется

Обычно не кризисом. Чередой мелких моментов, где обычный вопрос оказывается неожиданно трудным.

  • Кто-то спрашивает, от чего зависит продукт, и честный ответ занимает день.
  • Новый разработчик спрашивает, почему одно и то же сделано тремя способами, и никто не знает.
  • Находится компонент, о заказе которого никто не помнит.
  • Сгенерированная документация существует, хорошо читается и противоречит коду там, где кто-то случайно заглянул.
  • Изменение в одном месте ломает что-то в другом без видимой связи.
  • Кто-то спрашивает, «что мы выпустили в прошлом месяце», и ответом оказывается список пул-реквестов, а не описание.

Ничто из этого не инцидент. Вместе это форма компании, у которой есть программа в продакшене и нет технической памяти о ней.

#Что сделать первым

  1. Получить явную опись

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

  2. Отделить прочитанное от выведенного

    Именно это здесь и важно. Агент, объясняющий систему, выдаёт наблюдения и выводы одной и той же прозой. Настаивайте, чтобы различие фиксировалось.

    Ровно для этого нужны доказательства: утверждение либо называет файл и диапазон строк, либо помечено как вывод.

  3. Сверить сгенерированную документацию с системой

    Там, где README, комментарий или заметка о замысле расходятся с кодом, находится место, где чья-то картина мира уже неверна. Считайте существующую документацию утверждением, которое надо испытать, а не источником.

  4. Найти дублирующиеся подходы

    Три реализации одной идеи — характерная подпись быстрой работы с агентом. Каждая обычно нормальна; цена в том, что изменение придётся сделать трижды, а кто-то сделает его дважды.

  5. Подтвердить края

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

  6. Проанализировать снова после следующего рывка

    При такой скорости изменений сравнение двух анализов стоит здесь больше, чем почти где-либо ещё.

#Проверки, которые стоит сделать один раз

Короткий список с высокой долей попаданий на быстро собранных системах.

Данные и деньги

  • Где хранятся данные клиентов и что покидает систему? Исходящие интеграции — те, о добавлении которых никто не помнит.
  • Что происходит с платежом или заказом, который провайдер так и не подтвердил? Несчастливый путь — тот, который генерируют, а не проектируют.
  • Безопасно ли повторить хоть одну операцию? Повторы без идемпотентности дают дубликаты ровно в тех условиях, ради которых повторы и существуют.

Доступ и края

  • Проверяет ли каждый входящий вебхук, кто его прислал?
  • Какие адреса публичны и для каждого ли это было замыслом?
  • Нет ли где-нибудь в репозитории или его истории учётных данных?

Эксплуатация

  • Что работает по расписанию и что делает каждое из этого? У работы по расписанию чаще всего вообще нет владельца.
  • Может ли выкатить это тот, кто это не строил?
  • Резервную копию действительно восстанавливали, а не просто настроили?

Полный чек-лист продакшена — длинная версия, устроенная как то, что стоит пройти до того, как собранная так система примет живой трафик.

#Осознанная работа с агентами

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

Сделанное хорошо, это почти бесплатно: описание может составить тот же агент, который писал код. Нужна форма, которая отделяет наблюдение от вывода, требует называть открытые вопросы, а не заполнять их, и хранится там, где следующий анализ можно с ней сравнить. Ровно этим и является формат Evidence Package в 1ADK, и ничто не мешает команде сделать то же самое самостоятельно.

#Где 1ADK помогает, а где нет

Где помогает

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

Где не помогает

  • Ревью качества кода. Он фиксирует, что есть, а не хорошо ли это.
  • Поиск уязвимостей. Это не сканер.
  • Тестирование. Ничего не запускается.
  • Суждение о том, была ли архитектура хорошей идеей.
  • Решение, что объединять. Он показывает три реализации; суждение ваше.

Вопросы, которые задают на самом деле

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

Можно, и он справится хорошо. Два предела: он не может надёжно сказать, какие части объяснения он прочитал, а какие вывел, и после он не держит ничего — спросите в следующем квартале, и он начнёт с нуля, а сравнить два ответа будет нечем.

Сегодня — не обязательно. Уязвимость конкретна: вы не можете отвечать на вопросы о собственной системе, не выводя ответ заново каждый раз, и никто не скажет вам, что изменилось между двумя месяцами. Важно ли это, зависит от того, случится ли что-нибудь с вашей командой, подрядчиками или продуктом.

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

Постройте карту того, что собрал ваш агент.

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

Построить карту проекта — бесплатно Чек-лист продакшена