Agile часто называют гибкой методологией разработки программного обеспечения. Это отчасти верно, поскольку Agile объединяет различные подходы к разработке. Однако важно различать Agile как семейство гибких подходов и Agile как философию и систему ценностей. Рассмотрим популярные подходы — Scrum и Kanban, а затем подробнее остановимся на ценностях Agile, их значении и применении.
Agile vs. Методологии
Термин «методология» применяется к Agile по аналогии с предшествующими подходами, такими как RUP, XP и другими. Однако Agile отличается от них. Предшествующие подходы подробно описывали процесс разработки, в то время как Agile лаконичен: четыре ценности и двенадцать принципов. Описание методологии, например RUP (Rational Unified Process), занимает десятки страниц, включающих множество приемов и алгоритмов действий, разбиение жизненного цикла на фазы, рекомендованные соотношения объемов работы и конкретные инструменты для каждого потока. Agile в этом плане значительно кратче.
Методология — это совокупность методов и приемов, используемых в разных сферах. Метод — способ достижения цели. Agile сам по себе не дает алгоритмов и приемов. Хотя входящие в Agile гибкие подходы часто предписывают конкретные приемы (например, парное программирование в XP), даже Scrum, не являясь процессом, техникой или методом, предписывает определенные роли, мероприятия и артефакты. В основе Agile лежат не конкретные процессы, а высокоуровневые ценности. Следование этим ценностям повышает скорость разработки и бизнес-эффективность, хотя может и увеличить стоимость разработки. Поэтому Agile не всегда необходим.
Ценности Agile
Ценности Agile были сформулированы в 2001 году в Agile-манифесте. Они определяют приоритеты в работе независимо от конкретного процесса и предмета. Каждая из четырех ценностей сформулирована в виде «X важнее Y»:
- Люди и взаимодействия важнее процессов и инструментов. Для эффективной работы людей, процессы и инструменты не должны их ограничивать. Люди сами решают, как изменять процессы или инструменты для ускорения разработки. Прямое взаимодействие между людьми (лично или через видеосвязь с интерактивными онлайн-досками) предпочтительнее формальной документации.
- Рабочий продукт важнее исчерпывающей документации. Клиенты ценят работающий продукт. Разработчики должны фокусироваться на создании продукта, пригодного для использования, а не на составлении обширной документации, которая может замедлить разработку и увеличить затраты.
- Сотрудничество с заказчиком важнее согласования условий контракта. Для получения ценного продукта стоит отказаться от излишних деталей в контракте. Жестко заданные на старте детали мешают учитывать новые данные и приоритеты, появляющиеся в процессе разработки. Тесное общение заказчика и разработчика позволяет оперативно обрабатывать изменения и проблемы.
- Готовность к изменениям важнее следования плану. Agile предлагает оперативность и готовность к изменениям на всех стадиях. В первую очередь делается самое ценное, учитывая текущее видение бизнес-ценности и позиционирования продукта. Разработчики должны быть готовы добавлять незапланированные возможности, если они стали ценными в изменившейся ситуации. Готовность заказчика жертвовать менее ценными элементами запланированного также важна для эффективной работы.
Agile как философия и ее реализация через Scrum
Agile — это не методология разработки, а система ценностей, помогающая создавать продукты быстрее и эффективнее. Это достигается за счет эффективного взаимодействия с заказчиком и внутри команды, быстрой реакции на изменения и фокуса на рабочий продукт. Из-за общности и абстрактности ценностей Agile часто называют философией или «гибким мышлением». Изменение мышления руководителей и исполнителей с традиционного на гибкий — самая сложная задача при внедрении Agile. Чаще всего Agile реализуется через Scrum.
Без конкретного подхода, такого как Scrum, Agile останется абстрактной философией. Scrum без Agile-мышления может привести к удорожанию разработки из-за дополнительных затрат на коммуникации, обучение и ресурсы.
Принципы работы по Agile
- Понимание потребностей клиента: Вся команда понимает клиентов, их потребности и проблемы, которые решает продукт.
- Упрощенные процессы: Простые правила и процессы позволяют фокусироваться на клиентах и продукте.
- Короткие циклы (итерации): Разработчики выдают полезный для клиента результат за короткий период (неделя или месяц).
- Обратная связь: Демонстрация продукта заказчику, получение обратной связи и корректировка планов.
- Полномочия исполнителей: Люди самостоятельно принимают решения и несут за них ответственность.
- Внутренняя мотивация: Agile-методы создают условия для свободной и эффективной работы.
Гибкие подходы: Scrum и Kanban
К гибким методам управления относятся Scrum и Kanban. Scrum работает с короткими итерациями, небольшой командой (до 10 человек), включающей разработчиков, владельца продукта и Scrum-мастера. Команда самостоятельно планирует, демонстрирует результаты и решает проблемы. Kanban — метод повышения качества сервиса, отличающийся более широкой областью применения (не только новые продукты, но и поддержка и операционная работа), постепенным внедрением и простотой. Он фокусируется не только на ускорении, но и на выравнивании процесса, имеет отличающиеся метрики и не требует оценки трудоемкости задач.
Область применения Agile
Благодаря общим и понятным ценностям Agile применяется в разных отраслях (банки, страховые компании, розничные сети, телеком, энергетика, промышленность). Хотя многие принципы Agile связаны с разработкой программного обеспечения, большинство применимо и вне ее. Agile эффективен в творческой работе и условиях неопределенности. В других случаях накладные расходы могут превышать выгоды. Agile целесообразен, когда нужно быстро выпустить первую версию продукта на рынок или когда разрабатывается инновационный продукт с непредсказуемыми свойствами.
Книги по Agile
- Блистательный Agile: Гибкое управление проектами с помощью Scrum и Kanban
- Эпоха Agile: Как умные компании меняются и достигают результатов
- Scrum: Революционный метод управления проектами
- Scrum & Kanban: Выжимаем максимум (электронная книга)
Резюме
Agile — это система ценностей (или философия), способствующая быстрой разработке продуктов, максимально отвечающих потребностям клиентов. Он также является собирательным названием различных подходов к управлению разработкой. Agile фокусируется на реализации и поставке готовых продуктов. Для генерации и проверки идей Agile следует дополнять продуктовыми подходами (например, Design Thinking). Agile помогает сократить время вывода продуктов на рынок и ускорить принятие решений. Для обозначения подходов к повышению гибкости и скорости принятия решений на уровне всего бизнеса используется термин «бизнес-Agile». Ценности и принципы Agile-манифеста важны для эффективной работы, независимо от вашей роли в организации.