Итерация: что это такое, итерационный подход в управлении проектами, программировании, дизайне

Что такое интерация

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

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

Напомним, статистика успеха проектов далека от совершенства. По топу причин провала проектов, один из ключевых факторов – неправильно выбранный способ разработки / методика управления. Этот материал об итерациях и итеративной разработке.

Что такое итерация и итератор – определение

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

Слово «итерация» происходит из латыни. Латинское iteratio означает «повторение», «возобновление пути», «повторный проход».

С точки зрения этимологии:

  • iter — путь, ход, движение;
  • iterare — идти снова, повторять.

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

1. Итерация в математике и вычислительных методах

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

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

Любые методики тайм менеджмента

2. Итерация в программировании и компьютерных науках

В информатике итерация — это выполнение одного и того же блока кода несколько раз в рамках одного цикла. Типичные формы циклов: for (для), while (пока).

С точки зрения разработчика:

  • итерация — это один проход / шаг внутри цикла;
  • цикл — это конструкция, которая организует условия повторения;
  • итерационный процесс — это последовательность таких проходов, то есть реальное выполнение программы / кода.

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

Что означает итерируемый объект

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

Термины «итерируемый», «итератор», «итерация» означают разные роли в одном процессе:

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

Чем итерации отличаются от рекурсии

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

3. В дизайне (UI/UX, продуктовый дизайн)

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

4. В психологии и поведенческих науках

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

5. В личном развитии и образовании

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

Итеративный подход в управлении проектами и в разработке программного обеспечения

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

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

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

Отдельный материал об итеративной разработке и управлении проектами

Попробуйте бесплатно

Принцип планирования итераций в гибких методологиях управления

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

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

В каждом таком цикле выполняются все ключевые операции, отвечающие за «жизнеспособность» проекта:

  • Планирование — формулировка целей итерации и набора задач.
  • Выполнение — разработка и реализация запланированных изменений.
  • Контроль — проверка результата, апробирование, валидация.
  • Адаптация — анализ полученных данных и корректировка планов.

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

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

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

Получается, что планирование в итеративном подходе — это непрерывно повторяющийся процесс.

Пример планирования, основанного на итерациях

Типовой пример итерационного продумывания плана выглядит так:

  1. Формулируется гипотеза о ценности определенной функции / фичи продукта.
  2. Определяется минимальный набор задач для проверки гипотезы / реализации фичи.
  3. Планируется итерация разработки / исполнения задач с фиксированным сроком.
  4. Команда реализует запланированные изменения.
  5. Полученный результат демонстрируется заинтересованным сторонам.
  6. Собирается обратная связь и изучаются данные систем аналитики.
  7. На основе этих данных планируется следующая итерация.

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

Инструменты итеративного управления

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

1. Метрики

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

Показатели оценки скорости и пропускной способности команды:

  • Velocity (скорость команды). Отражает объем работы, который команда стабильно выполняет за одну итерацию. Используется для прогнозирования сроков, оценки реалистичности планов и выявления перегрузки или недозагрузки.
  • Throughput (пропускная способность). Отражает количество завершенных задач за определенный период времени. Особенно полезна в потоковых моделях, например, на основе Kanban.
  • WIP-лимиты (Work In Progress limits). Это принудительное ограничение количества задач, которые могут находиться в работе одновременно. Аналог пропускной способности, только применяется в роли регулятора.

Метрики времени:

  • Cycle Time — время от начала работы над задачей до ее завершения.
  • Lead Time — время от момента появления запроса до его реализации.

Метрики качества (только некоторые примеры из массы возможных):

  • Количество дефектов на итерацию.
  • Процент возвратов задач на доработку.
  • Технический долг.
  • Стабильность сборок.
Все в одном месте

2. Средства визуализации задач и управления процессами

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

  • Доски задач. Наиболее распространенный инструмент — онлайн-доски, хотя они могут быть заменены и физическими.
  • Диаграммы критического пути.
  • Диаграммы Ганта.
  • Простые списки и таблицы с задачами.
  • Календарные графики.
  • Схемы бизнес-процессов (тут могут использоваться разные нотации).
  • И т.п.

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

3. Инструменты обратной связи и адаптации

К таким инструментам относятся:

  • Демонстрационные версии продукта.
  • Ретроспективы и review-сессии.
  • Данные систем аналитики и результаты пользовательского тестирования.
  • Данные опросов и предметных исследований, которые нужны для принятия тех или иных управленческих решений.

4. Инструменты планирования итераций

Для поддержки итерационного цикла используются специальные практики проектирования:

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

Преимущества итерационного подхода

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

  • Ценность продукта получается часто и как можно быстрее. На каждом новом шаге выполнения цикла будет своя ценность и свои задачи. Имея на руках рабочий прототип продукта уже можно приступать к апробированию ниши и своих гипотез. Подробнее о минимально жизнеспособном продукте (MVP).
  • Риски финансовых потерь сокращаются. Так как решения об актуальности продукта принимаются не после завершения работы над ним, а в начале каждой новой итерации.
  • Оптимизация ресурсов. Этот пункт напрямую вытекает из предыдущего, так можно избежать лишних расходов.
  • Обеспечивается база для достаточной гибкости и адаптивности. Проект сможет быстрее реагировать на изменения рынка / действия конкурентов и на пожелания клиентов / конечных пользователей.
  • Максимальная управляемость процесса со стороны заказчика. Заинтересованные стороны имеют достаточно возможностей для влияния на результат непосредственно в процессе работы над продуктом.
Таск-трекер Projecto

Недостатки и ограничения итерационного подхода

Работа с итерациями помогает не всегда. Есть у подхода и подводные камни:

  • Блуждать в поисках конечного состояния продукта можно бесконечно. Итерация становится целью разработки, а сроки сдачи проекта могут смещаться каждый раз.
  • Заказчик изначально не может оценить бюджет всего мероприятия. Действительно, первые шаги могут показаться дешевыми, но если собрать сумму всех расходов, то она может существенно отличаться от того, чего можно было бы ожидать от поставки готового продукта с классической последовательной проработкой. Большая часть расходов будет уходить на «творческий поиск».
  • Из-за такого подхода может сильно пострадать архитектура продукта. В определенный момент может выясниться, что все, что делалось ранее, нужно переделать по-новому. Получается, что ресурс был потрачен зря.
  • Размазывание главного фокуса. Из-за того что на каждом шаге работы над продуктом ставятся свои приоритеты и задачи, главные цели могут «случайно» уйти на второй план и потеряться из виду.
  • Зависимость от обратной связи. Возможность влияния на продукт в процессе его создания может обернуться негативом. Когда в погоне за новыми фичами и функциями вы создадите очередного монстра Франкенштейна, от которого откажутся те же клиенты, которые эти фичи и просили. В итоге потакание всем хотелкам выльется в эпичный провал.
  • Итерации совместимы не со всеми задачами и концепциями. Да, они будут интересны в маркетинге, дизайне и т.п, но в строительстве уже могут всплыть нюансы. Даже в работе над ПО бывают ситуации, когда использование «водопада» будет более оправданным.

Заключение

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

Добавить комментарий