Почему Agile — это выгодно? Объясняем на примере
Как работает модель agile и почему стоит всерьёз подумать о найме команды с опытом agile-менеджмента.
Задача:
Спрос на разработку программного обеспечения велик, так что разработчики придумывают, как разрабатывать эффективнее и быстрее, не поднимая цену на разработку.
Причина:
Сегодня большинство команд вместо работы над задачами по методу Waterfall (когда задачи просто выполняются одна за одной по списку до конца) выбирают внедрение Agile в компании для более эффективного подхода к управлению проектами.
Что такое Agile, или гибкая разработка ПО
Agile — не один конкретный метод, а общее название для различных фреймворков и методологий, которые соответствуют документу «Agile Manifesto». Его создали четырнадцать лидеров в области ПО, основываясь на собственном опыте оптимизации процесса разработки. В конечном итоге Agile позволяет максимально гибко и быстро реагировать на изменения, которые неизбежны в непредсказуемом мире разработки программного обеспечения.
Для гибкой разработки программного обеспечения наша agile-команда использует специально подобранные инструменты, методы и фреймворки, которые помогают достичь максимальной производительности. Мы развили эти решения благодаря накопленному опыту и сотрудничеству с нашими клиентами. А когда появляются новые методы и техники — смело пробуем и внедряем.
Двенадцать основных принципов философии Agile
В документе «Манифест Agile» описаны 12 принципов, которыми нужно пользоваться, чтобы ваша разработка была гибкой:
- Наивысший приоритет — удовлетворенность клиентов. Она достигается благодаря непрерывной, максимально ранней поставке ПО.
- Полезные изменения приветствуются на любой стадии процесса разработки.
- Работающее ПО должно поставляться как можно быстрее и чаще.
- Разработчики и другие специалисты, занятые в проекте, должны сотрудничать друг с другом и ежедневно обмениваться информацией.
- Проект будет успешным, если его выполняют мотивированные профессионалы, а руководитель проекта всесторонне поддерживает команду, предоставляя ей все необходимое.
- Лучший способ коммуникации и получения информации — общение лицом к лицу.
- Главный показатель прогресса — завершение и поставка работающего продукта.
- Важно избегать авралов и переработок. Все участники проекта должны работать в постоянном темпе, который они смогут держать неограниченно долго.
- Чем качественнее дизайн и техническая стороны проекта, тем быстрее идет разработка.
- Простота содействует увеличению скорости, эффективности и гибкости.
- Самоорганизующиеся команды лучше соответствуют требованиям и создают более качественные дизайн и архитектуру.
- Команда должна регулярно вносить коррективы в свою деятельность, чтобы повысить эффективность, производительность и продуктивность.
Сравним методологии Agile и Waterfall
Традиционный подход Waterfall (Водопад) основан на планах, которые не подлежат изменению. Когда-то клиент придумал, каким он хочет видеть продукт, на какие этапы разбить разработку — все требования описаны в самом начале проекта и считаются «высеченными в камне».
Из-за этого первый этап становится очень долгим: менеджер проекта должен спланировать все этапы работы, хотя еще не знает о том, какие нюансы могут всплыть. Кроме этого он должен распределить ресурсы (даже те, что потребуются только на финальных этапах) и определение фичерлист. После этот менеджер должен следить, чтобы план строго соблюдался.
В результате на разработку программного обеспечения уходит гораздо больше времени, а изменения очень трудно внести в план, даже если они очень нужны конечным пользователям. Эти недостатки и привели к внедрению подхода Agile со своими преимуществами. В отчете State of Agile Report за 2020 г. говорится, что 95% из 4000 респондентов предпочитают гибкую разработку.
Методология Agile фокусируется на поощрении полезных изменений, а также на ускорении разработки и поставки программного обеспечения. Вместо плана с жесткими точками дедлайнов, процесс разработки делится на короткие отрезки — спринты Agile, которые выполняются за определенный срок. В начале каждого нового спринта команда разработчиков определяет, какие задачи они могут выполнить в течение отведенного на него времени. В конце спринта уже есть, что показать клиенту — программное обеспечение развертывается в рабочей среде, клиент знакомиться с ним и может дать обратную связь, попросить что-то изменить.
Роли и обязанности при agile-разработке
Чтобы методология работала, каждый в проекте должен заниматься своим делом. Даже клиент. Если все будут придерживаться своих ролей, то процесс разработки будет стабильным.
Вот какие роли есть в командах, работающих по Agile:
- Product Owner (владелец продукта) — представляет заказчика и задает направление развития продукта. Он не принимает непосредственного участия в разработке, но играет ключевую роль в принятии решений и оказывает существенное влияние на ход проекта.
- Проект-менеджер и тимлид — обеспечивают связь между владельцем продукта и членами проектной группы. Менеджер проекта передает инструкции владельца команде, а тимлид контролирует работу членов команды и содействует прогрессу.
- Команды разработки — специалисты, прямо или косвенно участвующие в развитии проекта. В состав команд входят дизайнеры, разработчики, инженеры и различные специалисты, отвечающие за создание конечного продукта на основе идей и требований заказчика.
- Пользователь — конечный целевой покупатель продукта.
Для создания крупных продуктов могут потребоваться дополнительные роли, в том числе:
- эксперты в предметной области;
- независимая команда по QA и аудиту;
- специалист DevOps.
Методологии Agile
Существует несколько гибких методов управления проектами — Scrum, Crystal, Feature-Driven Development (FDD) и метод разработки динамических систем DSDM. Scrum — самый популярный из них. У Scrum четкий ритм, который помогает иметь предсказуемые результаты. Этот ритм определяется структурой спринтов и встреч, которая включает:
- планирование: устанавливаются приоритеты спринта;
- обязательство: команда рассматривает задачи и определяет, что можно выполнить в следующем спринте.
- ежедневные встречи: члены команды сообщают о переменах статуса и обсуждают стратегии.
В конце каждого спринта проводится демонстрация продукта, чтобы клиент мог оценить функциональность и прогресс. После этого команда проводит внутреннее собрание, чтобы обсудить результаты спринта и внести необходимые коррективы в процессы. А потом все повторяется.
Разные компании и команды предпочитают разные фреймворки. То, что работает для одного, может не работать для другого. Но главное — использовать методологию, которая соответствует принципам манифеста Agile.
Услуги компании Evrone по гибкой разработке ПО
Управление проектами по гибкой методологии agile ускоряет весь процесс разработки, поэтому появляются кросс-функциональные команды.
В Evrone мы начинаем новый проект с этапа изучения задачи, а затем отбираем минимально необходимую команду для проекта. Подробно изучаем проект перед тем, как приступить к его реализации, чтобы лучше понять, какие специалисты нужны для решения проблем. Исходя из задач команда может быть разной и включать менеджера проекта, несколько разработчиков, дизайнера, QA-инженера, специалиста по инфраструктуре/архитектуре и т. д.
Вот как выглядит планирование в Agile. В течение первой недели проект-менеджеропределяет стандартные инфраструктурные задачи, которые необходимо выполнить в первую очередь. Например, настроить сервер для разработки, организовать репозиторий для хранения кода, чаты для общения, систему для постановки задач и систему для документации. В течение этого периода команда проекта также выясняет, что именно требуется клиенту, а затем использует эту информацию при планировании задач на вторую неделю.
Специалисты оценивают задачи в часах и дробят, если нужно — члены команды должны их выполнить за одну рабочую неделю. Если в каких-то работах задач меньше, чем спринтов, то нужного человека можно привлечь на необходимое количество часов, а не на весь проект.
В конце недели команда показывает клиенту результаты и планирует задачи на следующую. Этот распорядок действует на протяжении всего проекта. По мере появления новых задач структура agile-команды может меняться, так как разные специалисты могут сменять друг друга. При необходимости добавляются новые члены команды. Мы используем инструменты Jira и Confluence, которые помогают командам разработчиков работать быстрее, эффективнее общаться, правильно организовывать документацию и поддерживать легкий доступ к ней.
Преимущества найма нашей agile-команды для разработки
Ускоренный вывод на рынок — наши собственные инструменты и гибкие процессы позволяют нам значительно ускорить выход продукта на рынок.
Высококачественные продукты — разделяя большие задачи на более мелкие, мы можем лучше управлять задачами и предоставлять качественные решения без ошибок.
Предсказуемая поставка ПО — наш подход agile-поставки упрощает регулярную разработку и внедрение новых функций.
Снижение затрат и строго определенные расходы — наши гибкие методы и повышенная продуктивность помогают клиентам максимально эффективно использовать свои инвестиции и увеличивать ROI. Кроме того, мы предоставляем четкие и прозрачные счета-фактуры, поэтому наши клиенты точно знают, сколько и за что они платят.
Полная прозрачность — благодаря сотрудничеству наши клиенты получают полную картину выполнения своих проектов на протяжении процесса разработки.
Адаптивность и снижение рисков — подход agile позволяет нашим командам гибко реагировать на изменения, а также проактивно выявлять и исправлять ошибки на ранних этапах процесса разработки.
Улучшенное удержание клиентов и их удовлетворенность — наша гибкость и открытость для изменений гарантируют, что конечный продукт будет соответствовать или превосходить первоначальные ожидания клиента. Быстрая поставка и регулярные релизы также приводят к более положительному опыту клиентов.
Agile — это эффективный и действенный подход к разработке современного программного обеспечения. С помощью Agile разработчики и клиенты могут достичь более тесного сотрудничества и хорошего результата. Используя методологии и инструменты Agile, компании-разработчики программного обеспечения могут предоставить своим клиентам более выгодные условия, а клиенты, в свою очередь, могут предложить своим покупателям лучшие решения и возможности.