Что такое agile?
Методика Agile — это итеративный подход к управлению проектами и разработке ПО, позволяющий командам ускорить доставку ценности клиентам и избежать лишней головной боли. Вместо того чтобы выпускать весь продукт целиком, agile-команда выполняет работу в рамках небольших, но удобных инкрементов. Требования, планы и результаты постоянно проходят проверку на актуальность, благодаря чему команды могут быстро реагировать на изменения.
Идеи Agile
- Эффективное взаимодействие между людьми – базовое средство достижения целей;
- Реально работающий продукт является главной ценностью;
- Изменения, которые могут повысить качество и конкурентоспособность продукта, приветствуются на любом этапе разработки;
- Контрактная, техническая и прочая регламентирующая документация вторична по значимости относительно работающего продукта и сотрудничества между участниками проекта.
Принципы Agile
- Удовлетворять клиентов, заблаговременно и постоянно поставляя ПО (клиенты довольны, когда рабочее ПО поступает к ним регулярно и через одинаковые промежутки времени);
- Изменять требования к конечному продукту в течение всего цикла его разработки;
- Поставлять рабочее ПО как можно чаще (раз в неделю, в две недели, в месяц и т.д.);
- Поддерживать сотрудничество между разработчиками и заказчиком в течение всего цикла разработки;
- Поддерживать и мотивировать всех, кто вовлечен в проект (если команда мотивирована, она намного лучше справляется со своими задачами, нежели команда, члены которой условиями труда недовольны);
- Обеспечивать непосредственное взаимодействие между разработчиками (возможность прямого контакта способствует более успешной коммуникации);
- Измерять прогресс только посредством рабочего ПО (клиенты должны получать только функциональное и рабочее программное обеспечение);
- Поддерживать непрерывный темп работы (команда должна выработать оптимальную и поддерживаемую скорость работы);
- Уделять внимание дизайну и техническим деталям (благодаря эффективным навыкам и хорошему дизайну команда проекта получает возможность постоянного совершенствования продукта и работы над его улучшением);
- Стараться сделать рабочий процесс максимально простым, а ПО – простым и понятным
- Позволять членам команды самостоятельно принимать решения (если разработчики могут сами принимать решения, самоорганизовываться и общаться с другими членами коллектива, обмениваясь с ними идеями, вероятность создания качественного продукта существенно возрастает);
- Постоянно адаптироваться к меняющейся среде (благодаря этому конечный продукт будет более конкурентоспособен).
Плюсы и минусы Agile методологии
Плюсы Agile:
- Отсутствие бюрократии (сведение ее к минимуму);
- Быстрая адаптация к изменениям (к часто меняющимся требованиям к продукту);
- Периодичность поставок работающего продукта (позволяет быстрее оценить функционал приложения "в живую");
Минусы Agile:
- Второстепенный подход к написанию технической документации может привести к ее фактическому отсутствию;
- Краткосрочное планирование не всегда учитывает необходимость масштабирования продукта, что влечет ошибки в архитектуре;
- Появление новых требований после нескольких итераций приводит к кардинальным изменениям архитектуры и переделкам уже созданных решений;
- Накопление дефектов и снижение качества продуктов вследствие решения проблем самым простым и быстрым, но не всегда самым правильным способом.
Область применения Agile
В основу Agile были заложены общепонятные ценности. Поэтому Agile применяют в самых разных отраслях: в банках и страховых компаниях, в розничных сетях и даже в энергетике и промышленности. Формулировки многих принципов Agile относятся лишь к разработке программного обеспечения, но большинство из них применимы и вне сферы IT.
Одно из ключевых ограничений Agile кроется в словах «для разработки новых продуктов». Пусть «продукт» здесь употребляется в самом широком смысле, но вот новые продукты все-таки разрабатывает лишь небольшой процент людей.
В противном случае накладные расходы на Agile-процессы могут превышать выгоды от Agile с точки зрения бизнеса, особенно при неумелой настройке этих процессов.
Agile целесообразно применять в ситуации, когда первую версию продукта нужно выпустить на рынок как можно быстрее, иначе конкурентная борьба может быть проиграна. Другая ситуация, когда ценности Agile будут наиболее эффективны: инновационный продукт с заранее непредсказуемыми свойствами и/или с нестандартными средствами (новыми технологиями) для его разработки.