Что значит быть Agile?
Agile Манифест был опубликован в 2001 году. Он определил ценности и принципы, на основе которых всё множество практик, использовавшихся в разработке программного обеспечения, как новых, так и ранее существовавших, было разделено на две части – Agile практики и не-Agile практики.
Например, юнит-тестирование, покер планирования, ежедневные стендапы стали считаться Agile практиками.
С другой стороны, штрафование сотрудников, подготовка и подписание полного ТЗ проекта, разделение команд по функциональному признаку (отделы архитектуры, разработки, качества) в Agile список не попали.
Причины, по которым ту или иную практику считают Agile или наоборот, не всегда очевидны.
Данная статья – попытка переосмыслить известные мне Agile практики, сформулировать простые и четкие критерии того, какую практику можно считать Agile, а какую нет.
Построю статью следующим образом. Сначала предложу критерии, затем протестирую их на примерах.
Критерии
Практику (а также идею, ценность, принцип, или даже целый фреймворк) будем считать Agile, если она соответствует хотя бы одному критерию (и не противоречит всем остальным). И наоборот, если практика противоречит хотя бы одному критерию, она не будет считаться Agile.
Креативные профессионалы
Agile делает всё, что способствует высвобождению творческого потенциала каждого разработчика. В частности, отсутствие ограничений, комфорт на рабочем месте, удовольствие от работы стимулируют творчество.
Agile поощряет обучение и профессиональный рост.
Agile включает также практики командной работы, основанной на культуре взаимного уважения и доверия.
Эффективные коммуникации
Эффективные – это те коммуникации, которые ведут к принятию правильных решений.
Главный инструмент Agile – живое общение лицом к лицу (face-to-face). При этом задействуются все каналы передачи информации, доступные человеку, причем в обоих направлениях.
Важный фактор успеха – открытый обмен мнениями, исследование альтернатив, конструктивный конфликт, поиск эффективного решения.
Прозрачность, полное раскрытие информации без страха быть наказанным.
Ценность для заказчика/пользователя
Следуя идеям бережливого (lean) производства, Agile фокусируется на деятельности, создающей ценность.
Agile старается исключать/минимизировать всё, что ценности не приносит (eliminate waste).
Обратная связь
Чем больше обратной связи, тем лучше. Agile включает практики, создающие множественную обратную связь на разных этапах и уровнях.
Важнейший фактор – оперативность обратной связи.
Соответствие ценностей Agile Манифеста предложенным критериям
Agile Value | Критерии |
---|---|
Люди и взаимодействие важнее процессов и инструментов |
|
Работающий продукт важнее исчерпывающей документации |
|
Сотрудничество с заказчиком важнее согласования условий контракта |
|
Готовность к изменениям важнее следования первоначальному плану |
Протестируем известные Agile практики
Регулярный рефакторинг кода
Настольный теннис в офисе
Конструктивный конфликт
Кросс-функциональные команды
Ежедневные стендапы
Информационные радиаторы (канбан-доски, burnup charts)
Бэклог, user stories
Planning Poker (быстрая коллективная оценка задач)
Планирование спринта
Открытые рабочие пространства (open space)
Разработка короткими итерациями (спринтами)
Парное программирование
Автоматизированное тестирование, юнит-тесты, непрерывная интеграция и поставка (CI/CD)
Definition of Done
Не Agile практики
Работа по большому ТЗ, подписанному заказчиком
Поиск виноватого, штрафование сотрудников
Персональное назначение задач (тимлидом / менеджером проекта)
Логирование времени
Технический долг
Попытки заказчика/менеджера уменьшить оценки трудозатрат, определенные разработчиками
Заключение
Приведенные критерии – не замена Манифесту. Но они очень помогают мне в повседневной работе. С их помощью (на картинках) я объясняю, что значит быть Agile. С их помощью оцениваю то, с чем сталкиваюсь. Мне бы хотелось узнать, что вы об этом думаете.
Напишите, пожалуйста, в комментариях, всегда ли вам очевидно, является та или иная практика Agile? Как вы разрешаете этот вопрос?
Напишите, какие Agile или не-Agile практики не соответствуют, на ваш взгляд, предложенным критериям. Предложите свои критерии.