Перейти к содержимому

2 подхода к организации разработки: итерационный и транзакционный

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

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

Транзакционный подход: отдельная задача как единица работы

Заголовок раздела «Транзакционный подход: отдельная задача как единица работы»

Каждая задача или ограниченный этап проходит собственный цикл:

Описание результата → оценка → согласование условий → выполнение → приёмка → расчёт.

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

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

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

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

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

Нетиповой проект с высокой неопределённостью

Заголовок раздела «Нетиповой проект с высокой неопределённостью»

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

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

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

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

Приоритеты могут меняться из-за действий конкурентов, обратной связи пользователей или изменений внешних сервисов. Пока стороны согласовывают задачу, её предпосылки уже меняются. Чем дольше цикл «описать → оценить → согласовать», тем выше риск начать работу, которая перестала быть нужной.

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

Детали реализации выясняются только в работе

Заголовок раздела «Детали реализации выясняются только в работе»

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

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

Итерационный подход: цикл развития как единица работы

Заголовок раздела «Итерационный подход: цикл развития как единица работы»

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

Цель итерации → выбор задач из бэклога → выполнение → проверка результата → пересмотр приоритетов.

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

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

  • Возможность выбирать следующие изменения с учётом уже полученного результата.
  • Сохранение знаний о продукте, его архитектуре и ограничениях в команде.
  • Общие правила работы, которые не приходится заново обсуждать для каждой небольшой задачи.
  • Регулярные точки проверки: что изменилось, что принято и что стоит делать дальше.

Задачи сохраняют свои критерии приёмки. Менять приоритеты на следующий цикл проще, чем без последствий добавлять работу в уже начатый: изменение внутри итерации нужно соотнести с её целью и доступной мощностью.

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

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

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

Транзакционные издержки: сколько стоит организовать работу

Заголовок раздела «Транзакционные издержки: сколько стоит организовать работу»

Транзакционные издержки — затраты на организацию и согласование взаимодействия. Они возникают помимо непосредственного выполнения работы. В экономике эта идея связана с работами Рональда Коуза; для разработки её удобно использовать как способ увидеть расходы, которые не попадают в оценку программирования.

В сотрудничестве заказчика и команды можно выделить три группы таких затрат:

ЭтапНа что уходят время и усилия
До запускаПоиск исполнителя, передача контекста, описание результата, оценка и согласование условий
Во время работыУточнение требований, согласование изменений и зависимостей, принятие решений при расхождении ожиданий
При завершенииПроверка результата, урегулирование разногласий, расчёты и передача материалов

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

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

Заголовок раздела «Почему маленькие заказы могут обходиться дорого»

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

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

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

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

В модели Кеневина (Cynefin) способ действий выбирают по контексту. Для организации разработки это даёт три ориентира:

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

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

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

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

ПризнакЧто происходит в транзакционной схемеЧто можно изменить в итерационном формате
Оценки регулярно пересматриваются после первых проверокСогласованная работа ещё до завершения перестаёт соответствовать задачеСогласовывать цель и пределы ближайшего исследования, выбирать следующий шаг после проверки
Задачи долго ждут разрешения на запускВремя на повторные согласования становится сопоставимым с выполнениемВыбирать пакет приоритетных задач в общих границах бюджета и мощности
Приоритеты меняются быстрее, чем оформляется заказКоманда начинает уже неактуальные работыСократить горизонт планирования и пересматривать следующие действия на review
Доработки тесно связаныОтдельная оценка каждой задачи упускает влияние на соседние части продуктаВести общий бэклог и сохранять технический контекст между итерациями

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

Какие границы нужно сохранить при переходе

Заголовок раздела «Какие границы нужно сохранить при переходе»

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

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

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

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

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

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

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

  • Dual-Track Agile — как связывать проверку продуктовых гипотез с реализацией.
  • Авторский материал WPCraft, переработанный из статьи о двух потоках разработки по уточнению автора. Исходная версия сохранена в архиве: raw/2026/1003/dev-ops-vs-iterations.md.
  • Ronald H. Coase — The Institutional Structure of Production, Нобелевская лекция — экономическая основа понятия транзакционных издержек. Сравнение подходов к разработке и примеры в этой статье — авторское применение идеи.