Agile — одна из наиболее активно используемых методологий разработки программного обеспечения. Методика позволяет проектным группам адаптироваться к изменениям быстрее и проще. Ответить на вопрос «что такое Agile?» простыми словами можно так: это пошаговый подход как к разработке софта, так и к управлению проектами.
Характеристики, основные принципы
Философию Agile можно описать как набор принципов, поощряющих гибкость, адаптируемость, коммуникацию. Основные характеристики лаконично отражены в так называемом манифесте из четырех постулатов.
1. Люди, взаимодействие между ними, важнее процессов.
Именно команда удовлетворяет запросы заказчика, управляет процессами. Поэтому Agile ценит коммуникации выше, чем рабочие процессы. Как только регламенты, схемы, инструкции занимают первое место, персонал начинает уделять больше времени следованию документации, а не удовлетворению потребностей тех, кто оплачивает работу.
2. Рабочее программное обеспечение важнее документации.
Аналоги Agile предусматривают большое количество документов, сопровождающих проектную деятельность. Иногда основные задержки связаны именно с необходимостью задокументировать каждый шаг. Agile-подход не избавляет от необходимости оформления бумаг. Но методика подразумевает создание понятных инструкций, по которым каждый работник сможет быстро узнать над чем ему нужно работать. Если созданию документов уделяется столько же времени, сколько работе над предметом договора, необходимо пересмотреть документооборот.
3. Постоянное взаимодействие с клиентами вместо переговоров до заключения контракта.
Большинство методов управления проектами предусматривает активное взаимодействие с контрагентом, составление технического задания до заключения договора. Затем команда работает и возвращается к конечному пользователю с уже готовым продуктом.
Agile использует другой метод, включающий сотрудничество с клиентами в процессе работы. Это упрощает внесение любых изменений, сокращает общие сроки реализации задачи.
4. Внесение изменений вместо строгого следования плану.
Традиционные подходы к разработке программного обеспечения считали изменения потерей, которую стоит избегать любой ценой. Разработчики уделяли много времени составлению подробного технического задания, инструкций, следуя которым можно было достичь желаемого итога. Любые изменения нивелировали затраченные усилия. Аджайл же переносит внимание персонала с теории. Команда изначально готовится работать в условиях постоянных изменений.
Стоит рассматривать Agile ценности как философию, средство для достижения цели, набор правил, которым нужно следовать.
Нюансы внедрения
Главная идея Agile заключается в итеративном, пошаговом прогрессе. Лучший способ внедрить методологию во всей организации: поэкспериментировать над одной небольшой задачей, собрать замечания, обратную связь от участников. Хорошо если владельцем продукта будет сама компания, а не внешний клиент. После исправления ошибок можно масштабировать подход. Также необходимо подобрать подходящие инструменты управления проектами. Чаще всего специалисты используют scrum, канбан доски. Главное строго следовать принципам Agile, не пытаться отступать от принятого направления даже при возникновении проблем.
Ключевым требованием внедрения является ретроспектива. Участникам команды придется постоянно возвращаться к уже завершенным стадиям, понять какие инструменты сработали, какие — нет, а затем вносить улучшения. Главное, чтобы в обсуждении участвовали все сотрудники. Менеджер-владелец продукта же должен принимать окончательное решение.
Какие вопросы решает методика?
Agile практики в своей работе руководствуются двенадцатью принципами гибкого подхода к разработке софта. Специалист, который знает и активно их применяет, может решить все возникшие проблемы, устранить потенциальные риски.
- Удовлетворять запросы рынка за счет своевременной, непрерывной работы над продуктом.
- Не сопротивляться постоянным изменениям.
- Концентрироваться на процессе разработки программного обеспечения, его качестве, а не планировании.
- Активно взаимодействовать с получателем продукта должны не только руководители, но и рядовые программисты.
- Обеспечивать надлежащую рабочую среду, моральную поддержку команде разработчиков, работать над системой мотивации.
- Если у продукта только один автор, то он должен делиться опытом.
- Отслеживать уровень прогресса выполнения задач необходимо по измеряемым критериям.
- Постоянно развиваться. Даже если члены команды прошли базовый курс обучения, нужно периодически обновлять знания в сфере проектного менеджмента.
- Тратить ресурсы не только на техническое совершенство, но и уделять время дизайну.
- Упрощать структуру внутрипроектных коммуникаций, если это возможно.
- Поощрять самоконтроль, самоорганизацию исполнителей.
- Обеспечивать устойчивое многоуровневое развитие.
Agile-система — это возможность вывести работу организации на новый уровень.
Плюсы и минусы использования гибкой методологии
После изучения информации, может показаться, что Agile-методы идеально подходят для разных задач. Действительно у системы есть множество преимуществ:
- заказчики, руководители разных уровней, имеют представление о ходе выполнения задачи на всех стадиях;
- можно рассчитывать, что плательщик получит работающую программу или приложение, которое будет полностью соответствовать его ожиданиям;
- разработчики позитивно принимают постоянно меняющиеся требования;
- нет необходимости полностью переделывать всю работу «с нуля»;
- постоянное, доверительное общение с заказчиком, позволяет быстро получать ответы на возникшие вопросы.
Но у метода есть определенные недостатки. Хороший руководитель всегда должен выбирать оптимальный подход под каждую задачу. Иногда Agile-ценности мешают делу. Например, избегание подробного документирования процессов может закончиться тем, что члены команды начнут использовать разные инструменты, не будут знать, «окупятся» ли затраченные усилия до завершения текущего цикла развития проекта.