Почему мы выбираем Waterfall вместо Agile

Все мы обожаем разные виды организации и дисциплины... Или нет. Честно говоря, нам больше нравится находить наиболее эффективные и гибкие способы достижения поставленных целей.

Waterfall – методология, которую мы выбираем вместо вездесущего Agile. Нет, мы не сошли с ума, и нет, мы не отрицаем Agile только из-за «попсовости». В этой статье поговорим о том, что нам дает Waterfall и какие минусы Agile мы для себя выделили.

В комментариях ждем бурного обсуждения, горячих споров и примеров из реальной жизни!

Почему мы выбираем Waterfall вместо Agile

Для начала обратимся к открытым источникам и проведем небольшой сравнительный анализ.

Waterfall

Waterfall – это такая методология разработки ПО, где все происходит по строгой схеме: одна фаза начинается только тогда, когда предыдущая завершена. Все решения принимаются сверху, на старте проекта.

Основные этапы:

  • Анализ: определение требований к продукту и его функциональности, составление реестра рисков.
  • Проектирование: создание подробного плана, дизайна, архитектуры и технических спецификаций продукта.
  • Разработка: кодирование, создание компонентов и функциональности продукта.
  • Тестирование: проверка корректности работы каждого компонента и взаимодействия между ними.
  • Внедрение: выпуск окончательной версии продукта и его установка на серверы или ПК конечного пользователя.
  • Сопровождение: поддержка и обновление продукта после его внедрения.

Agile

Agile – это другой подход к разработке ПО, более гибкий и итеративный. Здесь продукт улучшается постепенно, с каждой итерацией. Разработка происходит через короткие спринты, в течение которых команда создает новую версию продукта.

Ключевые концепции:

  • Scrum – методология гибкой разработки проектов, которая строится на концепции спринтов, обычно от 1 до 4 недель, в течение которых команда разработчиков сосредоточена на достижении конкретной цели, создавая рабочий итеративный результат.
  • Экстремальное программирование (XP) – методика, при которой важно взаимодействие с клиентом на каждом этапе.
  • Непрерывный процесс улучшения – Agile поощряет поиск недостатков в процессе разработки и их непрерывное устранение.

Waterfall, с его жесткой последовательностью этапов, является надежным инструментом для избежания рисков и обеспечения строгого контроля в проекте, а также позволяет лучше оценивать время и бюджет.

Agile предлагает итеративный и гибкий подход, позволяет принимать быстрые решения, быстро адаптироваться к изменениям рынка и требованиям бизнеса.

Необъективное мнение. Почему Agile нам не подходит

Честно говоря, в нашей компании скептически относятся к Agile. Многие из тех, кто работает по этой методологии, не знают о ее принципах, а у нее есть целый манифест.

Манифест Agile

Манифест Agile – священная книга для многих разработчиков, полная идеалов и принципов. Давайте кратко рассмотрим каждый из пунктов и обсудим, почему Agile может не подходить для долгосрочных проектов по разработке ПО.

1. Люди и взаимодействие важнее процессов и инструментов

Взаимодействие это хорошо, но в ограниченных количествах, ведь непрерывная коммуникация отнимает много времени и сил. Каждый раз, когда вы устраиваете незапланированный созвон, где-то в мире плачет один технарь-интроверт.

Agile ставит акцент на командную работу и частое взаимодействие между разработчиками, заказчиками и пользователями. Но в проектах с большим количеством участников и сложной структурой коммуникация становится сложнее. Обработка большого объема информации и принятие быстрых решений требует более формализованных процессов и четких регламентов.

2. Работающий продукт важнее исчерпывающей документации

Пока мы не заменили всех сотрудников на ИИ, с нами остается человеческий фактор.

Что будет, если один или сразу несколько ключевых членов команды вдруг уйдут из проекта? В таком случае отсутствие понятной отчуждаемой документации станет настоящей катастрофой, ведь важные знания по проекту уйдут вместе с сотрудниками.

Мы уже писали статью про Bus-фактор, где говорили о подобных рисках.

Agile призывает к активному развитию итераций продукта и получению обратной связи от заказчика как можно скорее. Но для того, чтобы обеспечить понимание сложных функциональных и архитектурных требований проекта, а также для его поддержки в долгосрочной перспективе требуется хорошо структурированная документация.

3. Сотрудничество с заказчиком важнее согласования условий контракта

