Agile Software Development — это термин, обозначающий набор практик и методик, основанных на 12 принципах и 4 идеях Manifesto for Agile Software Development. К таким подходам относят Scrum, FDD (Feature-Driven Development), Extreme Programming, методики Crystal.
Отличительная особенность Agile от других подходов к разработке программного обеспечения — сосредоточенность на людях и их взаимодействии. Решения развиваются благодаря сотрудничеству между самоорганизующимися командами. Однако это не означает, что при таком подходе нет необходимости в менеджерах. Они обеспечивают благоприятную среду для разработки, удостоверяются, что члены команды имеют или получают необходимые навыки, помогают решить некоторые проблемы.
Ключ к успеху в гибких разработках — это обеспечение гибкости при сохранении организации. Лучший способ это осуществить — иметь инструменты, позволяющие отследить и организовать процесс работы команды, при этом не навязывая строгих графиков и ролей.
Зачем нужна автоматизация agile-процессов?
Действительно, любой процесс можно организовать без помощи автоматизации, при этом не тратя ресурсов на внедрение различного ПО. Однако в настоящее время бизнес-среда с каждым днём становится более динамичной, поэтому для успешного ведения бизнеса необходимо оптимизировать деятельность компании с помощью технологичных решений.
Кроме этого современные команды все чаще становятся распределенными, включают сотрудников, которые работаю удаленно. В таких случаях уже не обойтись использованием стикеров и пробковой доски на стене в общем кабинете. Автоматизация просто необходима для поддержки совместной работы распределенных команд и удаленных сотрудников.
Что даёт автоматизация?
- Сокращает время на выполнение типовых задач. Автоматизация стандартных действий работника позволяет высвободить время для более важных и сложных задач.
- Уменьшает влияние человеческого фактора. Чем типичнее задача, тем выше вероятность ошибки. Автоматизация же позволяет свести эту вероятность к минимуму.
- Помогает контролировать работу сотрудников. Такие системы позволяют отследить продуктивность каждой отдельно взятой команды.
- Даёт быстрый доступ к информации. Автоматизация позволяет иметь всю актуальную информацию под рукой. Если подготовка отчёта вручную может занять несколько рабочих дней, то программа справится с этой задачей за несколько секунд.
- Повышает эффективность бизнеса. Автоматизация позволяет организовать и упорядочить все процессы в компании, тем самым помогая быстрее и легче принимать важные решения.
Основные инструменты для автоматизации agile-процессов
- Системы управления командой: такие системы позволяют организовывать работу команды, распределять работу и хранить завершённые проекты.
- Системы контроля версий: такие системы позволяют хранить несколько версий одного и того же кода, давая возможность возвращаться к более ранним версиям при необходимости.
- Системы непрерывной интеграции: переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счёт наиболее раннего обнаружения и устранения ошибок и противоречий.
- Системы автоматизации сборки: при использовании такого инструмента значительно ускоряется процесс компилирования, минимизируется количество некорректных сборок, а также исчезает привязка к конкретному человеку.
Наиболее популярные agile-практики
Agile представляет собой семейство гибких методов управления, основанных на общей философии, принципах и идеях. Однако каждый метод имеет свой собственный набор практик и терминологию. Рассмотрим наиболее популярные методы.
Scrum
Scrum является наиболее популярным и структурированным методом семейства. Каждым проектом занимается кросс-функциональная самоорганизующаяся команда исполнителей, владелец продукта, следящий за развитием проекта и коммуникацией с заказчиком, и скрам-мастер, в чьи обязанности входит организация всего процесса, мотивация команды и решение различных бытовых проблем.
Весь рабочий процесс разделён на равные спринты — промежутки времени от недели до месяца, в течение которых команда работает над текущими задачами. В конце спринта обсуждаются результаты проделанной работы и формулируются задачи на следующий спринт. Так, спринты удобно сравнивать, тем самым отслеживая эффективность работы команды. Использование SCRUM для управления проектами является мощным способом повысить эффективность работы команды.
Использование Kanban-досок (досок задач)
Формально Kanban является частью концепции бережливого производства (lean production) и не относится к гибким методикам. Но один из инструментов Kanban – использование карточек и доски задач активно используется в большинстве гибких подходов.
XP — Extreme Programming
XP — самый дисциплинированный и гибкий метод, целью которого является создание продукта в условиях быстро меняющихся требований. Отличительная особенность ХР заключается в том, что данный метод применим только в области разработки ПО. ХР придаёт большое значение взаимодействию клиентов и разработчиков, парному программированию, а также стандартам кодирования, благодаря которым код выглядит целостно.
Crystal Methodology
Crystal — один из самых лёгких и гибких подходов из семейства Agile. В основе данного метода лежат два предположения:
- команда может стать более эффективной, оптимизировав свою работу;
- каждый проект отличается от других и требует определённых методов и стратегий.
Также Crystal включает в себя три основных свойства, необходимых для успешной работы: частую доставку кода, усовершенствование посредством рефлексии и «осмотическую» коммуникацию, которая осуществляется членами команды в пределах одного помещения.
Стоит отметить, что Crystal является семейством методов, которое включает в себя огромное количество вариантов, подходящих для различных проектов. Так, самая простая классификация Crystal — по размеру команды: Crystal Clear для команд от 2 до 8 человек, Crystal Yellow для 8–20 человек, Crystal Orange для команд от 20 до 50 человек и Crystal Red — от 50 до 100 человек в команде.
Feature-Driven Development (FDD)
Функционально управляемая разработка является прагматичным методом, наиболее подходящим для долгосрочных сложных проектов. Почему? Во-первых, на начальном этапе ведётся разработка общей модели, которая позволяет понять требования к продукту и привлечь новых разработчиков. Во-вторых, данный метод предполагает постоянное составление отчётов и исчерпывающей документации, что позволяет отслеживать прогресс, выявлять ошибки и вовремя предоставлять клиенту нужную информацию.
При использовании данного метода следует учитывать тот факт, что все главные роли (руководителя, аналитика) выполняет один человек — ведущий программист. Это означает, что успех проекта будет зависеть в большей степени от его опыта, навыков и знаний.
Инструменты для управления agile-проектами
Учитывая количество и разнообразие методов, достаточно сложно выбрать наиболее подходящий и применить его, добившись нужного уровня продуктивности. Поэтому необходимо выбрать наиболее подходящий инструмент для управления agile-проектами. Для этого следует выяснить, какая функциональность требуется для эффективной работы в таких системах.
- Доска задач (канбан доска) — это инструмент визуализации проекта. Доска должна состоять минимум из трёх столбцов: «сделать», «в процессе», «сделано». Так, в любой момент понятно, на каком этапе находится каждая задача.
- Бэклог (backlog) — это список требований к функциональности, упорядоченный по их степени важности. Элементы этого списка называются пользовательскими историями (user story).
- Поинт (point) — это умозрительная мера сложности выполнения задачи относительно других задач. Часто используются нелинейные шкалы (числа Фибоначчи, степени числа 2 и т.п.)
- Диаграмма сгорания задач (Burndown Chart) — это график, позволяющий отслеживать прогресс проекта. На горизонтальной оси показываются дни, на вертикальной — количество оставшихся задач. Дополнительно строится идеальный график сгорания, показывающий запланированный прогресс в каждый день проекта.
- Definition of Done (DoD) представляет собой список критериев, с помощью которых можно оценить степень готовности проекта.
- Velocity — метрика, помогающая оценить количество задач, которое команда способна решить за промежуток времени.
Рассмотрим наиболее популярные инструменты для автоматизации agile-процессов
Jira
Jira подходит для команд, которые работают по методу Scrum, Kanban. Здесь разработчики всегда могут отследить этапы проекта, расставить приоритеты и распределить задачи. Возможности сервиса вероятно расширить благодаря интеграции с различными плагинами.
Azure DevOps Server
Azure DevOps Server (ранее Team Foundation Server) — это инструмент управления жизненным циклом приложения в Visual Studio. Рабочий процесс можно регулировать с помощью agile-методов, используя готовые шаблоны для Scrum и доски Kanban.
VersionOne
VersionOne позволяет не только управлять командами любого размера, но и контролировать сразу несколько команд. Ключевой особенностью данного инструмента является возможность планирования спринта, релиза и продукта в целом.
Asana
Asana — инструмент, позволяющий в полной мере использовать возможности Kanban. Здесь можно применять теги, интегрировать сторонние сервисы, а также управлять несколькими проектами в рамках одной команды.
Rally
Rally — это платформа, созданная для масштабирования методов agile-разработки. Rally помогает расставить приоритеты, распределить ресурсы и интегрировать команды между собой с помощью нескольких agile-методов.
ActiveCollab
Данный сервис способен отслеживать выполнение задач, этапы проекта и текущие расходы команды. В ActiveCollab можно регулировать доступ к данным как сотрудникам, так и клиентам, а также отслеживать их активность на сервисе. Характерной чертой инструмента является система фильтров, позволяющая ориентироваться в большом списке задач.
Trello
Trello — наиболее популярный инструмент, позволяющий работать по методу с досками задач или канбан досками. Сервис позволяет планировать задачи, расставлять их приоритетность и распределять по этапам. Trello способен интегрироваться с другими сервисами.
SimpleOne
SimpleOne является облачной платформой для автоматизации всех сервисных бизнес-процессов, разработанной с учётом лучших практик (ITIL, VeriSM). Платформа, помимо прочего, позволяет автоматизировать управление микрокомандами, работающими по Scrum c использованием готовых встроенных инструментов. Преимуществом сервиса является возможность визуальной разработки и изменения автоматизированных процессов с минимальной необходимостью программирования.
На сегодняшний день всё больше компаний приходят к гибким подходам в управлении в самых разных областях, что позволяет не только улучшить производительность труда, но и повысить свою клиентоориентированность. Однако только лишь факта её применения недостаточно. Необходимо усовершенствовать каждый этап в процессе, тем самым способствуя сокращению издержек и улучшению качества и, как следствие, увеличивая свою конкурентоспособность.
Выбор инструмента, который поможет это осуществить, — важная и ответственная задача, для выполнения которой необходимо учитывать ряд факторов, таких как:
- количество человек в команде;
- наличие сотрудников, работающих удалённо;
- возможность масштабировать решение в процессе роста команды;
- скорость и простота внедрения.
Любым проектом можно управлять с помощью agile-методов, главное — выбрать наиболее подходящее решение. Большинство перечисленных решений подходит для автоматизации работы по Agile небольших команд.
Для управления agile-проектами в крупных компаниях мы рекомендуем использовать платформу SimpleOne. Она легко масштабируется и поддерживает одновременную работу десятков тысяч пользователей, а показатели скорости и простоты внедрения — одни из самых высоких в отрасли.