Сравнение Waterfall и Agile (Scrum, Kanban)

Среди современных методологий, которые используются для программирования, выделяют Водопадную модель (Waterfall) и Agile (гибкая методология программирования). В последней выделяют две методологии управления проектами — Scrum и Kanban.
Рассмотрим сравнение данных методологий.
Терминология
Кратко о каждой методологии.
Waterfall — каскадная или водопадная модель. Традиционный подход. Представляет собой четко выделяемые последовательные стадии выполнения работ. Только после того, как закончены все работы на одной стадии, допускается переход к следующей.
Agile — гибкая методология разработки, состоящая из целого ряда подходов и практик, в основе который лежат быстрый результат и взаимодействие с людьми. К ним, в частности, относят такие методологии управления проектами, как Scrum и Kanban.
Scrum — подход, предполагающий решение задач в маленьких командах. Рабочий процесс при этом поделен на равные отрезки (спринты).
Kanban — уменьшение выполняющейся в данный момент работы (work in progress). Делает работу нагляднее за счет визуализации на доске. Допускает взятие срочных задач в разработку, не дожидаясь начала следующего этапа.
Сравнение подходов и методологий
Наши методологии являются представителями разных подходов.
- Waterfall — традиционного. Написание четкого плана и следование ему.
- Agile — гибкого. Полная противоположность. Приветствуются изменения по ходу работы.
Рассмотрим их сравнение:
Характеристика | Waterfall | Agile |
---|---|---|
Документация | Детальная | Доработка по мере развития |
Вовлеченность заказчиков | Низкая | Высокая |
Команда | Включение новых специалистов на любом этапе | Опытные специалисты, стабильный состав |
Контроль | Легко | Зависит от уровня специалистов |
Критерии успеха | Все по плану | Ценность для бизнеса |
Подход | Прогнозирующий | Адаптивный |
Рефакторинг | Дорогой | Оптимальный |
Риски | Определены | Не определены |
Требования | Известны заранее и стабильны | Легко изменяемы |
Как видим, каждый подход имеет свои плюсы и минусы. По этой причине оба актуальны до сих пор, однако, важно отметить, что у Agile больше поклонников.
Теперь сравним методологии управления.
Сравнение методологий управления
Мы упоминали про то, что Agile включает в себя разные способы управления проектами. Чаще всего, среди них выделяют два:
- Scrum — этапом работы является спринт, который длится около 1-2 недель. Любые изменения допускаются в рамках следующего спринта.
- Kanban — ориентация на конкретную работу. Позволяет быстро переключиться на более приоритетную задачу. Kanban впервые был применен для производства автозапчастей на заводе Toyota.
Общие положения данных методологий определяются 4-я ценностями и 12-ю принципами Agile.
Ценности:
- Люди и взаимодействие важнее процессов и инструментов.
- Работающий продукт важнее исчерпывающей документации.
- Сотрудничество с заказчиком важнее согласования условий контракта.
- Готовность к изменениям важнее следования первоначальному плану.
Основополагающие принципы:
- Наивысшим приоритетом признается удовлетворение заказчика за счёт ранней и бесперебойной поставки ценного программного обеспечения.
- Изменение требований приветствуется даже в конце разработки (это может повысить конкурентоспособность полученного продукта).
- Частая поставка работающего программного обеспечения (каждые пару недель или пару месяцев с предпочтением меньшего периода).
- Общение представителей бизнеса с разработчиками должно быть ежедневным на протяжении всего проекта.
- Проекты следует строить вокруг заинтересованных людей, которых следует обеспечить нужными условиями работы, поддержкой и доверием.
- Самый эффективный метод обмена информацией в команде — личная встреча.
- Работающее программное обеспечение — лучший измеритель прогресса.
- Спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп на неопределённый срок.
- Постоянное внимание к техническому совершенству и хорошему проектированию увеличивают гибкость.
- Простота как искусство не делать лишней работы очень важна.
- Лучшие требования, архитектура и проектные решения получаются у самоорганизующихся команд.
- Команда регулярно обдумывает способы повышения своей эффективности и соответственно корректирует рабочий процесс.
Теперь рассмотрим различия:
Характеристика | Scrum | Kanban |
---|---|---|
Создан для | Разработки программного обеспечения | Бережливого производства |
Идеология | Учеба на собственном опыте, самоорганизация и постоянное совершенствование | Использование визуальных эффектов для улучшения работы |
Ритм | Регулярные спринты фиксированной продолжительности (около 1-2 недели) | Непрерывный поток |
Действия | Планирование спринтов, спринты, ежедневные минисовещания, ретроспективы | Визуализация потока работы, ограничение незавершенной работы, управление потоками |
Роли | Владелец продукта, скрам-мастер, команда разработчиков | Нет обязательных ролей |
Гибкость | Средняя. Изменения нельзя вносить после начала спринта | Высокая. Изменения вносятся в любой момент |