← К публикациям

Малые партии кода: почему с ИИ-агентами это правило важнее, чем раньше

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

Исследовательская программа DORA (DevOps Research and Assessment, с 2018 года часть Google Cloud) больше десяти лет измеряет, какие практики отличают быстрые и надёжные команды разработки. Одна из них — работа малыми партиями. В 2025 году DORA добавила к ней наблюдение, которое прямо касается внедрения ИИ-агентов: малые партии усиливают положительный эффект ИИ на продукт, а без них ускорение превращается в нестабильность.

Эта статья пересказывает страницу DORA о малых партиях и отделяет её выводы от моей интерпретации: как это правило меняется, когда код пишет агент.

Что DORA называет малой партией

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

Для размера партии DORA даёт два ориентира:

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

Для декомпозиции DORA предлагает критерии INVEST, известные из гибкой разработки. Партия должна быть независимой (её можно выпустить и проверить отдельно), обсуждаемой (её можно переформулировать после обратной связи), ценной (результат полезен сам по себе), оцениваемой, малой и тестируемой.

Крупные партии живут не из-за лени. У передачи изменения дальше по конвейеру есть высокая фиксированная стоимость: согласование, сборка, ручная проверка, релизное окно. Если каждая передача дорогая, рационально копить изменения и передавать их пачкой. Поэтому DORA связывает малые партии с непрерывной доставкой: сначала нужно сделать передачу дешёвой, иначе малые партии экономически невыгодны.

Что DORA говорит про ИИ

Здесь важно развести факт и интерпретацию. Фактическая часть, как она изложена на странице DORA:

  • DORA относит малые партии к способностям, которые предсказывают производительность доставки и организации в целом, вместе с видимостью работы, командными экспериментами и видимостью обратной связи от клиентов;
  • по данным DORA, внедрение ИИ часто ведёт к росту нестабильности доставки;
  • работа малыми партиями усиливает положительное влияние внедрения ИИ на показатели продукта и помогает превратить нейтральный эффект ИИ на организационное трение в положительный.

DORA описывает это как корреляции в опросных данных, а не как результат контролируемого эксперимента. Насколько сильный эффект, в каких командах и при каких условиях — на странице способности не раскрывается; за этим DORA отправляет к отчёту «2025 State of AI-assisted Software Development» и к модели AI Capabilities Model. Я эти отчёты здесь не разбираю.

Дальше — моя интерпретация.

Почему агент тянет партию вверх

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

Агент снимает это ограничение. Он за одну сессию делает миграцию, модель, обработчик, интерфейс и тесты. Результат выглядит завершённым, и соблазн велик: оформить это одним запросом на слияние (pull request, PR) и выпустить разом. Сама DORA отмечает этот эффект: ИИ-инструменты склонны выдавать большие законченные фичи, а крупный машинно-сгенерированный PR на строку кода ревьюить тяжелее, чем написанный человеком.

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

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

Как удержать партию малой, когда код пишет агент

Ниже приёмы DORA и то, как они выглядят в агентной разработке. Первые два пункта — пересказ DORA, остальные — мой перенос на работу с агентом.

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

Начинать с API, а не с интерфейса. Команда добавляет возможность в сервисный слой, проверяет её автоматическими тестами и выпускает в рабочую систему, не показывая пользователю. DORA называет это тёмным запуском (dark launching). Так фича выходит частями, каждую из которых можно откатить отдельно, а интерфейс появляется последним.

Прятать незавершённое за переключателями. Переключатель функциональности (feature toggle) — условие в конфигурации, которое включает или скрывает поведение. Вместо долгоживущей ветки, где фича зреет неделями, код попадает в основную ветку сразу, но выключенным. Для больших перестроек DORA рекомендует ветвление через абстракцию (branch by abstraction): новая реализация растёт рядом со старой за общим интерфейсом и включается по частям.

