Последнее время я все чаще вижу одну и ту же картину.

Появился тикет. Программист копирует ссылку, передает ее AI-кодинг-агенту и через какое-то время получает готовый Pull Request.

Вроде бы красота.

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

Только потом начинается самое интересное.

В Pull Request приезжает куча лишнего кода. Тесты зеленые, но сама функция не работает. Тикет уходит тестировщику и возвращается обратно. После исправления снова возвращается. А иногда оказывается, что агент вообще понял задачу не так, но программист этого даже не заметил, потому что сам тикет толком не прочитал.

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

Но инструмент, который быстро пишет код, не отменяет необходимость думать.

Сейчас возникла опасная иллюзия, что путь от тикета до Pull Request можно полностью отдать AI. Тестировщик написал задачу, агент написал код, программист просто нажал кнопку создания Pull Request.

Но между тикетом и готовым кодом остается огромное количество работы, которую должен делать именно программист.

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

AI может помочь пройти этот путь быстрее, но пройти его вместо программиста он пока не может.

Поэтому я решил собрать простой манифест работы с AI-кодинг-агентами внутри команды.

Это не попытка запретить AI и не набор бюрократических правил. Скорее напоминание, что AI ускоряет работу программиста, но не переносит ответственность за результат на себя.

Ниже сам текст манифеста.


Манифест работы с AI-кодинг-агентом

От тикета до Pull Request еще очень далекий путь.

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

Нельзя просто скормить агенту ссылку на тикет

Тикет обычно пишет тестировщик, маркетолог или другой человек, который видит проблему со своей стороны, но не знает всей системы и устройства кода.

Поэтому перед передачей задачи AI программист обязан сам прочитать тикет и понять, что именно требуется сделать.

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

Программист должен устранить разрыв между текстом тикета и реальным состоянием кода.

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

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

Сначала нужно воспроизвести баг

Нельзя исправлять проблему, которую никто не видел своими глазами.

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

Без этого невозможно нормально проверить исправление.

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

Нужно исправлять причину, а не симптом

AI любит быстрые решения.

Добавить проверку на null. Поймать исключение. Скрыть ошибку. Добавить задержку. Повторить запрос. Подставить значение по умолчанию.

Иногда это действительно правильное решение. Но часто это просто маскировка проблемы.

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

Если мы сегодня спрятали симптом, завтра эта же проблема появится в другом месте.

AI нужно явно ограничивать

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

Перед началом работы нужно сказать, что именно требуется изменить и какие части системы трогать не нужно.

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

В исправлении одной кнопки не должно быть переписано половины проекта.

Нужно смотреть, как такие задачи уже решаются в проекте

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

AI часто создает новый helper, новый сервис или новую библиотеку, хотя нужное решение уже существует рядом.

Нельзя допускать, чтобы одна и та же задача в разных частях системы решалась пятью разными способами.

Изменения всегда должны быть покрыты тестами

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

Для программиста это одна фраза. Для AI это несколько минут. Для проекта это защита от повторного появления проблемы.

Но наличие нового теста само по себе ничего не гарантирует.

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

Зеленые тесты не означают, что задача сделана

Очень часто AI пишет код, проект компилируется, тесты проходят, и программист сразу создает Pull Request.

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

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

Если исправлялся интерфейс, нужно открыть интерфейс.

Если исправлялся backend, нужно отправить реальный запрос.

Если исправлялась интеграция, нужно проверить интеграцию.

Если исправлялась фоновая задача, нужно дождаться ее выполнения.

Компиляция не является проверкой продукта.

Нужно проверять не только идеальный сценарий

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

Сервер может вернуть ошибку. Приложение может быть выгружено из памяти. Ответ может прийти поздно или два раза.

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

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

Если тикет переоткрыли, нельзя снова исправлять его наугад

Если после локальной проверки тестировщик переоткрыл задачу, нужно воспроизвести его окружение.

