Agile
Что такое методология Agile
Agile - это гибкая методология управления проектом на основе взаимосотрудничества с командой и заинтересованными сторонами. В рамках определения Agile все рабочие процессы также разбиваются на этапы, образуя единый цикл, пока совершенствование продукта не будет полностью завершено. Этот цикл всегда включает в себя планирование, реализацию и оценку результатов, которые также дробятся на итерации (популярный синоним - спринт), то есть последовательные шаги разработки. Такой подход обеспечивает команде целостное видение конечного продукта и стабильное, организованное решение определенных задач - от более простых к более сложным.
Одна из характерных характеристик Agile заключается в том, что эта методология гарантирует высокий уровень вовлеченности сотрудников, так как в процессе разработки Agile регулярно проводятся встречи с командой, поддерживается связь с заказчиком и тщательно освещаются все детали прогресса. Вдобавок Agile позволяет в случае необходимости увеличивать срок итераций, возвращаться к предыдущим или ставить новые с новыми задачами, если в ходе разработки возникли дополнительные проблемы или условия. Именно поэтому управление проектами Agile предназначается прежде всего для организации работы в сфере IT и разработки программного обеспечения или технологических продуктов.
Agile-манифест
В 2001 году семнадцать IT-специалистов отправились на горнолыжный курорт в штате Юта, где собирались весело провести свой отпуск за катанием на лыжах и вкусной едой. Однако вместе с этим компания специалистов неожиданно занялась вопросом систематизации подходов к разработке ПО, в результате чего они и назвали себя группой Agile Alliance. И хотя на тот момент методология Agile еще не существовала (появилось лишь ее название, был создан Agile-манифест - краткий документ с перечислением 12 принципов наиболее эффективной разработки ПО. Этот документ стал ответом на растущую потребность IT-сообщества в альтернативном подходе к работе с технологиями с целью облегчить управление командой и ведение документации. Манифест Agile конкретизировал идеи, на основе которых впоследствии и появилась современная методология Agile.
12 принципов Agile
Agile Манифест включает в себя следующие принципы:
-
Главный приоритет любой разработки - удовлетворение запросов клиентов.
-
Изменения допустимы и приветствуются даже на последних этапах разработки, если они позволяют усовершенствовать продукт и усилить конкурентное преимущество заказчика.
-
Продукт должен демонстрироваться заказчику регулярно на разных этапах работы, поэтому эти этапы предпочтительно делить на наиболее короткие отрезки времени.
-
Все заинтересованные в проекте стороны должны работать вместе в одной команде ежедневно в течение всего периода разработки.
-
Команде необходимо обеспечить комфортную рабочую обстановку, доверить им самостоятельное выполнение задач и предоставлять любую необходимую поддержку.
-
Самым эффективным способом передачи информации является общение лицом к лицу.
-
Успех проекта во многом предопределяет рабочее программное обеспечение, которое используется для его реализации.
-
Развитие проекта должно быть последовательным и устойчивым, в едином темпе, с возможностью продления дедлайнов.
-
Постоянное техническое совершенствование и совершенствование в области дизайна продукта способно обеспечить ему максимальную маневренность.
-
Минимизация лишней работы также способствует успеху проекта.
-
Самые эпические архитектурные решения и дизайнерские идеи возникают у самоорганизующихся команд.
-
Команда должна регулярно корректировать свою работу и обсуждать способы сделать продукт еще лучше на совместных встречах.
Ключевые компоненты и инструменты Agile
Для эффективной реализации Agile могут использоваться следующие инструменты:
-
Пользовательские истории в Agile - это упрощенное описание потенциальных пользователей, их запросов и потребностей, которые вносятся в «блоки» и являются основой для построения следующих «этажей» фреймворка. Пользовательские истории гарантируют, что команда достигнет не только целей заказчика, но и удовлетворит запросы будущих клиентов продукта.
-
Agile-доска - инструмент для совместной работы команды, который представляет собой визуальное отображение текущих, законченных и будущих задач, а также уровень прогресса в их решении. Эта доска доступна для всех членов команды и может создаваться как онлайн при помощи облачных программ, так и офлайн непосредственно в офисе.
-
Бэклог продукта - это перечень всех функций с их кратким описанием, которые должен иметь продукт в конечном результате. Впоследствии их также можно использовать для маркетинга.
-
Spike - формат активности, который применяется командой Agile тогда, когда в ходе спринта они столкнулись с неизвестной и неожиданной задачей. Данная активность может включать в себя самые разные способы аналитики и обсуждения, от мозгового штурма до кластеризации, на выбор команды.
Церемонии Agile
В контексте Agile церемонии или, проще говоря, встречи команды носят регулярный характер и, как правило, происходят каждый день для обсуждения готовности текущих задач и проблем. На крупных же встречах, которые проводятся два раза за спринт (в начале и конце), также проводится ретроспектива пройденного пути. Повседневные встречи никогда не длятся больше 15 минут и нацелены лишь на то, чтобы члены команды могли поделиться возникшими сложностями и в случае необходимости совместно разработать более комфортный и эффективный маршрут работы, что, помимо повышения качества результата, также способствует вовлечению и укрепляет отношения внутри коллектива.
Agile и Scrum
Agile и Scrum - два понятия, которые часто считают синонимами и которые сложно противопоставить друг другу, так как они являются частями одного целого. Так, определение Agile представляет собой теоретическую методологию, своего рода «рабочую философию», которая определяет ценности и принципы работы. Scrum же - это набор инструментов, который позволяет реализовать принципы Agile на практике.
Несмотря на то, что Agile может использовать в качестве инструментария и другие методы (например, Scaled Agile Framework или Канбан), чаще всего заимствуются именно инструменты Scrum. Итерация или спринт - это как раз один из компонентов Scrum, как и обозначение Мастера, Владельца продукта и других ролей.
Agile vs Waterfall
Agile и Waterfall представляют собой два абсолютно разных подхода к реализации проектов. Если продакт-менеджмент Agile итеративный и гибкий, базирующийся на циклах и союзе всех участников бизнес-процессов друг с другом, а также допускающий внесение изменений и новых задач, то Waterfall - его противоположность.
Методология Waterfall строго последовательна, основана на принципе Release Train и не допускает возможности возвращаться к прошлым итерациям или добавлять новые. Хоть заинтересованные стороны в ней также работают совместно, они лишены самостоятельности и свободы действий. За счет своей линейности и условных ограничений Waterfall является более простой методологией работы. Однако она также включает в себя проектирование и планирование реализации проекта, определение требований, разработку необходимых элементов, проверку качества и техническое обслуживание.
Роли в Agile
Все члены команды не просто выполняют задачи в рамках своей компетенции, но и распределяются по ролям. Так, структура команды в Agile обязательно включает в себя:
-
Руководитель группы. Если ценности Agile комбинируются с методологией Scrum (а такая разновидность и практикуется чаще всего), то руководитель получает своеобразный титул «Scrum-мастер». В комбинации с другими методологиями его также могут называть Team coach или Project lead. Выполняя функции формального и неформального лидера в Agile, скрам-мастер отвечает за техническое снабжение команды, распределение ресурсов и задач, отслеживание прогресса и помощь в решении возникающих проблем. Для этой роли особенно важны soft skills, навык управления командой, планирование спринта Agile, умение составлять графики, понимание отраслевой специфики. Многое также зависит от настроя мастера.
-
Разработчик. Это член команды, который отвечает за реализацию проекта. В команде разработчиков может быть неограниченное количество человек, но если Agile использует принципы Scrum, то в команде должно быть не больше 7-8 человек. Именно devops отвечают за моделирование, программирование, дизайнерские решения, тестирование и все ключевые рабочие процессы.
-
Владелец продукта. Это по сути заказчик продукта, который является главным ответственным и самым дисциплинированным лицом проекта, определяет список требований и элементов разработки, принимает жизненно важные для бизнеса решения и своевременно предоставляет актуальную информацию о рынке.
Заинтересованные лица. В эту категорию входят все, кто прямо или косвенно имеет к проекту отношение. Например, потенциальные пользователи, инвесторы, менеджеры по продажам, разработчики связанных и интегрированных систем и т.д.
Жизненный цикл разработки программного обеспечения Agile и рабочий процесс
Цикл разработки по модели Agile состоит из следующих этапов:
-
Разработка концепции
На данном этапе многое зависит от владельца продукта, то есть заказчика, поскольку именно он определяет масштаб и рамки проекта. Если проектов несколько, то они расставляются по приоритету. Все условия и требования фиксируются в специальном документе, как и ожидаемые результаты с оптимальными практиками Agile. Все это должно быть изложено максимально кратко, так как в процессе разработки документ и требования могут дополняться. На этой стадии владелец продукта лишь оценивает необходимое время на реализацию проекта и его стоимость, проводит подробный анализ и оценивает готовность команды приступить к работе посредством покера планирования или любой другой оценочной техники.
-
Запуск работы
После разработки концепции начинается сбор команды разработчиков. Владелец продукта сам оценивает компетенции имеющихся у него кандидатов и отбирает самых лучших из них, после чего предоставляет команде необходимые ресурсы и инструменты. После этого команда приступает к проектированию, то есть созданию макета продукта и строительству его архитектуры. При помощи диаграмм и анализа целевой аудитории конкретизируются требования к продукту и прописываются его обязательные функции.
-
Итерации
Далее работа над продуктом разбивается на короткие этапы продолжительностью от 2 до 4 недель, называемые итерациями. Это самый долгий этап Agile-цикла, так как он подразумевает выполнение всей основной работы. Руководитель команды, то есть Scrum-мастер, распределяет задачи согласно компетенциям набранных специалистов и контролирует, чтобы перед тем, как команда перейдет к следующей итерации с новыми задачами, были выполнены задачи прошлой итерации. Цель данного этапа в том, чтобы создать базовый функциональный продукт, который можно будет затем доработать и усовершенствовать.
-
Тестирование
Готовый базовый продукт тестируется с точки зрения функциональности, дизайна и удобства сначала на команде разработки, а затем на выборке из целевой аудитории. В процессе команда проверяет чистоту кода, устраняет возникающие ошибки и выявляет слабые стороны продукта для дальнейшей его корректировки. После того как этот этап завершается и продукт доработан с точки зрения выявленных дефектов, продукт запускается в производство в том виде, который приобрел во время финальной (корректирующей) итерации.
-
Техническое обслуживание
После того как программное обеспечение становится доступным для клиентов, команда сосредотачивается на его технической поддержке. Так, разработчики отслеживают и исправляют ошибки, выявленные самими пользователями, обеспечивают стабильность системы и параллельно с этим обучают пользователей пользоваться их продуктом. На этом этапе могут быть запущены новые дополнительные итерации с целью обновить функции продукта, внедрить новые функции и устранить не замеченные ранее ошибки.
-
Вывод из эксплуатации
Данный этап наступает по двум причинам: либо ПО заменяется более новой и совершенной версией, либо ПО устаревает и становится непригодным для компании. Команда разработчиков в данном случае уведомляет пользователей о скором прекращении технического обслуживания ПО и либо переводит пользователей на новый продукт, либо закрывает доступ к нему по истечении оговоренного срока.
Каждый из данных этапов может включать в себя множество итераций, поскольку в Agile запрещено переходить к следующему этапу, пока на предыдущем не будет достигнут минимальный желаемый результат.
Инструменты Agile
Сегодня существует огромное множество сервисов и платформ, предназначенных специально для реализации подхода Agile на практике. Наиболее известными и надежными из них являются:
- ClickUp. Позволяет спланировать спринты и каждый процесс в Agile, установить стори поинты и отслеживать прогресс работы над проектом. Включает в себя управление данными, задачами, статусами, документами и автоматизацию всех спринтов.
- Jira. Чаще всего применяется для выявления и отслеживания ошибок программного обеспечения, однако также предлагает возможности для самостоятельной настройки посредством языка JQL. Самостоятельно тестирует продукты, контролирует выполнение задач и спринты, обрабатывает полученные данные, выводит статистику с отчетами и буквально берет на себя часть работы Scrum-мастера.
- GitHub. Система, фиксирующая в режиме реального времени все изменения, вносимые в продукт вашей командой, и каждую трансформацию в Agile до мельчайших деталей. Любые члены команды, от разработчиков до владельца продукта, могут работать над одним кодом одновременно за счет бесшовных облачных технологий, что также позволяет формировать и отслеживать требования и задачи.
- Lean Kit. Приложение, основанное на принципе «бережливого производства», то есть реализации проекта с точки зрения экономии ресурсов за счет своевременного выявления и устранения дефектов и неэффективных процессов. С точки зрения визуала представляет собой карточки с рабочими элементами и текущими статусами задач.
- Planbox. Приложение для контроля и оптимизации итераций, анализирующее продуктивность сотрудников в решении задач и отображающее метрики Agile в формате различных графиков. Благодаря этому команда может наглядно отслеживать, как далеко она находится от завершения спринта и всего проекта.
Сертификация Agile
Получение сертификата, подтверждающего владение методологией Agile, не считается обязательным. Как правило, сертификация может потребоваться специалисту по двум причинам:
-
Для того чтобы проверить уровень ваших знаний в контексте требований рынка. Многие специалисты и проект-менеджеры уверены, что мастерски владеют Agile, так как у них уже имеется опыт в управлении. Однако прохождение сертификации очень часто доказывает, что опыт этот ничего не стоит, и до мастерского владения Agile еще предстоит учиться и учиться.
-
Для того чтобы повысить свою профессиональную ценность в глазах работодателей. Многие IT-компании и команды, практикующие Agile на постоянной основе, серьезно относятся к профильному образованию и документальному подтверждению навыков. Чаще всего сертификаты Agile требуют компании-интеграторы, которые хотят продемонстрировать высокий рейтинг своего аутстаффинга, и компании-энтерпрайз, где сертификаты у сотрудников являются неотъемлемым аксессуаром для статусности компании. Также сертификация необходима для официального Agile-коучинга, если вы рассчитываете стать высокооплачиваемым консультантом или тренером.
Таким образом, если вы уже зарекомендовали себя в нише, владеете реальными навыками Agile на практике и в вашем портфеле есть кейсы, способные это доказать, то переживать о получении сертификата не стоит. Если же вы новичок в Agile и находитесь только в процессе освоения методологии, то прохождение и получение сертификата Agile станет хорошим образовательным и карьерным бонусом на старте.