Когда начинаешь интересоваться, какие сейчас популярны методологии программирования, то очень быстро натыкаешься на очень красивое, но не понятное слово Agile
Слушая семинары, читая статьи, то и дело натыкаешься на фразы: «это не соответствует ценностям аджайла», «следуя принципам аджайла». Самое интересное, что при этом люди говорят, или пишут, очень интересные вещи, которые несомненно смогут помочь твоей личной работе и хочется понять, а что такое Agile.
Формально методологии можно разделить на два типа — классические (монументальные, предсказуемые, где все этапы детально проектируется заранее и не допускается отклонение от первоначального плана) и их противоположность — адаптивные (гибкие, где в процессе работы допустимо и даже типично перепроектирование).
Agile методы — это серия подходов к разработке программного обеспечения, ориентированных на использование итеративной разработки, динамическое формирование требований и обеспечение их реализации в результате постоянного взаимодействия внутри самоорганизующихся рабочих групп, состоящих из специалистов различного профиля». В таблице ниже приведены основные отличия Agile от процессного подхода.
Таблица 1. Основные отличия методов Agile и процессного подхода
Agile ценности |
Традиционные ценности |
Ответ (реакция) на изменение |
Четкое следование плану |
Работающий и удовлетворяющий Заказчика продукт |
Всеобъемлющее документирование |
Сотрудничество с потребителями |
Изнурительные переговоры по условиям договоров |
Сотрудники и их взаимодействие |
Процессы и традиционные инструменты управления |
Гибкие (Agile) методологии появились в противовес классическим, детально описывающим процесс создания системы. Эти методологии представляют собой попытку достичь необходимого компромисса между слишком перегруженным процессом разработки и полным его отсутствием.
Agile — семейство процессов разработки, а не единственный подход в разработке программного обеспечения, и определяется Agile-манифестом. Agile не включает практик, а определяет ценности и принципы, которыми руководствуются команды разработчиков.
Достаточно важно понимать, что Agile это только манифест. То есть, некие правила, соблюдая которые можно разрабатывать код в приятной рабочей атмосфере. Agile может рассказать что должно быть, но не расскажет как.
Манифест гибкой разработки состоит из четырех пунктов, каждый из которых представляет собой альтернативу. Что позволяет, с точки зрения авторов Манифеста, лучше понять, с каким выбором команде приходится сталкиваться в процессе разработки, и какой путь ближе к ценностям гибкой разработки: [1]
- Люди и взаимодействие важнее процессов и инструментов;
- Работающий продукт важнее исчерпывающей документации;
- Сотрудничество с заказчиком важнее согласования условий контракта;
- Готовность к изменениям важнее следования первоначальному плану. [2]
Под Agile-моделью понимают следование гибкой методологии развития проекта, проходящей по определенной схеме в несколько шагов.
Работа над проектом ведётся итерациями — короткими циклами. По завершении каждого цикла выходит продукт, который уже можно применять в бизнесе.
Продукт проверяется заказчиком или пользователями, которые поддерживают с разработчиками постоянную обратную связь. Клиентоориентированный подход применяется в течение всего проекта (всех итераций).
Любые замечания быстро включаются в доработку, а изменения, позволившие сразу по ходу подправить разработку продукта, — приветствуются, поскольку это позволяет не накапливать глобальные ошибки системы.
Осваивая Agile, важно знать как о плюсах, так и о минусах этой методологии (таблица 2). [3]
Таблица 2. Плюсы и минусы методологии Agile
Плюсы |
Минусы |
Увеличение прибыли |
Меньше предсказуемости |
Продукты выходят на рынок быстрее, релизы выходят раньше и регулярно |
Повышенные требования к клиентам |
Качество продукта обеспечивается с помощью встроенного тестирования и регулярных проверок рабочего продукта |
Необходимость адаптировать под изменяющиеся условия проекта проектную документацию |
Улучшение прозрачности для заинтересованных сторон |
Отсутствие необходимой документации |
Снижение риска, так как команда выявляет и исправляет любые проблемы |
Проект легко сбивается с пути |
Agile — это часть модели управления, применяемого на заводах «Toyota» и теперь — одна из базовых составляющих менеджмента почти любого успешного производства.
Быструю обратную связь в настройке конечного формата производства на заводах «Toyota» обеспечивал любой рабочий, который мог стать инициатором остановки конвейера и автором корректировок по донастройке производственного цикла. В масштабах всего производства Agile-трансформация может повлечь за собой переналадку производственной деятельности в целом, если продукт становится результатом живого отклика на текущие потребности клиента. [6]
Одной из важнейших задач управления производством, особенно управления производством на крупном промышленном предприятии является обеспечение выполнения поставленных планов. Однако, выполнение этой задачи нередко приводит к тому, что задачи поиска новых идей, вывода на рынок более конкурентоспособных товаров отходят на второй план. Особенности развития нашей страны за последние два десятилетия привели к тому, что актуальной становится даже еще более прозаичная задача: поддержание производства того, что есть.
Для того, чтобы внедрить Agile в производство необходимо:
Выбрать методику. Существуют различные гибкие методологии, которые разработаны под определенные условия. Сначала необходимо определить цели, задачи, сроки и многое другое и, исходя из этого, подобрать методику управления проектом.
Провести обучение персонала. Именно на этом этапе определяются возсожные проблемы, которые могут снизить эффективность Agile. Готов ли персонал к изменениям? Подходят ли проекты компании для гибких методик?
Демонстрация Agile. Своеобразный тест-драйв Agile, которые проводится под контролем специалиста и показывает все этапы работы, объясняет функции ролей, взаимодействие внутри команды и между командами и т.д.
Создать команду. На данном этапе следует подобрать сотрудников, определить обязанности, распределить задачи, создать график встреч и т.д.
Выбрать инструменты, необходимые для распределения задач, ведения отчетности, аналитики и т.д.
Первый проект с Agile. В первом проекте неизбежны ошибки, отказ от одних инструментов и выбор других. Любая методика требует своеобразной адаптации под особенности компании, в которую она внедряется.[7]
На данный момент методология Agile широко распространена в IT-сфере и начинает осваивать деловую сферу, в частности маркетинг, менеджмент, обучение и т.д.. Метод гибкого управления проектами используется многими компаниями и госструктурами, например, правительства Норвегии и Новой Зеландии применяют Agile. В России «Сбербанк» осваивает Agile для коммерческой сферы.
Но внедрения Agile происходит не во всем Сбербанке одновременно, а в рамках пилотных проектов по Agile-трансформации, этапы которого следующие:
- Описать целевую модель Agile-организации.
- Подготовить предложения по изменению структуры и функций бизнес-процессов.
- Адаптировать инструменты Agile-организации под текущие задачи банка.
- Обучить персонал и руководителей, непосредственно участвующих в пилотном проекте по Agile-трансформации.
- Сформировать границы пилотного проекта по внедрению Agile транcформации.
В теории, внедрение данного подхода позволит сократить время на разработку новых банковских продуктов, на практике, по моему мнению, Agile подходы будут внедрены не только в разработку новых продуктов, но и в работу других подразделений банка.[8]
Достаточно важно понимать, что Agile это только манифест. То есть, некие правила, соблюдая которые вы сможете хорошо разрабатывать код в приятной рабочей атмосфере. Agile может рассказать, что должно быть, но не расскажет как. На вопрос как, вы можете или попытаться ответить сами, или прибегнуть к методологиям, которые исповедуют принципы Agile.