Одна задача — одна партия. Самый дешёвый способ ограничить размер партии при работе с агентом — ограничить размер задачи, которую ему выдают. Задача на день, с критериями приёмки, из которой получается один PR. В статье о start-issue я описывал механику: выбранная задача превращается в изолированную рабочую директорию для агента, и граница задачи становится границей партии.

Просить агента нарезать, а не делать. Агент хорошо декомпозирует, если его об этом попросить до начала работы: «разбей на шаги, каждый из которых можно выпустить и проверить отдельно, и начни с первого». Без такой просьбы он по умолчанию делает всё сразу. Это и есть смещение с генерации на декомпозицию, о котором пишет DORA.

Проверять каждую партию до следующей. Тесты, запуск, просмотр изменений человеком — до того, как агент берёт следующий кусок. Если проверка откладывается «до конца фичи», партия перестала быть малой, как бы она ни была нарезана.

Две типичные ошибки

DORA называет две, и обе хорошо знакомы командам с агентами.

Партии нарезаны недостаточно. Код коммитят только когда фича закончена, а фича занимает недели. Правило DORA: коммитить независимо от того, завершена ли фича, и держать фичу в пределах нескольких дней. С агентом эта ошибка выглядит как «одна сессия — одна фича — один большой PR».

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

Как это измерить

DORA не предлагает одной метрики размера партии. Вместо этого она задаёт вопросы к процессу:

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

Косвенный показатель, который легко снять из истории Git — число слитых PR в месяц на команду и на разработчика. В кейсе о переходе с 8 до 188 PR в месяц я показывал этот ряд; как собрать такой замер своей команде — в гайде о четырёх промптах для техдиректора. Число PR само по себе не говорит о размере партии: сто мелких PR и сто крупных дадут одно число. Но резкий рост PR при той же команде обычно означает, что партии стали меньше, а падение при росте объёма кода — что они растут. Для честного ответа нужно смотреть и на размер диффа, и на время от первого коммита до выпуска.

Что делать дальше

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

Источники

  • Working in small batches — страница способности DORA; основной источник статьи: определения, критерии размера, приёмы, ошибки, вопросы для измерения и формулировки о влиянии ИИ.
  • DORA AI Capabilities Model — отчёт DORA о семи способностях, усиливающих эффект ИИ; страница о малых партиях отправляет к нему за данными. В этой статье не разбирается.
  • 2025 State of AI-assisted Software Development — отчёт DORA, на который страница ссылается за выводом о нестабильности доставки при внедрении ИИ. В этой статье не разбирается.
  • Trunk-based development — страница DORA о работе в основной ветке, связанная способность.
  • Feature Toggle — заметка Мартина Фаулера, на которую DORA ссылается за определением переключателя функциональности.
  • Make Large Scale Changes Incrementally with Branch By Abstraction — статья Джеза Хамбла, источник DORA по ветвлению через абстракцию.

Термины

  • DORA — DevOps Research and Assessment, исследовательская программа Google Cloud о производительности команд разработки.
  • Партия — объём изменений, который проходит путь до рабочей системы и обратной связи как одно целое.
  • INVEST — критерии хорошо сформулированной единицы работы: независимая, обсуждаемая, ценная, оцениваемая, малая, тестируемая.
  • Pull request (PR) — запрос на проверку и слияние изменений в основную ветку.
  • Основная ветка (trunk) — общая линия изменений, из которой собирается выпуск.
  • Тёмный запуск (dark launching) — выпуск кода в рабочую систему без показа пользователю.
  • Переключатель функциональности (feature toggle) — условие в конфигурации, включающее или скрывающее поведение.
  • Ветвление через абстракцию (branch by abstraction) — постепенная замена реализации за общим интерфейсом без долгоживущей ветки.
  • Минимально жизнеспособный продукт (MVP) — прототип с набором функций, достаточным для проверки гипотезы о продукте.
  • Нестабильность доставки — в метриках DORA: доля изменений, приводящих к сбою (change fail rate), и доля развёртываний, которые пришлось переделывать (deployment rework rate).

Хотите внедрить это у себя?

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

Работать со мной или канал «Жизнь стартапа в стране ИИ»