Небольшое введение

Сегодня Agile — это то без чего сложно представить любую разработку продукта. Его используют вообще все: стартапы, корпорации и даже государственные организации, которые очень сложно назвать гибкими. Но кого ни спроси…

Что такое Agile?

Большинство тебе ответит:

Ну, это методология с разработкой по спринтам

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

До Agile: эпоха водопадов

А что же было до Agile? Как люди пытались унять хаос требований?

На самом деле, все по-разному, но базовой моделью индустрии была каскадная модель или Waterfall (водопад по-нашему). Описал эту модель впервые человек, который начинал свой путь еще в аэрокосмическом направлении и назвать его инноватором можно без зазрения совести. Уинстон Уокер Ройс в своей статье "Управление разработкой крупных программных систем" (1970) описал эту каскадную модель (водопадом ее тогда не называли)

Уинстон Уокер Ройс 

Американский учёный в области информатики, пионер в области разработки программного обеспечения

Типичный менеджер, который узнал правду
Типичный менеджер, который узнал правду

Но тут есть важное “НО”!

Еще тогда Ройс приводил каскадную модель как пример неэффективного способа разработки программного обеспечения, который ведёт к ошибкам и выпуску некачественных продуктов. А его коллеги, видимо, не прочитав и половины работы, записали его в авторы так называемого Waterfall’a, популяризировав упрощенную каскадную модель, в которой разработка идет строго сверху вниз без отклонений (короче, утопия).

Небольшое лирическо отступление... Спустя годы могу понять его коллег. Ройс предлагал в этой самой статье свои варианты гибких моделей, которые казались ему более релевантными, но графическое представление этих моделей — ЭТО ПРОСТО УЖАС! На фоне с этим каскад казался более понятным и простым.

Кстати полный текст статьи в переводе и многое другое можно прочитать в моем ТГК
👉 Ссылка

Процесс водопада выглядел так:

  1. System Requirements — определение системных требований

  2. Software Requirements — формирование требований к программному обеспечению

  3. Analysis — анализ требований и архитектурных решений

  4. Program Design — проектирование программы

  5. Coding — разработка (написание кода)

  6. Testing — тестирование

  7. Operations — эксплуатация и использование системы

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

Какие есть проблемы у Waterfall'а

Проблем из этого подхода вытекало очень много. Реальные ситуации показывали неудобность этой модели и самое главное — дороговизну! Бизнесу эта модель обходилась очень дорого, а разработке было просто неудобно работать по ней. Вообще большинство выделяло следующие проблемы (в том числе, кстати, и автор):

  • требования меняются (а это происходит в подавляющем большинстве проектов)

  • разработка длится очень долго (особенно если не повезет найти какую-то ошибку на финальной стадии)

  • продукт выходит уже устаревшим (по современным меркам, это вообще смертельно для многих продуктов)

  • дороговизна доработок при подобном процессе

И вот наша любимая индустрия IT-продуктов начала искать более гибкие подходы, которые помогли бы нам побороть эти проблемные места (в идеале без схем как у Ройса).

Одни из самых известных до 2000-х годов были:

Методология

Год

Автор

Суть подхода

Основные минусы

Crystal

1994

Alistair Cockburn

Семейство лёгких методологий разработки. Подход адаптируется под размер команды и критичность проекта. Делает упор на коммуникацию внутри команды.

Отсутствие строгих правил; сложность масштабирования; мало формализованных практик.

Extreme Programming (XP)

1996

Kent Beck

Итеративная разработка с короткими циклами и сильным фокусом на инженерные практики: TDD, парное программирование, continuous integration.

Требует высокой дисциплины команды; сложен для внедрения в крупных организациях; высокая зависимость от культуры разработки.

Feature Driven Development (FDD)

1997

Jeff De Luca и Peter Coad

Разработка строится вокруг небольших функций продукта (features). Проект разбивается на короткие итерации, каждая из которых добавляет конкретную функциональность.

Сильная зависимость от предварительного моделирования; слабая поддержка изменений требований; плохо подходит для стартапов.

Lean Software Development

~2003

Mary Poppendieck и Tom Poppendieck

Применение принципов Lean manufacturing к разработке ПО: устранение потерь, быстрые итерации, постоянное улучшение процессов.

Не даёт конкретного процесса разработки; требует высокой зрелости команды; часто трактуется слишком абстрактно.

На самом деле их было гораздо больше (о большинстве вы даже не слышали), тут я отобразил даже не половину. Тот же излюбленный всеми Scrum был представлен в 1995 году на конференции OOPSLA.

Все эти подходы предлагали более гибкие способы разработки по сравнению с каскадной моделью. Однако развивались они все независимо друг от друга и не имели единой философии. Можете представить, каково было айтишникам, когда они переходили из одной компании в другую и слышали "никакого парного программирования". Грустно. Досадно. Не по-agile'овски. Но эта ситуация изменилась в 2001 году, когда группа разработчиков сформулировала манифест Agile.