Насколько интересным и прибыльным должен быть проект, чтобы взяться за него, не согласовав контракт с заказчиком? Мы таких не встречали.

Agile подразумевает непрерывное взаимодействие с клиентом для уточнения требований. А что делать, если требования меняются каждый день?

Нечетко прописанные условия несут целый ряд рисков: срыв сроков, превышение бюджета, недопонимание с заказчиком и т. д. Кстати, для каждого проекта мы составляем реестр рисков, без этого документа работа не начнется.

Вообще, мы можем общаться с клиентом хоть каждый день при любой методологии. Но общаться и брать новые штуки в текущий релиз – не одно и то же.

4. Готовность к изменениям важнее следования первоначальному плану

Мы думаем, работа над любым проектом должна начинаться с детальной аналитики. Хороший системный аналитик должен как психолог «вытащить» из заказчика его боль, понять запрос и помочь сформировать четкое ТЗ.

Если еще на старте предусмотреть все риски и заложить в архитектуру точки расширения, то клиенту не придется ничего додумывать на ходу, а вам не придется менять вектор с каждой новой итерацией. И все довольны!

Принципы Waterfall

Сейчас мы придерживаемся классической методологии Waterfall. Она, в отличие от «гибких» методик, позволяет нам проводить качественную аналитику, составлять четкую и понятную документацию, выдавать версии к плановым датам, соблюдать бюджет, сроки и работать стабильно, не выгорая и не теряя сотрудников.

Ключевые принципы:

1. Строгая последовательность этапов

Waterfall подразумевает строго определенную последовательность этапов разработки, что невозможно при Agile. Это дает предсказуемость и стабильность, особенно когда речь идет о больших, сложных проектах с долгосрочными горизонтами. У каждого этапа есть определенные цели и результаты, что облегчает планирование и контроль.

2. Документирование каждого шага

Waterfall подчеркивает важность хорошо документированных этапов проекта. Это означает, что все требования, проектные решения и код хорошо документированы для текущих и будущих использований. Благодаря такому подходу у разработчиков и особенно у новых членов команды всегда есть четкое понимание всего проекта и его истории.

3. Ясные требования и ожидания

В Waterfall встроено четкое определение требований и ожиданий до начала разработки. Это сокращает шанс недопонимания или неясностей, обеспечивая более прямой и эффективный путь к цели.

4. Согласование условий контракта

Waterfall подчеркивает важность прозрачных контрактных условий до начала работы. Такой подход позволяет улавливать потенциальные проблемы, снижать риски и управлять ожиданиями всех заинтересованных сторон.

Выводы

Конечно, каждый проект уникален, и иногда Agile может быть прекрасным выбором для наших целей. Например, этот подход прекрасно подходит для создания MVP – минимально жизнеспособных продуктов и первоначального понимания их потенциала. С Agile мы можем принимать быстрые решения и легко адаптироваться к изменениям требований.

В конце концов, не стоит ограничивать себя только двумя методологиями. Есть еще куча других подходов, с которыми можно поиграться.

PMI купил права на многие широко известные методологии и предлагает своим клиентам микс из разных подходов и фреймворков, настроенных специально под них. Например, Spotify известен использованием методологии Agile, но в своей модифицированной версии – Spotify Model.

В итоге успешный проект – это результат баланса между методами, инструментами и человеческими взаимоотношениями. Надеемся, статья была полезной и интересной.

Если ваша команда работает по Agile, расскажите в комментариях – вы строго придерживаетесь принципов манифеста или кастомизировали процесс под себя, нам будет очень интересно узнать о вашем опыте!

99
2 комментария

На мой взгляд, Вы сравнили мягкое с теплым.
Понятно, что Agile более жизнеспособен при inhouse разработке, а водопад при работе с внешним заказчиком.
Но даже при работе с внешним заказчиком и имея на руках подписанные требования, можно внутри команды работать по гибким методологиям (они на то и гибкие, что их можно кастомизировать под конкретную ситуацию).
Хотелось бы спросить - сколько проектов вы закончили в срок?
Без костылей и доработок после даты выхода в прод?

2/4 проектов после принятия методологии

Одним из важных критериев было наглядное отслеживание менеджментом того, что происходит в проекте. Внутри рабочей группы можно работать по каким угодно методологиям или вообще без них. Но с нашим текущим подходом менеджмент и клиент максимально точно понимают, что происходит с релизом, какие риски сработали и где нужно принимать меры