Agile. Практическое руководство
Шрифт:
ПРАКТИЧЕСКИЙ ПРИМЕР
Ведутся сейчас и, вероятно, еще долго будут идти споры о методе «канбан» и о том, куда его отнести – к бережливому подходу или движению agile. Он был задуман в рамках и в связи с бережливым производством, но широко применяется в средах agile.
2.4 Неопределенность, риск и выбор жизненного цикла
Некоторые проекты отличаются значительной неопределенностью при определении требований проекта и того, как исполнить эти требования, используя имеющиеся знания и технологии. Эти неопределенности могут стать причиной увеличения темпов изменений и усложнения проекта. Эти свойства наглядно представлены на рис. 2–5.
По мере усиления неопределенности проекта происходит
При использовании небольших инкрементов команды получают возможность проверять результаты своей работы и вносить изменения в то, что предстоит сделать. Когда команды производят поставки небольшими инкрементами, улучшается их способность понимать подлинные требования заказчиков, и делать это в более короткие сроки и точнее, чем в случае работы по неизменным письменным спецификациям.
Рис. 2–5. модель неопределенности и сложности на основе модели сложности Стейси (Ralph D. Stacey)
Команда может без особых затруднений планировать проект и управлять им, имея четкие и стабильные требования, а также ясные и легко решаемые технические задачи. Однако, по мере нарастания неопределенности в проекте, вероятность необходимости внесения изменений, бесполезной работы и доработок также возрастает, что влечет убытки и потерю времени.
Некоторые команды используют развитые жизненные циклы проектов, где используются как итеративные, так и инкрементные подходы. Многие команды обнаружили, что когда они изучают требования итеративно и осуществляют поставки чаще и по частям (инкрементно), им становится легче адаптироваться к изменениям. Такие итеративные и инкрементные подходы позволяют сократить объемы потерь и доработок, поскольку команда получает обратную связь. В этих подходах используются:
очень короткие циклы обратной связи,
частая адаптация процесса,
пересмотр приоритетов,
регулярное обновление планов,
частые поставки.
ПОЛЕЗНЫЙ СОВЕТ
Что означают определения проектов «простой», «усложненный» и «сложный»? Возьмем большие проекты, например, проект строительства Большого бостонского тоннеля. На первый взгляд, этот проект выглядит довольно очевидным: просто переместить автомагистраль с эстакады под землю. Был заключен генеральный договор о требованиях (см. ось Y на рис. 2–5). Степень неопределенности в отношении порядка исполнения проекта была невысокой, пока не приступили к его осуществлению. И, как это часто бывает с большими проектами, на всем протяжении осуществления этого проекта постоянно возникали неприятные сюрпризы.
Когда команда ведет работу над проектом, причем возможности поставки промежуточных результатов или создания прототипов практически отсутствуют, она, скорее всего, будет использовать для управления проектом предиктивный жизненный цикл. Команда может вносить изменения с учетом новых обстоятельств, но не сможет использовать подходы agile для управления итеративно возникающими новыми требованиями или осуществлять инкрементные поставки с целью обратной связи.
Проект строительства Большого тоннеля, безусловно, не был простым. Однако при осуществлении многих проектов, начало которых лежит в нижней левой части Модели сложности Стейси, реальная возможность перейти к другим моделям практически отсутствует. Необходимо оценить проект с точки зрения как требований, так и средств поставки, чтобы определить наилучший подход при выборе жизненного цикла для данного проекта.
Эти итеративные, инкрементные agile-подходы хорошо работают в проектах, которые связаны с использованием новых или инновационных инструментов, методов, материалов или областей применения. (См. раздел 3, посвященный вопросам выбора жизненного цикла). Они также хорошо работают в проектах, которые:
требуют проведения НИОКР,
имеют высокие темпы изменений,
имеют неясные или неизвестные
требования, неопределенность или риск,имеют конечную цель, которую сложно описать.
Создав небольшой инкремент и проведя затем его испытания и исследование, команда может изучить неопределенность с незначительными затратами и в короткий срок, снизить уровень риска и добиться поставки максимальной бизнес-ценности. Центральными вопросами в отношении неопределенности могут быть: пригодность продукта и требования (создается ли именно тот продукт, который нужен?); техническая возможность и исполнение (возможно ли создать этот продукт таким образом?) или процесс и кадры (эффективный ли это способ работы команды?). Все три указанные характеристики (спецификация продукта, производственные возможности и пригодность процесса) обычно включают элементы высокой неопределенности.
Однако применение итеративных и инкрементных подходов имеет известные ограничения. В случаях, когда высока степень неопределенности, как технической, так и связанной с требованиями (верхняя правая сторона на рис. 2–5), проект выходит за пределы «сложного» и становится «хаотическим». Чтобы иметь уверенность в возможности осуществления проекта, необходимо установить одну из переменных неопределенности.
3. Выбор жизненного цикла
Проекты могут иметь много форм, и существуют разнообразные способы их осуществления. Командам проектов нужно знать характеристики и имеющиеся варианты, из которых можно выбрать тот подход, который с наибольшей вероятностью обеспечит успех в данной ситуации.
В настоящем Руководстве речь идет о четырех типах жизненных циклов, которые можно определить следующим образом:
Предиктивный жизненный цикл. Относительно традиционный подход, который предусматривает осуществление основной части планирования до начала работы по проекту с его последующим исполнением за одинарный проход и последовательным процессом.
Итеративный жизненный цикл. Подход, позволяющий использовать обратную связь с целью доработки и уточнения незавершенной работы.
Инкрементный жизненный цикл. Подход, дающий конечные поставляемые результаты, которые заказчик может немедленно использовать.
Жизненный цикл agile. Подходы, которые являются итеративными и, в то же время, инкрементными и предназначены для уточнения элементов работы и частой поставки.
ЧТО МОЖНО НАЗВАТЬ ПОДХОДАМИ, НЕ ЯВЛЯЮЩИМИСЯ AGILE?
Единого универсального термина, который описывает не являющиеся agile подходы, не существует. Изначально в Практическом руководстве, чтобы подчеркнуть акцент на предварительное планирование с последующим исполнением, использовалось понятие подход на основе плана. Некоторые специалисты для описания этого жизненного цикла предпочитают использовать понятия водопад или последовательный. В конце концов мы остановили выбор на понятии предиктивный, поскольку оно используется в Руководстве к своду знаний по управлению проектом (Руководство PMBOK®) [3] и в Дополнении к Руководству PMBOK® по разработке программного обеспечения – пятое издание [4].
В практике многих организаций нет таких крайних позиций, и они просто занимают какое-то среднее положение. Это естественно, но нам все же необходимо определить, как называть крайние позиции этого диапазона понятий. Если подход agile находится на одном конце диапазона, то предиктивный подход – на другом.
3.1 Характеристики жизненных циклов проектов
В таблице 3–1 обобщены характеристики четырех категорий жизненных циклов, о которых идет речь в настоящем Руководстве.
Таблица 3–1. Характеристики четырех категорий жизненных циклов
Важно отметить, что все проекты имеют эти характеристики – ни в одном проекте нельзя полностью избавиться от соображений о требованиях, поставке, изменениях и целях. Какой жизненный цикл лучше всего подходит для использования в данном проекте, определяют внутренне присущие ему характеристики.