При необходимости нужно поднять виртуальную машину, установить нужную версию системы, использовать похожие данные и повторить точную последовательность действий.

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

После переоткрытия нужно не угадывать, а воспроизводить.

Нужно учитывать существующих пользователей

AI обычно пишет код так, будто база пустая, все пользователи новые, а frontend и backend обновляются одновременно.

В реальном продукте есть старые записи, старые настройки, активные сессии и старые версии мобильных приложений.

Перед отправкой изменений нужно проверить, что произойдет с существующими пользователями.

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

Пользователь не должен видеть технический мусор

Пользователю нельзя показывать stack trace, внутренние названия сервисов, ответы провайдера и непонятные технические ошибки.

Пользователь должен получить нормальное сообщение.

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

В логах не должно быть токенов, паролей, ключей и чувствительных пользовательских данных.

Перед Pull Request нужно прочитать весь diff

Не пролистать. Не посмотреть количество файлов. Не поверить отчету AI.

Нужно прочитать каждое изменение.

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

Из Pull Request нужно убрать случайное форматирование, лишний рефакторинг, заглушки, закомментированный код, дублирование и изменения, которые не относятся к тикету.

Код-ревьюер не должен очищать за программистом результат работы AI.

Один Pull Request должен решать одну задачу

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

Чем меньше Pull Request, тем проще его понять, проверить, протестировать и откатить.

Большой Pull Request часто означает не большой объем полезной работы, а отсутствие контроля над AI.

Pull Request должен объяснять решение

Описание fixed или done не подходит.

Нужно написать, в чем была причина проблемы, что изменено, как проверялось и какие тесты добавлены.

Если есть риски или ограничения, их тоже нужно указать.

Тестировщик должен понимать, что проверять. Ревьюер должен понимать логику решения.

После замечаний код-ревьюера продукт нужно проверить еще раз

Изменения после код-ревью могут сломать уже рабочий сценарий.

После исправления замечаний нужно снова запустить тесты и еще раз проверить основной сценарий вручную.

Особенно если менялась логика, асинхронность, работа с данными или обработка ошибок.

За код отвечает программист

Фраза это написал AI не является оправданием.

Для пользователя, тестировщика, ревьюера и компании неважно, кто сгенерировал код.

Ответственность несет программист, который принял решение и создал Pull Request.

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

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

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


Это пока первая версия манифеста.

Я собрал в нем то, с чем сам сталкиваюсь при работе с AI-кодинг-агентами, при просмотре Pull Request и при возврате задач от тестировщиков.

Наверняка там чего-то не хватает. Возможно, с какими-то пунктами вы вообще не согласны.

Полный текст манифеста лежит на GitHub:

https://github.com/evgenyigumnov/ai-coding-manifesto

Присылайте Pull Request, создавайте Issues, предлагайте новые разделы и спорьте с существующими формулировками.

Будем вместе дорабатывать манифест по мере того, как меняются AI-агенты и сама работа программиста.

Потому что AI-кодинг только начинается, а правила нормальной работы с ним нам еще предстоит выработать.

