Гибкие методы управления проектом

История Agile

Несмотря на господство основанных на планах, индустриальных взглядов, эволюционный подход к разработке программного обеспечения не является новым. Крейг Ларман подробно описал исторических предшественников Agile в своей книге «Agile & Iterative Development, А Manager’s Guide», 2004.

Но официальным слово Agile стало в феврале 2001 года, когда 17 лидеров разработки программного обеспечения собрались на горнолыжном курорте Snowbird в штате Юта. Они обсудили свои взгляды на разработку программного обеспечения во времена, когда подходы классического управления проектами по водопаду (Waterfall) были заменены на рациональный унифицированный процесс (Rational Unified Process), что не привело к лучшим результатам. Эти лидеры следовали различным путям и методам, каждый из которых представлял собой отдельную реализацию новой парадигмы: Scrum, экстремальное программирование (Extreme Programming), адаптивная разработка программного обеспечения, Crystal, разработка на основе функций и так далее.

Результатом собрания стало присвоение слова «Agile» общим принципам, убеждениям и взглядам лидеров и их методам. Они были опубликованы в Agile-манифесте разработки программного обеспечения.

Agile-манифест разработки программного обеспечения

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

Гибкие методы управления проектом (Agile Project Management)

Гибкие методы управления проектами (Agile PM) отражают новую эру в планировании проектов, которые делают ставку на гибкость и изменения требований клиентов на протяжении всего процесса разработки. Agile управление проектом отличается от традиционного по ряду аспектов. В особенности потому, что признает, что старый подход тщательного «планирования работы» не учитывает реальность многих современных проектов. Потребности клиентов могут развиваться и изменяться в ходе проекта. Agile управление проектом признает важность растущих потребностей клиентов и допускает постепенный итеративный процесс планирования, который остается связанным с клиентами на протяжении всего жизненного цикла проекта.

Модель Водопад для проекта по разработке ПО

Традиционное управление проектами устанавливает довольно жесткую методологию. Жизненный цикл проекта предполагает, что концептуализация и планирование происходят в начале проекта. Концептуализация включает в себя создание экономического обоснования проекта (Зачем мы это делаем? Что мы хотим создать? Можем ли мы получить прибыль или создать ценность?). Также выявляются ключевые заинтересованные стороны проекта. Планирование фокусируется на создании фактических графиков и спецификаций проекта. В основе традиционного подхода лежит предположение о том, что участники проекта могут определять риски (предполагая минимальную неопределенность) и работать по составленным планам (предполагая максимальную стабильность).

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

Использование Scrum для разработки ПО

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

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

Наиболее популярные методы Agile управления проектами/продуктами: Scrum, Канбан.