И тут пришел он!
И тут пришел он!

Рождение Agile

Когда на доске написано все, кроме ответа на вопрос "Что делать"
Когда на доске написано все, кроме ответа на вопрос "Что делать"

В феврале 2001 года группа из 17 разработчиков и методологов собралась на горнолыжном курорте Snowbird в штате Юта. Среди них были Мартин Фаулер, Кент Бек, Роберт Мартин, Джефф Сазерленд, Кен Швабер, Алистер Кокберн и другие практики, многие из них, к слову, стояли у истоков различных методологий. В общем, ребята эти точно знали, какие есть проблемы и понимали в какую сторону думать, чтобы их решить.

Цель встречи была довольно простой, но амбициозной! Обсудить, что объединяет разные так называемые "lightweight-методы" и попытаться сформулировать их общие принципы/ценности. В течение нескольких дней обсуждений участники сформулировали 4 ключевые ценности и начали работу над 12 принципами разработки, которые позже стали известны как Agile Manifesto.
Произошла своего рода ✨магия синергии✨

Но ребята на этом не остановились и позже для развития своих идей создали организацию "Agile Alliance" и опубликовали свой манифест на сайте AgileManifesto.org (Он еще работает, окунитесь в прошлое).

Кстати, подробнее про саму встречу в Snowbird — как она проходила, кто спорил, как появились формулировки ценностей и почему вообще выбрали слово Agile — я разобрал в отдельном подкасте
👉 Слушать здесь

В истории сохранился и черновик заметок Анди Ханта, который я так любезно отобразил снизу :)

Заметки Анди Ханта на встрече в 2001 Andrew Hunt, AgileUprising
Заметки Анди Ханта на встрече в 2001 Andrew Hunt, AgileUprising

4 ключевые ценности Agile

  1. Люди и взаимодействие важнее процессов и инструментов

  2. Работающий продукт важнее исчерпывающей документации

  3. Сотрудничество с заказчиком важнее согласования условий контракта

  4. Готовность к изменениям важнее следования первоначальному плану

Это не означает, что правые пункты не важны — просто левые ценятся больше.

12 принципов Agile

  1. Главный приоритет — удовлетворение клиента
    за счёт ранней и непрерывной поставки ценного программного обеспечения.

  2. Изменения требований приветствуются
    даже на поздних этапах разработки.

  3. Работающий продукт поставляется регулярно,
    с интервалом от нескольких недель до нескольких месяцев.

  4. Бизнес и разработчики должны работать вместе
    ежедневно на протяжении всего проекта.

  5. Проекты строятся вокруг мотивированных людей,
    которым доверяют выполнение работы.

  6. Самый эффективный способ передачи информации — личное общение.

  7. Работающий продукт — главный показатель прогресса.

  8. Agile-процессы поддерживают устойчивый темп разработки,
    который команда может сохранять постоянно.

  9. Техническое совершенство и хороший дизайн повышают гибкость разработки.

  10. Простота — искусство максимизации объёма невыполненной работы — является ключевой.

  11. Лучшие архитектуры, требования и решения появляются в самоорганизующихся командах.

  12. Команда регулярно анализирует свою работу и ищет способы повысить эффективность.

Источник: AgileManifesto.org

Scrum

Как работает "чисты scrum"
Как работает "чисты scrum"

И вот, разобравшись. что за штука этот Agile, давайте поговорим какие фреймворки начала объединять эта философия. Пожалуй, самым популярным был и является Scrum.

Scrum — методология управления проекта aka самый популярный Agile-фреймворк. В чём главная идея Scrum? Невозможно идеально спланировать сложную работу заранее (особенно в IT), поэтому нужно двигаться короткими итерациями, проверять результат и корректировать курс.

Sprint — фиксированный промежуток времени (обычно от 1 до 4 недель), в течение которого команда создаёт готовый инкремент (набор фич, доработок) продукта. Каждый спринт имеет цель (буквально), набор задач и завершается демонстрацией результата и анализом проделанной работы. Спринты помогают команде регулярно получать обратную связь и адаптировать дальнейшую разработку под нужды нашего с вами излюбленного бизнес-заказчика.
Именно через спринты (и менеджерскую магию) организуется вся работа команды, они задают ритм в котором команда живет, на короткие управляемые(чаще всего) циклы. И поверьте, я не преувеличиваю, каждый релиз, особенно на старте, будет вашей маленькой победой :)

А теперь давайте немного про ролевые игры в скраме. Это там любят.

Роль

Основная задача

За что отвечает

Кто им является

Product Owner

Максимизация ценности продукта

Формирует видение продукта, управляет Product Backlog, расставляет приоритеты задач, принимает результаты работы команды

Представитель бизнеса или продукта. Человек, который лучше всего понимает потребности пользователей и цели продукта. Чаще всего в команде разработки это либо отдельная должность, которая так и называется "Владелец продукта", либо это Product/Project Manager

Scrum Master

Помогает команде эффективно применять Scrum

