Перейти к содержимому

Что такое agile-разработка?

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

На этой странице рассматривается предыстория. Если вы уже всё это знаете, пробегитесь до раздела Как East Agile Tracker соотносится с agile.

В феврале 2001 года семнадцать практиков разработки программного обеспечения — Кент Бек, Мартин Фаулер, Роберт Мартин, Рон Джеффрис и другие — встретились в горнолыжном домике в Юте и записали то, что у них было общего. Они назвали это Agile-манифестом. Это четыре строки:

Мы открываем для себя лучшие способы разработки программного обеспечения, занимаясь разработкой непосредственно и помогая в этом другим. Благодаря этой работе мы смогли осознать, что:

  • Люди и взаимодействие важнее процессов и инструментов
  • Работающий продукт важнее исчерпывающей документации
  • Сотрудничество с заказчиком важнее согласования условий контракта
  • Готовность к изменениям важнее следования первоначальному плану

То есть, не отрицая важности того, что справа, мы всё-таки больше ценим то, что слева.

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

За четырьмя ценностями двенадцать принципов манифеста описывают, как на самом деле выглядит «agile» изо дня в день:

  1. Наивысший приоритет — удовлетворение заказчика благодаря ранней и непрерывной поставке ценного программного обеспечения.
  2. Приветствуйте изменение требований, даже на поздних этапах. Agile-процессы используют изменения для обеспечения заказчику конкурентного преимущества.
  3. Поставляйте работающее ПО часто — неделями, а не месяцами.
  4. Представители бизнеса и разработчики должны работать вместе ежедневно.
  5. Стройте проекты вокруг мотивированных людей. Дайте им то, что нужно, и доверьте сделать работу.
  6. Самый эффективный способ передачи информации — разговор лицом к лицу.
  7. Работающее ПО — основной показатель прогресса.
  8. Agile-процессы способствуют устойчивой разработке — постоянному темпу, поддерживаемому бесконечно.
  9. Постоянное внимание к техническому совершенству и хорошему дизайну повышает гибкость.
  10. Простота — искусство максимизации объёма невыполняемой работы — крайне важна.
  11. Лучшие архитектуры, требования и проектные решения рождаются у самоорганизующихся команд.
  12. Команда регулярно размышляет о том, как стать эффективнее, а затем подстраивает и корректирует свою работу.

«Agile» — это зонтичный термин. Под ним находятся несколько различных методологий:

  • eXtreme Programming (XP) — Самая требовательная из семейства. Парное программирование, TDD, непрерывная интеграция, заказчик на месте, маленькие релизы. См. нашу страницу по XP.
  • Scrum — Ограниченные по времени итерации, называемые спринтами, ежедневные стендапы, именованные роли (Product Owner, Scrum Master). Легче на инженерные практики, чем XP.
  • Kanban — Визуализируйте рабочий процесс, ограничивайте незавершённую работу, оптимизируйте поток. Без временных рамок; вытягивание вместо проталкивания.
  • Lean — Заимствовано из производственной системы Toyota: устраняйте потери, оптимизируйте целое, поставляйте быстро, встраивайте качество.

Эти методы пересекаются и комбинируются. Большинство работающих команд берут лучшее из всех четырёх. East Agile Tracker имеет чёткую ориентацию на XP — см. eXtreme Programming — но большая часть того, что он предлагает, работает для любого вкуса agile.

Несколько устойчивых заблуждений, которые стоит назвать:

  • Agile — это не «отсутствие планирования». Планы меньше и короче, но планирование постоянно.
  • Agile — это не «отсутствие документации». Пишите то, что нужно. Манифест говорит, что работающее ПО ценнее исчерпывающей документации, — а не что документация это плохо.
  • Agile — это не Scrum. Scrum — это один agile-метод. Их несколько.
  • Agile — это не инструмент. Никакой инструмент не делает вас agile. Agile — это способ работы. Инструменты (включая этот) помогают; они не заменяют.

East Agile Tracker спроектирован вокруг принципов, изложенных выше. Вот соответствие:

ПринципКак трекер его поддерживает
Непрерывная поставкаИтерации по 1–4 недели; автопланирование на основе velocity; релизы как полноправный тип истории.
Приветствие измененийПереупорядочивайте бэклог в любое время; истории свободно перемещаются между итерациями; нет «блокировки итерации».
Работающее ПО как показательVelocity по умолчанию считает принятые баллы — засчитывается только доставленная, работающая работа.
Устойчивый темпVelocity — это не цель; это наблюдение. Система планирует следующую итерацию исходя из того, что вы реально делаете.
РефлексияАналитика по каждой итерации: burndown, доля отклонений, время цикла, прогнозы.
Самоорганизующиеся командыРоли намеренно минимальны: owner / member / viewer. Решает команда.
ПростотаПанель деталей — это один экран. Доска помещается на одной странице. Мы сопротивляемся функциям, отвлекающим от поставки.

Манифест был написан в 2001 году. С тех пор разработка программного обеспечения обрела новый тип участника: ИИ-агентов.

Мы считаем, что агенты входят в agile-команду — как именованные участники, со своими ролями, делающие реальную работу бок о бок с людьми. Принципы по-прежнему действуют. Люди и взаимодействие теперь включают участников-агентов. Самоорганизующиеся команды теперь включают решение о том, каких агентов привлечь и что им разрешено делать. Рефлексия теперь включает изучение вклада агентов в журнале активности и подстройку того, над чем они работают.

East Agile Tracker создан, чтобы сделать это практичным. Каждой историей может владеть человек или агент. Каждая запись журнала аудита приписывает реального актора. Каждое действие, которое предпринимает агент, видимо, проверяемо и отзываемо.

Создано East Agile.