По многочисленным просьбам мы начинаем цикл вводных статей по Agile (гибким подходам) и сегодня разберемся, чем отличается Agile от классических подходов проектного управления.
Классический подход
Давайте вспомним основные принципы классического и гибкого подходов.
Классический проектный подход (еще называют «каскадная модель», «водопадная модель») заключается в том, что вы последовательно реализуете этапы проекта. Например, планирование, разработку, тестирование и поставку результатов работ Заказчику.
Присутствует вертикаль управления — Руководителю проекта делегированы полномочия, он управляет командой и ресурсами, отчитывается Заказчику и Куратору (Спонсору) проекта. Руководитель проекта составляет план проекта, который утверждается Заказчиком, и команда действует согласно ему. Только в конце проекта готовый продукт передается Заказчику.
Agile или Гибкий подход
Об истории применения и развития гибких подходов можно почитать в нашей статье «Неизвестная история Agile«
Напомним ключевое:
Еще с 30-х годов XX века практики и теоретики менеджмента искали пути повышения эффективности работы и избавления от потерь. Появился цикл Деминга (PDCA), бережливые методы производства в Тойоте, понимание негативного влияния простоев, перепроизводства, неравномерной работы, перегрузки сотрудников, накопления запасов и др.
В 1986 году опубликована статья японских исследователей Икуджиро Нонака и Хиротака Такеучи «New New Product Development Game», в которой иллюстрировались потери времени и информации при передаче продукта последовательно от проектировщика разработчику, от разработчика тестировщику и так далее. Авторы статьи рекомендовали специалистам последующих стадий включаться в работу раньше, даже если продукт еще не полностью разработан, чтобы сэкономить время на создание продукта. По сути, предлагается кроссфункциональная команда.
В 1993 году Джефф Сазерленд и Кен Швабер предложили фреймворк Scrum, который базируется на самоорганизации небольшой команды, содержит короткие итерации разработки (спринты), по результатам каждого спринта заказчик получает работоспособную и улучшенную версию продукта.
Рассмотрим более подробно, как поставляется продукт в Agile. Начнем с инкрементального подхода — это быстрое создание продукта с ограниченным, но работающим функционалом. Такой подход позволяет быстро проверять и корректировать гипотезы относительно создаваемого продукта и быстро корректировать направления дальнейшей разработки. Например, если Заказчик просит у нас портрет «Моны Лизы», мы делим холст целиком на участки, и каждый участок создаем последовательно. Такой формат не предполагает доработок уже созданных фрагментов, но каждый фрагмент является целостным и его уже можно показывать заказчику, не дожидаясь окончания проекта.
Итеративный подход заключается в повторении операций для улучшения результатов предыдущего этапа (итерации). В примере с Моной Лизой мы вначале создаем черновик картины целиком, затем постепенно, слой за слоем, итерация за итерацией, приближаемся к итоговому результату. При этом результаты каждой итерации можно продемонстрировать Заказчику и на основе обратной связи внести корректировки.
Оба подхода используются при разработке продуктов. Agile предполагает нахождение баланса между обоими подходами. Для портрета Моны Лизы художник сначала создает набросок всей картины (весь продукт в минимальном качестве — итерация) и фрагмент в цвете (инкремент). Затем уточняет весь эскиз и при этом добавляет следующий фрагмент, и так далее. Совмещается два подхода, художник разрабатывает продукт итеративно-инкрементально. В этом примере совмещаются инкрементальный и итеративный подходы.
Еще пример. Если нам необходимо соединить дорогой два населенных пункта (для нашего примера опустим пока законодательные ограничение, правила реализации строительных проектов и особенности дорожной отрасли). Как это можно сделать с использованием итеративно-инкрементального подхода: строим вначале грунтовую дорогу между обоими населенными пунктами по всей длине (это — итерация) и заасфальтируем первый участок асфальта (это — инкремент). Мы можем в ограниченном режиме запустить автомобильное сообщение и получить обратную связь — где требуется улучшения, какие участки необходимо заасфальтировать в какой последовательности — инкременты нашего продукта. Затем дорогу необходимо обеспечить освещением, разметкой, знаками по всей протяженности — провести еще итерацию разработки продукта.
Важно, что каждая итерация и инкремент в рамках выделенного промежутка времени, который часто называют спринтами, по времени небольшие (в Скрам — от недели до месяца). При этом у нас появляется работающий продукт, мы получаем обратную связь от заказчика и пользователей и можем гибко доработать продукт (проверить наши гипотезы). В случае классического проектного управления мы бы получили продукт в конце проекта, но его характеристики могут не устроить заказчика или пользователей, а для доработки потребуется дополнительное время и ресурсы.
Резюме
Классическое проектное управление («водопад») основано на последовательности выполнения этапов работ и передаче заказчику готового продукта в конце проекта.
Agile предлагает выстроить работу в другом формате: короткими спринтами поставлять заказчику продукт, который уже имеет для него ценность, пусть и ограниченную, и быстро получать обратную связь для корректировки направления работы.
Оба подхода имеют свою зону эффективного применения. На основе своего опыта мы сформулировали ключевые различия подходов:
Еще больше статей про Agile можно найти в наших соцсетях: