Moroz Team

Основные Agile-методологии: применение гибких подходов в разработке и управлении проектами

Agile-методологии применяются в разработке по всему миру. А как их применить к вашему проекту? Мы, Moroz Team, расскажем об основных Agile-подходах и поделимся советами по их применению в разработке и управлении проектом.

Что такое Agile: определение и роль в разработке программного обеспечения

Мем про Agile в разработке: гибкие методологии приводят к частым изменениям
Agile — это набор методов и методологий, которые помогают вашей коман­де эффективнее мыслить, работать и принимать решения.
Эндрю Стеллман, Дженнифер Грин «Постигая Agile»
Agile — это целая философия. Её применяют уже больше 20 лет. И она не теряет своей актуальности. Она позволяет управлять любыми процессами гибко и быстро адаптироваться к изменениям. Поэтому Agile-подходы так популярны. Они активно распространяются не только в разработке, но и в других сферах жизни.

Agile в IT — это уже практически общепризнанный стандарт. Он очень актуален для текущей ситуации в мире, где технологии меняются с каждым днём, а поток информации постоянно растёт. Но как именно использовать Agile? Это решение принимается в каждой компании или даже каждой команде по-своему.

Основные Agile-методологии

Некоторые практики из Agile вы можете применять по отдельности. Но если вы хотите повысить продуктивность в разы, для вас существуют методологии. То есть готовые наборы практик, процессов и принципов. Рассмотрим основные и самые популярные из них и узнаем, как их применять в процессе разработки и управления проектом.
1. Scrum — итеративное развитие продукта
Scrum предполагает итеративный подход – разбиение на временные промежутки, называемые спринтами. Результатом каждого спринта является добавление ценности продукта. А помогают управлять этим проектом особые Scrum-роли: владелец продукта (Product Owner) и Scrum-мастер.
2. Extreme Programming (XP) — экстремальное программирование
XP применяется в разработке ПО. Поэтому все практики и подходы ориентированы на процесс разработки. В экстремальном программировании ставится акцент на качество кода, скорость разработки и получение непрерывной обратной связи.
3. Lean — подход бережливого производства
Lean — это не методология, а скорее образ мышления. Подход Lean помогает устранить лишние затраты времени и ресурсов, которые не добавляют ценности продукту. В его основе — исключение потерь и оптимизация процессов.
4. Kanban — метод организации рабочего процесса
Канбан — это agile-метод, который делает фокус на визуализации рабочего процесса, ограничении рабочего потока и непрерывном улучшении процессов. Он строится на ценностях Lean и включает соб­ственные методы, помогающие команде лучше работать и развиваться.
Ваш личный помощник в ведении планов и задач

Организуйте любой рабочий процесс с Аванпланом

Создайте проект и настройте для него только нужные функции. Доступно в веб-версии или в приложении App Store и Google Play

Scrum: основы гибкой методологии и применение в управлении проектами

Мем про Scrum в разработке: множественные итерации и ретроспектива спринта
Scrum — один из самых популярных и известных гибких подходов к управлению проектами. Scrum — одна из самых понятных методологий, так как включает в себя множество готовых практик, инструментов, процессов и определяет конкретные роли. Рассмотрим, из чего она состоит и как её применять на практике.

Основные составляющие процесса работы в Scrum

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

В scrum-проекте определяются основные роли: владелец продукта, scrum-мастер и команда исполнителей. Вся команда определяет список задач, которые нужно сделать — это бэклог продукта. Задачи в бэклоге должны быть упорядочены по важности и потенциально принесённой ценности.

Задачи берутся в работу постепенно. В этом помогает разбиение всего процесса на спринты: временные отрезки примерно от 1 до 4 недель. Команда наполняет каждый спринт задачами из верхней части общего бэклога продукта — так она формирует бэклог спринта.

Когда состав спринта готов, начинается основная работа над задачами. Следить за процессом работы помогает Scrum-доска. Дополняется она небольшими ежедневными обсуждениями состояния дел — scrum-митингами. Окончание спринта обозначается демонстрацией готового решения — обзором результатов спринта. А для оптимизации процесса и внесения улучшений проводится встреча, называемая ретроспективой спринта.

Роли в Scrum: Product owner (владелец продукта) и Scrum-мастер

Основных ролей в Scrum три: владелец продукта, scrum-мастер и член команды (или просто исполнитель). С последней из них более-менее понятно. А вот остальные могут стать для вас новыми.

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

Scrum-мастер отвечает за управление процессом. Он помогает устранять препятствия на пути команды и решать возникающие проблемы. Также он помогает соблюдать некоторые правила Scrum: организует необходимые процессы, следит за таймингом ежедневных scrum-митингов и помогает в принятии командных решений.

Внедрение этих ролей позволяет грамотно распределить обязанности и полноценно пользоваться преимуществами процесса работы по Scrum.

Особенности применения Scrum в управлении проектом

Автономные и самоорганизующиеся команды: общая ответственность за проект
Scrum — методология, где команды работают как настоящие автономные организмы. Они самостоятельно определяют, каким образом достигнуть поставленных целей, без постороннего вмешательства. Подходит только для тех процессов, где руководство полностью доверяет команде и не вмешивается в принятие решений.

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

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

Если в начале спринта определён некоторый набор задач, нет гарантий, что все они будут выполнены и будут сделаны в срок. Важнее повышение ценности, чем реализация конкретной задачи или функции. Задачи — лишь варианты, как повысить и донести эту ценность.
…команда может ежедневно добавлять и удалять задачи на доске задач во время scrum-митинга. Но эти задания — варианты, а не обязательства: они не имеют пока сроков и нет такого понятия, как «поздняя» задача, которая приводит оставшуюся часть проекта к срыву дедлайна.
Эндрю Стеллман, Дженнифер Грин «Постигая Agile»
Спринт в любой момент может повернуть совершенно в другую сторону, если в этом есть необходимость. Поэтому некоторые обязательства в Scrum могут быть не выполнены, если это не принесёт большей ценности.

Такой подход может не подойти, если вы не готовы возложить всю ответственность за результат на команду. И как руководитель хотите принимать решения о конкретных фичах и задачах самостоятельно.

Extreme Programming (XP): основы экстремального программирования и его применение в управлении проектами

Мем про XP (экстремальное программирование): работа разработчиков и разгруженность менеджера
Методология экстремального программирования (XP) направлена на управление процессом разработки, как и следует из названия. Она сочетает в себе набор практик, которые применяются для программирования, интеграции и планирования. Рассмотрим основные практики, которые характеризуют этот подход.

Основные практики экстремального программирования (XP)

Экстремальное программирование позволяет вынести программирование на новый, экстремальный уровень. И делает это с помощью основных практик.
Разработка через тестирование (Test-driven development, TDD)
Разработка через тестирование предполагает написание тестов до написания самого кода. Пока код не будет написан верно, тест будет завершаться провалом. А после написания кода позволит сразу получить обратную связь и вовремя обнаружить ошибки. Сначала написание проверочных тестов, затем создание кода, способного их пройти, поиск проблем и путей их решения и написание дополнительных проверочных тестов.
Парное программирование
Парное программирование также помогает в написании качественного кода. Два разработчика пишут код за одним компьютером. При этом один пишет код, а другой наблюдает за процессом написания.

На первый взгляд может показаться, что такое расходование ресурсов не оправдано: ведь в это время двое могли написать в 2 раза больше кода. Но здесь на первое место выходит качество. Парное программирование помогает значительно сократить количество ошибок и исправить их на ранних этапах. А ведь именно поиск ошибок зачастую оказывается самым затратным процессом в написании кода.
Десятиминутные сборки
Создание автоматизированной сборки для всей кодовой базы, которая длится не больше 10 минут, помогает сэкономить время и влияет на качество создаваемого продукта. Такая сборка включает в себя автоматический запуск всех модульных тестов и генерацию отчетов с положительными и отрицательными результатами.

Сборка, которая длится не больше 10 минут, запускается гораздо чаще и помогает отследить качество написанного кода. Она позволяет получить ответ на вопрос «Работает ли ещё наш код?». Благодаря этому каждый участник команды сможет получить постоянно обновляемую картину качества кода.
Непрерывная интеграция
Непрерывная интеграция помогает командам, где несколько участников одновременно работают с одной версией исходного кода.

Несколько участников не могут использовать один и тот же файл для внесения изменений одновременно. Для этого используется система контроля версий, которая имеет единый основной набор файлов. Она позволяет отдельным разработчикам выписывать из него или копировать нужные файлы, которые будут использоваться только этим программистом (что часто именуют помещением в так называемую песочницу). Так каждый разработчик работает над копией кода в своей «песочнице» и периодически отправляет свои изменения обратно в общее хранилище.

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

Особенности применения XP в управлении проектом

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

Такому подходу часто может противиться начальство: вместо выполнения мелочей могли бы потратить время на действительно важные, сложные задачи. Но такой подход имеет свои преимущества. С ним у команды сохраняется фокус на выполнении важных, приоритетных задач в первую очередь. И если остаётся время, появляется возможность сделать ещё некоторые мелочи, которые зачастую не включаются в планы.
Итеративный подход и короткие итерации
XP предлагает частые итерации и короткие циклы разработки. Растягивание итераций может привести к накоплению ошибок и мешает получению быстрой обратной связи. С другой стороны, при таком подходе бывает затруднительно разделять функциональность, сложно поддающуюся дроблению на итерации.
Акцент на совместной работе: единое помещение и тесное сотрудничество
Так как некоторые практики XP требуют единого местонахождения, в XP предполагается расположение команды в одном и том же помещении. Такое решение имеет как свои преимущества, так и недостатки.

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

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

Lean: ценности и применение бережливого подхода к разработке

Мем про Lean разработку: бережливое производство и избежание потерь
Lean — подход, который берёт свои истоки из принципов организации производства Toyota. Термин «бережливого производства» был адаптирован и теперь применяется и в разработке. Он основан на ценностях и не включает в себя конкретный набор практик, в отличие от Scrum и XP. Тем не менее, давайте рассмотрим его основные ценности и как их можно применять при управлении проектом.

Ценности Lean

В основе подхода Lean — избежание потерь для повышения создаваемой ценности. Чем меньше у вас лишних расходов, тем эффективнее вы используете ресурсы и больше выгоды от них получаете в итоге. Рассмотрим основные ценности подхода Lean, которые приводят Эндрю Стеллман и Дженнифер Грин в своей книге «Постигая Agile».
1
Ликвидируйте потери
Выявите работы, выполняемые вами, но не создающие ценность, и избавьтесь от них.
2
Усильте обучение
Используйте обратную связь, чтобы улучшить свою работу.
3
Принимайте решения как можно позже
Принимайте все важные решения по проекту, обладая максимумом информации о нём, — то есть в последний ответственный момент.
4
Доставляйте ценность как можно раньше
Проанализируйте реальную стоимость задержек и минимизируйте её.
5
Раскрепостите вашу команду
Сформируйте целенаправленную и эффективную рабочую среду и объеди­ните энергичных людей.
6
Добейтесь целостности
Создавайте программное обеспечение, интуитивно понятное для пользователей и работающее сообразно их ожиданиям.
7
Следите за общей картиной
Постарайтесь досконально разобраться в той работе, которая выполняется у вас в проекте. Примените правильные методы измерения, чтобы убедиться, что вы действительно видите даже мельчайшие детали.

Потери и как их ликвидировать при управлении проектом по методу Lean

Подход Lean может использоваться для устранения потерь в любом процессе. Будь то Scrum, XP или другие подходы к работе. Вы можете ввести процесс отслеживания потерь, которые присутствуют в вашем процессе разработки, и определить методы для их устранения. Для этого рассмотрим основные типы потерь и их примеры, которые встречаются на практике.
1. Частично проделанная работа
Любая недоделанная работа несёт за собой потери. Например, задача, на которую зря потратили время и не доделали до конца. Или итерация, в которой не удалось разработать до конца функциональность, которая добавила бы ценности продукту. Чтобы избежать таких потерь, старайтесь уделять больше времени планированию и качественной расстановке приоритетов. Берите в работу действительно важные задачи и доводите дело до конца.
2. Дополнительные процессы, не добавляющие ценности
Постарайтесь отследить дополнительные работы, на которые вы тратите время, но которые не добавляют ценности продукту. Например, это может быть составление отчёта только ради самого отчёта. Или проведение встреч, в ходе которых вы отвлекаетесь на неважные вопросы и не решаете проблем. Избавьтесь от подобных пожирателей времени и ресурсов и ликвидируйте лишние потери.
3. Лишние функции
Помните, что вы создаёте продукт для пользователей. Новые функции должны быть полезны и нужны в первую очередь им. Если вы создаёте функции, которые на самом деле не нужны пользователям, — это потери. Также важно и уделять время старым функциям. Иногда не убирая лишние функции из продукта, вы тоже несётё потери: тратите больше времени на их поддержку, чем получаете ценности от них.

К этой же категории можно отнести ситуацию, когда кто-то в проекте слишком увлекается новой технологией и внедряет её в проект в первую очередь для удовлетворения личных интересов. В долгосрочной перспективе это может быть полезно для специалиста, его навыков и даже для команды. Но когда это создаёт помехи для создания ценности в продукте — это потери. Старайтесь организовать такие процессы грамотно, чтобы не мешать основной цели — созданию ценности.
4. Переключение между задачами
Часто команды разработки работают в многозадачном режиме. Одновременно приходится решать разные проблемы: писать код, отвечать на вопросы разработчиков, тестировщиков и других членов команды, а иногда ещё и заниматься поддержкой пользователей. И каждая задача является важной. Но частые переключения между задачами требуют ресурсов и являются потерями. Старайтесь выделять время на выполнение каждой конкретной задачи, не отвлекаться и оставаться сосредоточенным.
5. Ожидание
Некоторые особенности организации процессов могут заставлять чего-то ждать. Ждать готовой и подробно описанной задачи, ждать результатов тестирования и сидеть без работы, ждать чьего-либо согласования. Всё это — потери. Старайтесь выявлять такие проблемы и оптимизировать процессы, чтобы не тратить время на ожидание.
6. Лишние движения
Некоторые процессы устроены настолько сложно, что создают потери за счёт лишних движений. Например, для доступа к инструменту, которым специалист пользуется постоянно, требуется пройти через полосу препятствий: найти нужные контакты, обратиться к нескольким людям, перечитать несколько томов инструкций и проч.

Эти затраты могут быть связаны не только непосредственно с разработкой. Например, сложности в кадровых вопросах могут отнимать рабочее время разработчиков. Старайтесь организовать все процессы так, чтобы не заставлять сотрудников делать лишние движения и тратить на них своё время.
7. Дефекты
Работа с дефектами в продукте — это всегда отдельный вид деятельности. Их нужно обнаружить, потратить ресурсы на поиск причин их возникновения, проверить на разных устройствах и версиях, а затем ещё и исправить. Чем больше дефектов, тем больше работы и лишних потерь. А если дефект вовремя не найти и не исправить, его может обнаружить пользователь. Это может снизить воспринимаемую ценность и навредить продукту, его репутации.

Старайтесь уделять время и внимание качеству своего продукта и избегать дефектов. Например, для сокращения потерь от дефектов вы можете применять практики экстремального программирования.

Kanban: основы и применение для работы и организации процессов

Мем про Kanban в разработке: организация процесса и работа с kanban-доской
Kanban — не готовая методология разработки. Не система управления проектами. Kanban — это способ улучшения процессов. Этот подход был организован на основе принципов Lean. Но в нём уже можно найти конкретные практики и инструменты. Поэтому применять его на практике проще и понятнее. Давайте рассмотрим, что включает в себя Kanban и как с его помощью организовать процесс разработки.

Принципы и правила: как организовать работу по Kanban

Kanban — это система управления потоками работы. Начинается работа по Kanban с анализа текущей работы. Первый принцип Kanban — «Начните с того, чем заняты сейчас». Это значит, что необходимо определить текущие стадии, через которые проходит каждая задача.
Канбан … это метод улучшения процесса: шаги, которые команда принимает для создания и поставки ПО. Прежде чем вы сможете что-нибудь улучшить, нужна отправная точка, а для Канбана это как раз то, что вы делаете сегодня.
Эндрю Стеллман, Дженнифер Грин «Постигая Agile»
Следующий шаг: начать отслеживать процесс по стадиям. Вы сможете установить лимиты на количество задач в каждой стадии, чтобы избежать перегрузки, ожидания и торможения работы. Визуализация процесса поможет вам понять, какая стадия тормозит всю работу и требует изменений.

После того, как вы увидите текущую картину, сможете сделать выводы, как улучшить ваш процесс. Для этого служат следующие принципы: «Договоритесь всей командой совершенствоваться через эволюционные изменения» и «Одобряйте инициативу на всех уровнях». На этом этапе вы можете использовать разные эксперименты и наблюдать за результатами: помогает ли новый подход решать текущие проблемы.

Применение практик Kanban для процесса разработки и управления проектом

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

  • визуализация процесса с помощью Kanban-доски
  • контроль и ограничение потоков работ с помощью WIP-лимитов
  • оптимизация и внесение изменений в процесс
Визуализация процесса разработки с помощью Kanban-доски
Kanban-доска — это средство для визуализации любого рабочего процесса. Колонки на доске — это стадии. А сами задачи обозначаются в виде стикеров, которые перемещаются между стадиями-столбцами.

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

Например, для разработки может применяться примерно такой состав стадий:
— Запланировано
— Проектирование
— Реализация
— Тестирование
— Готово к публикации
— Опубликовано

Некоторые из стадий можно определить подробнее. Например, «Реализацию» разделить на этапы: «Готово к разработке», «В разработке», «Code review» и «Готово к тестированию». Если вам важно отслеживать каждый из этих этапов и понимать задержки, добавьте и их на свою доску. Но старайтесь не переусердствовать, чтобы доска не была слишком перегруженной для контроля и анализа процесса.
Контроль и оптимизация потока работ с помощью WIP-лимитов
Следующим шагом на пути к оптимизации процессов является установка ограничений для каждой стадии-колонки на доске. Необходимо определить, какое количество рабочих элементов может находиться в каждой стадии одновременно. Такое ограничение в Kanban называется WIP-лимитом: limit work in progress.

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

Важно не только следить за процессом, но и оптимизировать его. Именно в этом и состоит суть применения Kanban-подхода: в оптимизации рабочих процессов. Вносите изменения, которые позволят устранить неравномерность работы, перегрузки и увеличить пропускную способность (скорость выполнения задач).

Заключение: как выбрать Agile-подход, который подойдёт для вашего проекта

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

Вы можете выбрать для себя тот, что лучше подходит именно вам. Учитывайте специфику вашего проекта и предпочтения команды. Организуйте работу с любым процессом проще в Аванплане.
Ксения Мороз, часть команды Moroz Team
18 февраля 2024 г.

Узнайте больше о процессе разработки

Делимся советами и лайфхаками в нашем блоге
    Подпишитесь на нас и узнавайте что-то новое каждую неделю