Следит за соблюдением принципов Scrum, помогает устранять препятствия, улучшает процессы внутри команды, способствует самоорганизации

Любой член команды или отдельный специалист. Важно не формальное назначение, а понимание Scrum и способность помогать команде

Developers (команда разработки)

Создание рабочего инкремента продукта

Реализуют задачи из Sprint Backlog, совместно отвечают за результат спринта, планируют и организуют свою работу

Кросс-функциональная команда специалистов: разработчики, тестировщики, дизайнеры, аналитики, DevOps и другие

Ключевые артефакты Scrum

Product Backlog — это все задачи, функции и идеи, которые нужны для развития продукта. Включает новые фичи, улучшения, исправления багов и технические задачи. За наполнение и приоритизацию вашего бэклога отвечает Product Owner.

Sprint Backlog — это уже более узкий список задач, который формирует команда для реализации в текущем спринте. С ним рука об руку идет и план работы команды для достижения цели спринта. (Например, "Сделать поиск быстрее, чтобы пользователи находили товары на 50% быстрее"

Increment — рабочий результат спринта. Это часть продукта, которая полностью готова к использованию и соответствует установленным критериям готовности. (короче говоря, тут все, что вы нашкодили накодили и протестировали)

Definition of Done (DoD) — список/чек-лист критериев, по которым команда определяет, что задачи могут считаться готовыми.

Все артефакты Scrum призваны сделать прозрачной работу команды: любой участник проекта может понять, что планируется, над чем команда работает сейчас и какой результат уже получен.

Ритуалы

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

Ритуал

Пояснение

Sprint Planning

Встреча в начале спринта, на которой команда определяет цель спринта и выбирает задачи из Product Backlog для выполнения. Также обсуждается план реализации выбранных задач.

Daily Scrum

Короткая ежедневная встреча команды (обычно до 15 минут), на которой участники синхронизируются по текущей работе и обсуждают продвижение к цели спринта.

Sprint Review

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

Sprint Retrospective

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

Kanban

Kanban в отличие от Scrum'a с его спринтами и итерациями предлагает другой более восточно-азиатский подход — непрерывный поток работы.

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

Фан-факт. Изначально Kanban появился в производственной системе Toyota, где использовался для управления производственными потоками. Позже этот подход адаптировали для разработки программного обеспечения и управления проектами. Поговаривают, что Kanban даже частично вдохновил авторов Agile. Во всяком случае подход крайне известный и пользуется популярностью в разработке ПО и на производствах.

Визуализация работы + ограничение количества задач = Kanban

Основные принципы Kanban

1. Визуализация работы
Рабочий процесс отображается на «Kanban доске», где задачи проходят через несколько стадий выполнения.
Например: Backlog → In Progress → Review → Done
Это помогает команде видеть где сейчас больше всего сконцентрировано задач и контролировать эти «Узкие горлышки», которые стопят весь рабочий процесс.

2. Ограничение незавершённой работы (WIP)
Один из главных принципов Kanban — ограничение количества задач, которые могут одновременно находиться в работе на каждой из стадий.
Например:
— максимум 3 задачи в In Progress
— максимум 2 задачи на Review
Логика тут такая, что эти ограничения должны помогать избежать перегрузки команды и ускорять завершение задач, на деле они помогают выявлять несовершенства процесса и избавляться от них. Бизнес не любит, когда процесс тормозится и уж тем более останавливается.

3. Управление потоком работы
Команде нужно постоянно брать новые задачи, при этом часто эти задачи, очень важные, поэтому Kanban команда стремится сделать поток задач максимально плавным и предсказуемым и как только кто‑то из работяг освободится, то сразу же получает новую задачку.

4. Постоянное улучшение процесса
Kanban поощряет своего рода восточный подход с небольшими постепенными изменениями вместо радикальных реформю Команда регулярно анализирует свою работу и ищет способы улучшить процесс.

На практике, Kanban славится и наиболее часто используется в основном для визуализации процесса. И самым главным элементом является Kanban-доска.

Kanban-доска

Это главный инструмент Kanban, за который его так любят. Она показывает:

  • этапы работы (какие у нас вообще есть этапы)

  • задачи (какие задачи у нас есть)

  • текущее состояние процесса (на каком этапе какая задача)

Обычно она выглядит так:

Backlog

In Progress

Review

Done

Каждая задача представлена карточкой, которая перемещается между колонками по мере выполнения.

В моей практике регулярно встречалось от 4 до 15 этапов. И этот выбор количества этапов делает сама команда отталкиваясь от своих нужд.

На практике многие команды используют гибрид Scrum и Kanban, который называют Scrumban или выбирают какое-то другое более уникальное название. Если наберем увижу, что тема действительно интересна вам, могу рассказать с какими гибридами в своей практике мне довелось поработать и какие плюсы и минусы я оттуда подчеркнул.

The end

На этом базовое ознакомление с Agile, Scrum, Kanban завершено, жду экспертные мнения о том, что я упустил, перепутал и где наврал в комментах❤️.