Автор статьи: Артем Михайлов
Привет, Хабр!
Сегодня мы поговорим о таком интересном вопросе, как переход от Agile, к анти‑Agile. С течением времени команды часто сталкиваются с ситуациями, когда идеалы Agile начинают давать сбой, и приходит осознание, что работа по старым лекалам уже не приносит тех результатов, на которые мы рассчитывали.
Agile, безусловно, является одним из наиболее популярных подходов. Его суть заключается в гибкости и способности быстро адаптироваться к изменениям, что делает его идеальным для стартапов и ранних стадий продукта. Наверное, вы уже знаете эти принципы наизусть: взаимодействие с клиентом, работающие итерации, непрерывная поставка ценности.
Но давайте честно: Agile не идеален. На поздних стадиях разработки он может превращаться в настоящую головную боль. На этом этапе проект становится сложнее, требования начинают накладываться друг на друга, а команды, вместо того чтобы работать слаженно, часто начинают сталкиваться друг с другом. Сложно сосредоточиться на техническом долге, когда у тебя в голове только «первый спринт», «планирование» и «обсуждения».
Переход к анти-Agile: когда структура важнее гибкости
Анти‑Agile — это не просто антипод Agile, это необходимость структурированного подхода. В отличие от Agile, который основывается на гибкости и итеративности, анти‑Agile акцентирует внимание на предсказуемости, четких процессах и строгой иерархии.
Основные отличия анти‑Agile от Agile:
Структура vs. Гибкость: Agile поощряет изменения и адаптацию, тогда как анти‑Agile требует строгого следования заранее установленным процессам и графикам.
Индивидуальные итерации vs. Полное планирование: В Agile команды работают над небольшими итерациями и могут менять направление в зависимости от фидбэка. В анти‑Agile акцент делается на планировании всей работы заранее.
Командная самоорганизация vs. Четкие роли: Agile подразумевает, что команды сами определяют, как работать, тогда как в анти‑Agile каждая команда имеет четко определенные роли и обязанности.
Постоянное взаимодействие с клиентом vs. Фиксированные требования: Анти‑Agile акцентирует внимание на том, чтобы в начале проекта были зафиксированы четкие требования, что минимизирует вероятность изменений в будущем.
Если вы находитесь в ситуации, когда Agile перестал быть полезным, и решили перейти на анти‑Agile, вот несколько шагов, которые могут помочь в этом процессе:
Оцените текущую ситуацию: Прежде чем вносить изменения, оцените, где ваш Agile‑подход дает сбой.
Создайте четкую структуру: Установите четкие роли и обязанности. Каждый член команды должен знать, за что он отвечает.
Планируйте заранее: Создайте детальный план на все этапы разработки. Определите сроки и ключевые точки контроля.
Документируйте все требования: Убедитесь, что все требования фиксируются в начале проекта.
Проводите регулярные проверки: Устанавливайте регулярные контрольные точки для оценки выполнения задач.
Обратная связь: Хотя анти‑Agile акцентирует внимание на строгих процессах, важно сохранять механизмы фидбека.
Альтернативы Agile
Также иногда стоит рассмотреть альтернативные подходы, которые могут быть более эффективными на поздних стадиях разработки:
Waterfall: Традиционный подход, который подразумевает последовательную реализацию этапов разработки. Он отлично подходит для проектов с четко определенными требованиями и сроками. Например, если вы разрабатываете продукт с фиксированной спецификацией.
Lean: Эта методология фокусируется на минимизации потерь и максимизации ценности. Lean помогает командам сосредоточиться на том, что действительно важно, и избавиться от избыточности. В ситуациях, когда команды уже хорошо понимают потребности клиентов, Lean может быть отличной альтернативой Agile.
XP: Методология, акцентирующая внимание на качестве кода и взаимодействии между разработчиками. XP подходит для проектов, где требования могут изменяться, но команда должна быть готова к частым итерациям и адаптациям.
Feature‑Driven Development: Этот подход фокусируется на построении функциональности по определенным фичам, что позволяет поддерживать четкую структуру и управление проектом. FDD хорошо работает в среде с большой командой.
SAFe: Это комплексный подход, который позволяет масштабировать Agile на уровне целой организации.
В своей практике я встречал множество проектов, где Agile работал до определенного момента, но затем начинал давать сбой. Один из таких примеров — проект по разработке одной корпоративной системы. На начальных этапах мы использовали Agile, и все шло довольно хорошо. Команда была небольшая, коммуникация была легкой, и мы могли быстро адаптироваться к изменениям.
Однако, когда проект стал расти, требования начали изменяться, а команда — увеличиваться. Каждое новое изменение требовало переосмысления, а постоянные изменения приводили к конфликтам. Началась путаница в требованиях, сроки начали срываться, и вместо прогресса мы получили лишь бесконечные собрания и обсуждения. Здесь Agile, кажется, показал свои слабые стороны.
В такой ситуации важно понять, что команда нуждается в четкости и структурированности. Мы решили вернуться к более традиционному подходу, установив строгие временные рамки, чёткие требования и контроль за выполнением задач.
Заключение
Agile — это не универсальное решение, подходящее для всех ситуаций. На поздних стадиях разработки переход к анти-Agile может стать ключом к успешному управлению проектом.
Однако не всегда нужно прибегать к шаблонным решениям, которые иногда вместо помощи, зачастую лишь усугубляют проблемы. Каждый проект уникален, и важно адаптировать набор практик и подходов под конкретные условия.
Больше про управление командами, продуктами и проектами эксперты OTUS рассказывают в рамках практических онлайн-курсов. Смотрите все программы в каталоге, а также приходите на открытые уроки:
7 октября: «Организационная структура компании: типология, плюсы и минусы, подход к выбору». Записаться
14 октября: «Продуктовая экосистема. Почему без нее нельзя построить успешный продукт?». Записаться
Комментарии (6)
hphphp
03.10.2024 05:50Есть еще один вариант работы с agile и прочими, отлично описанный в этой статье:
Как правильно имитировать Agile? / Хабр
https://habr.com/ru/articles/659379/
Ainyru
03.10.2024 05:50+1Огромная проблема всех подобных "решений" - это шатание по крайностям. Либо всё, либо ничего, посередине не существует. Двоичное мышление, чтоб его.
Все потому, что любое посередине требует каждодневно включать мозг, а это мы не любим, нам подавай готовое решение на все случаи жизни. А когда через N времени оно не сработало, то мы снова ищем готовое решение на все случаи жизни.
HarleyKaos
03.10.2024 05:50Работайте по Waterfall и будет вам счастье. Agile и Kanbanы - от Лукавого, когда заказчик сам не знает - чего он хочет, но зато завсегда готов вытереть ноги об команду разработчиков и ПМ, меняя задачи и сроки на лету.
ggo
03.10.2024 05:50Единственное справедливое утверждение:
Анти‑Agile акцентирует внимание на том, чтобы в начале проекта были зафиксированы четкие требования, что минимизирует вероятность изменений в будущем.
Если у вас есть четкие требования в самом начале, которые гарантировано не будут меняться, Agile вам не нужен. Беда лишь в том, что такая ситуация - относительная редкость. Соответственно приходится придумывать что-то, когда точно известно только одно - требования будут меняться.
В Agile команды работают над небольшими итерациями и могут менять направление в зависимости от фидбэка. В анти‑Agile акцент делается на планировании всей работы заранее.
По сути следствие предыдущего утверждения. Да, если требования зафиксированы, можно запланировать весь скоуп и далее просто бежать по нему.
Остальные утверждения - очень спорные.
Agile поощряет изменения и адаптацию, тогда как анти‑Agile требует строгого следования заранее установленным процессам и графикам.
Нет.
В Agile очень строгий метапроцесс - процесс непрерывных измерений и улучшений. Все производные процессы от главного метапроцесса (сбор требований, разработка, тестирование, и т.д.) - да, адаптируются. Но метапроцесс - очень формализован. И отказ от его формализованности влечет за собой все проблемы аджайла.
Agile подразумевает, что команды сами определяют, как работать, тогда как в анти‑Agile каждая команда имеет четко определенные роли и обязанности.
Agile декларирует, что ответственность команды за конкретный сервис должна быть всеобъемлющей. Отсюда и проистекает некоторая вторичность ролей. Т.е. условно бекендер или тестировщик не могут сказать - я не могу запрофилировать sql-запрос, это не моя проф.область, поэтому чтобы решить проблему ищите ДБА. На сервисе есть проблема - команда без оглядки на свои роли, ищет решение.
beduin01
В какой-то момент я понял, что мне лень разбираться чем один сорт менеджерского бреда отличается от другого. С тех пор на вопрос чем чем Скрим отличается от Канбана я отвечаю: "не знаю и знать не хочу".
По факту ничего так не бустит разработку как избавление от всего этого Agile и пропихивающего его менеджмента.
Не видел ни один проект где от Agile была бы польза, зато видел как вырастает продуктивность после его отмены.
solaris_n
Странно ожидать от мух ничего кроме как фокусировании на сортах. Если есть болезнь, значит есть необходимость в лечении. Если бы разрабы идеально делали всё правильно и вовремя, то и необходимости в этих подходах не было бы.