Один из самых интересных вопросов, возникающий в любой компании при внедрении agile, является декомпозиция требований. Не верите?
Попросите своего коллегу аналитика рассказать вам о любом своем недавнем требовании, которое невозможно разбить на отдельные части и можно сделать только целиком?
Как правило, чем крупнее компания, тем большим по размеру будет это требование. Так, для небольшой компании такое требование может быть реализовано за пару дней разработки, в то время как в банке оно может быть размером в несколько месяцев.
И причина невозможности декомпозиции здесь не в том, что требование неделимо. И даже не в том, что не хватает опыта в вопросе разбиения требований на части.
Проблема в том, что по-умолчанию почти в каждой голове сидит фраза:
«Заказчику нужно это только целиком. На часть он даже смотреть не будет, не говоря уже о выкладке в эксплуатацию!»
И в целом, конечно, это действительно так. Но!
Остановитесь на минуту.
Поставьте себя на место заказчика, почему он так говорит?
Неужели он хочет ждать несколько месяцев, чтобы получить результат, и не хочет увидеть его, скажем, в два раза раньше?
Может быть он не хочет как можно быстрее посмотреть на результат и дать вам по нему пару новых доработок в качестве обратной связи? :)
Как показывает опыт работы с каждой первой крупной компанией, заказчик говорит вам «сделать все и сразу» просто потому, что это единственный для него способ получить требуемые доработки в сложившихся в компании процессах разработки и выпуска релизов.
Потому что, если заказчик не попросит максимум сейчас, то в следующий раз вы возьметесь за доработки этой функциональности неизвестно когда. И тут он прав, верно?
Выход из этой ситуации на самом деле только один (так, чтобы была ситуация win-win) — нужно научиться поставлять результат максимально быстро, причем не обязательно даже в продакшн, можно и просто в качестве демо заказчику, на котором он сможет дать обратную связь и понимать, что если доработки действительно важны — то вы их сделаете в первую очередь.
Ок, поставлять быстро — но как этого добиться? Только через поставку функциональности маленькими порциями. А это возможно только через хорошую декомпозицию требований.
В итоге, стоит только один раз договориться с заказчиком и выполнить свою часть договоренностей — вы сразу войдете в ритм частых демо/релизов, при этом стоявший ранее вопрос про «сделать все и сразу» становится неактуальным. Заказчик в любой момент может захотеть что-то новое и получить результат буквально через несколько дней.
У вас есть требование, которое невозможно разбить на части? Давайте обсудим в комментариях!