Что будет, если после релиза MVP (первой рабочей версии сайта, онлайн-сервиса или приложения) оставить его доработку без контроля? Как показал наш опыт, список желаемых фич будет пополняться каждый день. Маркетинг попросит добавить фильтр, служба безопасности — разграничить права доступа, отделу продаж понадобится интеграция с CRM.
Каждое требование обосновано само по себе, но вместе они не укладываются ни в срок, ни в бюджет. И дело тут не в том, что кто-то принял плохое решение, а в том, что решений было много, и никто не сверял их с общим планом. Эта статья о том, как сделать процесс доработок управляемым и в будущем не столкнуться ни с сюрпризами в бюджете, ни с проблемами в архитектуре продукта.
Почему список доработок растет, как снежный ком
Распространенный сценарий: руководитель проекта на стороне заказчика узнает о доработках на демонстрации промежуточного результата. При этом разработчики уже неделю заняты задачей, которой не было в исходном ТЗ. Отменить ее сложно — работа начата, деньги потрачены. Оставить — значит молча признать, что скоуп проекта (границы доработок) определяет не документ, а то, кто последним написал в чат с разработчиком.
Скоуп — это зафиксированный на старте проекта объем работ: конкретный список функций, экранов и интеграций, который войдет в релиз. Как правило, он прописывается в договоре, который заверяют обе стороны: заказчик и подрядчик. Все, что не входит в этот список, не считается частью текущего этапа, независимо от того, насколько разумной кажется идея.
Разработчик не останавливает работу сам, потому что у него нет для этого инструментов. Если границы работ не зафиксированы в договоре, у команды не будет формального повода сказать «это уже не MVP» — только неформальное «давайте обсудим на созвоне», которое ничего не решает. Подрядчик заинтересован закрыть заявку заказчика, а не спорить с ним о границах первого релиза, поэтому частый исход — молчаливое согласие на новую задачу.
Проблема усугубляется тем, что запросы на доработку приходят из разных отделов заказчика в разное время, а не одним списком. Пока идет обсуждение с маркетингом, команда разработки уже начала писать первую версию личного кабинета. Через две недели приходит требование о разделении ролей от службы безопасности, и его добавляют поверх, потому что откладывать «уже начатое» кажется нелогичным. В итоге из MVP вырастает полноценный продукт. Но рост неконтролируемый: бюджет раздут, релиз сдвинут, а команда третий раз за месяц переписывает техническое задание. О продуманной архитектуре в таких условиях речь, конечно, не идет.
Как найти границы MVP
Мы уже публиковали в блоге статьи о том, что такое MVP, а также о том, как спланировать переход от «минимально жизнеспособного продукта» к версии 1.0.
MVP отвечает на один вопрос бизнеса, при этом предполагается, что ответ будет «да» или «нет». Например, «станут ли дилеры оформлять заказ в личном кабинете без звонка менеджеру». Любая функция, которая не помогает ответить на этот вопрос, — кандидат на вторую волну разработки, а не часть первого релиза.
Граница MVP выстраивается вокруг гипотезы. Если руководитель проекта не может сформулировать, что именно проверяет запуск, спор о том, что обязательно, а что можно добавить потом, может продолжаться до бесконечности. Каждый департамент (маркетинг, служба безопасности, отдел продаж) будет опираться на свое ощущение важности, и все будут по-своему правы.
Поэтому разделение на MVP и следующие пункты дорожной карты проекта стоит фиксировать не в техническом задании, которое готовит проектная команда, а в отдельном документе с приоритетами (приложении к ТЗ). Этот документ подписывает руководитель проекта до старта разработки. Он дает формальное основание отклонять доработки без личного конфликта с командой: не «я так решил», а «это не отвечает ни на один вопрос из зафиксированного списка».
Документ с приоритетами отвечает на вопрос, что входит в MVP. Он не отвечает на другой вопрос: что происходит с доработкой, которая появляется на третьей неделе разработки, — когда часть работы уже сделана, и просто сослаться на документ недостаточно, нужно понять, когда команда физически может взять правку в работу и сколько дней это добавит к сроку. Здесь решает не документ с приоритетами, а то, как организован сам процесс разработки.
Куда уходит доработка: как Scrum и Kanban ограничивают её скорость
В разработке применяются разные методики, у каждой есть свои плюсы и минусы. Различают «гибкий» метод Agile с направлениями Scrum и Kanban и «негибкий» — Waterfall, он же каскадный или водопад.
Waterfall — работа идет последовательными этапами: сбор требований, проектирование, разработка, тестирование. Следующий этап начинается только после завершения предыдущего, вернуться к пройденному шагу сложно.
Scrum — работа идет циклами фиксированной длины, или спринтами. Новая задача попадает в очередь на следующий спринт, а не в текущий.
Kanban — работа идет без циклов, но с лимитом задач в процессе (WIP, work in progress). Новая задача берется в работу только после того, как освобождается место в лимите.
Разница между методиками — в том, где именно стоит точка, где доработку нужно остановить и явно решить, брать её в работу или нет. В Scrum эта точка — начало нового спринта: новая доработка попадает в бэклог и обсуждается на планировании следующего цикла, который обычно длится одну-две недели. Это физически ограничивает скорость, с которой скоуп «утекает» за пределы плана.
В Kanban ограничение работает иначе — через лимит work in progress. Если команда одновременно ведет не больше 3–4 задач, любая новая доработка требует явно вытолкнуть что-то из работы. Руководителю проекта приходится решать, что важнее сейчас, а не молча добавлять задачу поверх текущих.
Для проектов с фиксированным бюджетом (типичная ситуация для тендеров и госсектора) Kanban с явным лимитом задач в работе проще в управлении, чем Scrum с постоянно меняющимся бэклогом. Это стоит обсуждать с подрядчиком на старте проекта, а не в его середине, когда бюджет уже наполовину потрачен.
Тот же принцип работает и за пределами веба — там, где цена ошибки выше, чем на сайте. Например, однажды мы проектировали интерфейс киоска самообслуживания для компании «Авиакод» (дочерняя организация холдинга «Аэропорты регионов», разрабатывает оборудование и цифровые сервисы для аэропортов). В первой версии киоска мы зафиксировали три сценария: регистрацию пассажира на рейс (сканирование паспорта, подтверждение брони, выбор места), сдачу багажа на отдельной стойке drop-off (взвешивание чемодана на платформе, печать и наклейка бирки) и оплату дополнительных услуг с получением посадочного талона.
Мы всегда строим работу по методике Scrum, используя спринты длительностью в одну неделю. За два месяца, или девять спринтов, удалось реализовать и протестировать все сценарии, не отвлекаясь на доработки. Что у нас получилось, читайте в кейсе.
Комментарии к статье
Комментарии: 0