Комментарии (33)


  1. Skpd
    14.07.2026 17:03

    РЕПОЕН


    1. igumnov Автор
      14.07.2026 17:03

      Resolved! )


  1. Dhwtj
    14.07.2026 17:03

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


    1. igumnov Автор
      14.07.2026 17:03

      Ну, если такое случилось, тогда надо наказывать ревьювера и тестовый отдел за то, что они это пропустили.

      А так обычно тестовый отдел дает обратную связь, что какие-то программисты выдают какую-то фигню и их задачи постоянно переоткрывают. Вот такие инциденты надо разбирать, и если программист не меняется, увольнять!

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


      1. BugM
        14.07.2026 17:03

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

        Сейчас таких просто больше стало.


    1. piton_nsk
      14.07.2026 17:03

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

      Тогда сроки вырастут раз в 10, всего-то делов.

      А еще надо вычитать с зарплаты аналитика, за говно анализ. С зарплаты тестировщика за говно тестирование. С зарплаты менеджера за говно управление.


      1. Dhwtj
        14.07.2026 17:03

        То есть ответственность не нужна? Зачем же в статье говорили про ответственность?


        1. piton_nsk
          14.07.2026 17:03

          Зачем же в статье говорили про ответственность?

          Спросите у автора статьи.

          То есть ответственность не нужна?

          Между наличием ответственности и штрафами за инциденты лежит дистанция огромного размера. Впрочем, когда станете начальником, можете ввести такую практику у себя. Я бы на это посмотрел.


          1. Dhwtj
            14.07.2026 17:03

            Я видел подобную практику. Премия и повышение в должности "за безупречную работу"

            По оплату за ревью утрирую, но многочисленные правки и выматывающие ревью это минус в KPI, такие люди имеют отрицательную пользу


  1. diderevyagin
    14.07.2026 17:03

    Отличный набор принципов здорового инженера. Независимо от того, работает он с AI или нет. Уважение, очень правильно все описали !


    1. igumnov Автор
      14.07.2026 17:03

      Спасибо - новая реальность - новые подходы - но главные принципы не измены )


  1. adminNiochen
    14.07.2026 17:03

    Главное правило - понимать код который ты пушишь в репозиторий. Не понимаешь - мучай аишку пока она тебе не разжуёт.


    1. zamboga
      14.07.2026 17:03

      Весь манифест можно заменить только этим абзацем.


    1. Dhwtj
      14.07.2026 17:03

      Я на ревью часто прошу: расскажи что тут написано и почему именно так, а не по другому


  1. andreygaag
    14.07.2026 17:03

    Появился тикет. Программист копирует ссылку, передает ее AI-кодинг-агенту и через какое-то время получает готовый Pull Request.

    это не программист, а лишняя прослойка между агентом и создателем тикета

    AI любит быстрые решения.

    AI обычно пишет код так, будто база пустая

    попросить AI добавить тесты

    Подобное лечится правильным system prompt.

    За код отвечает программист

    Аминь.

    А еще принцип "Готово - значит проверено".


  1. blackyblack
    14.07.2026 17:03

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

    Агенты часто, наоборот, пишут код, который должен быть обратно совместим, с различными миграциями и т.п. У меня в агентских инструкциях написано "don't maintain backwards compatibility" - так будет меньше визуального мусора и прочего техдолга.


    1. VtripleG
      14.07.2026 17:03

      В какой реальности вы все жили? Кто же вам сказал, что тесты всегда впереди. Вы ещё скажите, что ООП единственный жизнепригодный паттерн, а раст и питон единственные нормальные языки

      TDD - не панацея. Зеленый тест != рабочий код


    1. pesh1983
      14.07.2026 17:03

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

      Ну в этом смысле как будто агент опытнее вас) Не в обиду написано, просто многое зависит от проекта / задачи / процессов развертывания и прочего. Во многих серьезных проектах обратная совместимость стоит во главе угла. Подумайте почему. Ллм и учится нас таких проектах. Это называется опыт)


      1. blackyblack
        14.07.2026 17:03

        Да я в курсе. Это скорее предупреждение другим разработчикам, а не жалоба. С таким подходом наслоения обратной совместимости могут превратить, в принципе, простой проект в кусок неподдерживаемого мусора.


  1. shoba
    14.07.2026 17:03

    Ничего не понятно, но интересно


  1. brtpfdvlbpd2
    14.07.2026 17:03

    Как AI-кодинг-агенты используются в вашей команде?

    Никак. А если и будут, то без меня.


  1. AnatolyEmelin
    14.07.2026 17:03

    Да. AI кодинг скорее менеджмент. То есть к умению писать код, добавляется ещё куча навыков обычно у разработчику несвойственных. Человек часто выбирает путь разработчика, сознательно отклоняет карьерные возможности в менеджменте. Тут вдруг вот такой вызов, когда эти навыки обязательны, а их человек сознательно избегал. С другой стороны идея менеджмента заменить людей на AI это как в столярке накупить кучу станков и удалить столяра. Возникает необходимость пересрбирать все (я про команды и управление проектами), а к этому ни готовности ни понимания.


  1. VtripleG
    14.07.2026 17:03

    Я не верю. Просто не верю. Я думал, что с Хабра ушли все авторы, мнение которых отличается от «грузи в агента, жми мерж, собирай профит»

    Хорошая статья. Вполне понятные и обоснованные правила


  1. FixicusMaximus
    14.07.2026 17:03

    Мда, за пару лет столько бестолочей в IT за баблом пришло, что для них нужно писать такую статью...


  1. hypercrite
    14.07.2026 17:03

    Очень базовые вещи конечно, но и их нужно расписать иногда, спасибо.

    Я говорю в подобных случаях про[махнувши]мся коллегам: зачем ты вообще нужен если тикет и так может улететь клоду на автомате, а потом сразу тестировщику? Неужели не боишься что только тестировщики и останутся, если можно так работать?

    К сожалению, одним манифестом дело не наладить. Дисциплина хорошо, но нужны и внешние рамки. Соблазн отдать всё боту очень велик, ведь мы все в айти именно потому, что мы любим, чтобы машина делала за нас работу, правда?

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


  1. EBetin
    14.07.2026 17:03

    Я сделал себе скилл для работы со сложными задачами через pr loop, сначала вместе с агентом бьем задачу на шаги, потом он выполняет строго по одному шагу и делает pr на шаг, я отсматриваю эти небольшие pr и общаюсь с агентом через комментарии в них, когда шаги заканчиваются тестирую и отсматриваю финальный pr уже сам и отправляю на ревью. Состояние этого процесса разработки хранится в файле прямо в репозитории. Впринципе получается достаточно быстро перемалывать таски такой штукой. https://github.com/betine/dev-partner-skill


  1. NurGeo
    14.07.2026 17:03

    Только мне кажется что это не манифест, а скорее правила, может даже что то вроде best practics?


    1. BugM
      14.07.2026 17:03

      Рано. До бестпрактисов дожить надо. Пока все еще непонятно и изменчиво.


  1. zum
    14.07.2026 17:03

    Появился тикет. Программист копирует ссылку, передает ее AI‑кодинг‑агенту и через какое‑то время получает готовый Pull Request.

    но программист этого даже не заметил, потому что сам тикет толком не прочитал.

    А это точно про «программиста»? Мне кажется, что термин «программист» в данном случае используется некорректно.

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

    AI может помочь пройти этот путь быстрее

    Я насчитал целых 4 шага, отказавшись от которых можно пройти «этот путь» ещё быстрее чем его пройдёт LLM.


  1. IvanOkoyanniy
    14.07.2026 17:03

    мучаешься ревьюишь нейрослоп, а разраб за которого ИИ работает даже не читает то что написано, а потом "ой куда то код новой фичи подевался".

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

    кстати манифест отлично подходит для ньюфагов в данном вопросе, автору благодарочка.


  1. tabfor
    14.07.2026 17:03

    но пройти его вместо программиста он пока не сможет

    Судя по всему, а также по дальнейшему размышлению автора, ИИ этого никогда не сможет. И слава Богу. Может быть, набив шишек и морд, отрасль вернётся к нормальному программированию, используя ИИ как инструментарий и не более того.


  1. ooko
    14.07.2026 17:03

    Тут ошибка в том что программист рукам копирует номер задачи. Роль программиста в паре с ИИ это решение проблем которые ИИ не осилил.

    Хотя может и не ошибка. Если поток небольшой то своего рода небольшой контроль. Но суть таже - программист подключается когда решить задачу ИИ не способен


  1. itstranger
    14.07.2026 17:03

    База, которая понятна любому программисту) Не совсем понял в чём именно сложность статьи, но вещи написаны верные