Что такое Agile

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

Существует еще одна формулировка: Agile — это философия «гибких» подходов к организации процесса разработки ПО.

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

Главной причиной появления и развития Agile является то, что все больше проектов не имеют 100%-го  понимания, что должно быть в конце. Чаще всего и заказчик и разработчик выполняют данный проект впервые, поэтому изначально точно расписать все задачи и пожелания невозможно. Поэтому было решено, что свободные взаимодействия важнее инструкций, а готовность к изменениям важнее планов.

Гибкие методологии — это ответ на неопределенность; до конца неизвестно, что нужно сделать и что должно получиться в результате.

Немного истории

Человечество прошло через три основные «волны» в развитии общества:

  1. Аграрная волна при переходе к земледелию. Человечество трансформировалось из кочевого в оседлый образ жизни, а также перешло от собирательства и охоты к выращиванию культур.
  2. Индустриальная волна во время промышленной революции. Люди стали покидать фермы и мигрировать в города. Во время этой волны создали каскадную модель (или метод водопада) управления проектами. Проекты были большие и осязаемые, такие как построить завод, мост, здание.
  3. Информационная при переходе к обществу, основанному на знании (постиндустриальному). Здесь появился Agile. Проекты из осязаемых перешли в информационные и неосязаемые.

Методология Agile была разработана в конце 1990-х, так как классическая система управления Waterfall (метод водопада или каскадный метод) не справлялась с постоянными изменениями в IT- проектах.

В феврале 2001 года в штате Юта США был выпущен «Манифест гибкой методологии разработки программного обеспечения» (англ. Agile Manifesto). Он являлся альтернативой управляемым документацией «тяжеловесным» практикам разработки программного обеспечения, таким как «метод водопада», являвшимся золотым стандартом разработки в то время. Гибкая методология разработки использовалась многими компаниями и до принятия манифеста, однако вхождение Agile-разработки в массы произошло именно после этого события.

Отличие в принципах производственной (осязаемой) и информационной (неосязаемой) работы:

Производственная работаИнформационная работа
Работа виднаРабота незаметна
Работа стабильнаРабота изменчива
Акцент на том, как ситуация развиваетсяАкцент на том, как ситуация изменяется
Больше структуры и немного решенийМеньше структуры и больше решений
Фокус на правильных ответахФокус на правильных вопросах
Описание задачиПонимание задачи
Руководство и контрольПредоставление автономии
Четкие стандартыПостоянная инновация
Фокус на количествеФокус на качестве
Измерение исполнения по жестким стандартамНепрерывное обучение
Минимизация стоимости работников, работающих над задачейОтношение к работникам как к активам, а не как к затратам

Покажи прототип!

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

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

Как итеративный подход обеспечивает гибкость? Благодаря тому, что отдельные процессы могут идти параллельно и независимо друг от друга. Также после каждой итерации команда предоставляет минимальный готовый рабочий продукт и заказчик сразу может сделать выводы: это ли он хотел или нет, нужны ему данные фичи или нет, и внести изменения. При каскадной модели готовый продукт предоставляется в конце проекта и тогда уже очень сложно внести изменения.

Отсутствие иерархии

Ключевой принцип формирования Agile-команды — самоорганизация и относительное равенство всех участников. Даже product owner, которого многие представляют как главу проекта, , на самом деле  выполняет роль носителя знаний о том, каким ожидается конечный результат, но отнюдь не является управляющим в стандартном понимании.  При гибкой разработке идеалом является коллективная ответственность членов команды друг перед другом.