Разработчики разлюбили agile-разработку ПО, а некоторые даже объявили ее «мертвой». О том, почему они ненавидят agile — и как ее возродить, на портале ITPro Today рассказывает независимый аналитик Кристофер Тоцци.
Agile-разработка — это термин, который любят менеджеры и все больше ненавидят разработчики — настолько, что некоторые люди объявили agile «мертвой».
Но вопрос о том, действительно ли расцвет agile в прошлом — не говоря уже о том, что она мертв, — остается открытым. Вот некоторый взгляд на состояние agile-разработки, почему некоторые разработчики считают ее несовершенной и как сделать ее лучше.
Что такое Agile?
Как вы, вероятно, знаете, если хорошо разбираетесь в терминах, связанных с разработкой ПО, agile — это подход, который делает акцент на постепенных и непрерывных изменениях. Он противоположен разработке в стиле «водопада» (waterfall), которая предполагает выпуск обновлений приложения большими кусками на нерегулярной основе.
Основная идея agile заключается в том, что сложные программные проекты выполняются более эффективно, если команды разбивают их на легко управляемые части. Кроме того, сторонники agile утверждают, что этот метод приносит пользу пользователям, поскольку обновления приложений выходят на регулярной основе — и им не приходится ждать месяцами или годами нового релиза, в котором появятся ценные функции.
История и современное состояние Agile
Agile получила популярность более двух десятилетий назад, когда группа разработчиков представила «Манифест Agile», в котором излагалась методология и ее преимущества.
С тех пор agile стала, пожалуй, самым влиятельным направлением разработки ПО в XXI веке. Agile служит основой для других модных практик, таких как DevOps. Любой, кто сегодня не практикует ту или иную форму agile-разработки — или хотя бы не утверждает, что делает это, — часто воспринимается как отсталый.
Однако есть все основания полагать, что расцвет agile, возможно, уже позади. Несмотря на то что, по данным последних опросов, agile в настоящее время используют около 70% компаний, ее критикует все больший хор разработчиков и отраслевых наблюдателей.
«Я ненавижу agile-разработку, потому что она ее подчинило себе бизнес-руководство», — пишет один из разработчиков на Reddit. «Agile — отстой для разработки ПО, и я устал притворяться, что это не так», — утверждает другой на Hacker News. Другой участник Reddit пишет: «Вначале я влюбился в agile, но теперь я стал ее противником».
Конечно, трудно делать твердые выводы на основе подобных разрозненных мнений. Но, похоже, вполне справедливо заключить, что довольно многие отказываются от agile. Возможно, мы еще не видим полномасштабного восстания против этой методологии, но представить, что что-то подобное может произойти, не так уж безумно.
Почему люди ненавидят Agile
Почему так много людей не любят — а в некоторых случаях и ненавидят — agile-разработку ПО? Простого ответа нет, но обычно это связано со следующим:
- Отсутствие конкретики. Во многих жалобах на agile подчеркивается, что концепция слишком высокоуровневая. В результате реальная реализация agile-практик может сбивать с толку, поскольку редко бывает понятно, как именно следует применять методологию. Кроме того, практики, как правило, значительно различаются в разных организациях.
- Нереалистичные ожидания. Некоторые критики agile считают, что эта концепция приводит к нереалистичным ожиданиям — особенно со стороны руководителей, которые думают, что если команда разработчиков придерживается agile, то она должна быть способна выпускать функции очень быстро. На самом деле даже самые лучшие agile-практики не могут гарантировать, что программные проекты всегда будут укладываться в намеченные сроки.
- Неправильное использование термина «agile». В некоторых случаях разработчики жалуются, что руководители команд или менеджеры наклеивают ярлык «agile» на программные проекты, хотя на самом деле лишь немногие практики соответствуют этой концепции. Другими словами, этот термин стал использоваться очень широко, что затрудняет определение того, что вообще он означает.
- Чрезмерное количество встреч и зарегламентированность. Разработчики также иногда жалуются, что agile приводит к чрезмерной сложности или излишней структурированности разработки. Например, в рамках agile-практики принято требовать регулярных «stand-ups» — коротких встреч, на которых члены команды объясняют, над чем они работают. Несмотря на то, что есть аргументы в пользу того, что стендапы полезны для развития сотрудничества, некоторые разработчики считают их формальностью, которая мешает продуктивной работе.
Одним словом, враждебное отношение к agile, похоже, исходит от разработчиков, которые считают ее концепцией, снижающей производительность и усложняющей их жизнь.
Как исправить Agile-разработку
Один из способов ответить на подобную критику — объявить agile мертвой, что, как уже говорилось выше, сделали отнюдь не единицы.
Но это неконструктивная позиция, потому что совершенно неясно, что придет на смену agile. Никто, похоже, не хочет возвращаться к временам водопадной разработки, но никто не предложил и других реальных альтернатив agile. Кроме того, отход от agile означал бы и отход от смежных практик, таких как DevOps, а с такой идеей тоже трудно согласиться.
Вместо этого лучшим подходом может стать укрепление agile-практик. Как именно это сделать — вопрос спорный, но одним из ключевых шагов может стать более четкое определение того, что означает agile. Возможно, нам нужен новый «Манифест Agile» — или дополнение к первоначальному, — включающий конкретные примеры того, что считается agile. Это значительно упростит внедрение методологии на практике и сделает ее согласованной в разных организациях.
Также поможет больший акцент на опыте разработчиков в рамках agile. Исторически сложилось, что основной целью agile было повышение скорости и эффективности разработки, а не облегчение жизни разработчиков. Но учитывая другие виды инвестиций, которые компании делают в опыт разработчиков — например, в платформенный инжиниринг, — внедрение agile-практик, которые не только обеспечивают бесперебойную доставку ПО, но и делают разработчиков счастливыми и продуктивными, может повысить доверие к agile-концепциям среди недовольных разработчиков.
Заключение: возрождение Agile
Кажется преждевременным объявлять agile мертвой. Но есть явные признаки того, что она не в лучшем состоянии. Если только сообщество разработчиков не хочет вернуться к временам «водопада» — что маловероятно, — сейчас самое время переосмыслить состояние agile и устранить проблемы, которые сделали ее такой непопулярной среди растущей толпы практиков.