«Ещё одна фича» — обычно это не такая маленькая задача
После запуска проекта одна из самых часто звучащих фраз выглядит так:
«Давайте добавим ещё одну фичу».
Иногда это действительно небольшое изменение.
Но иногда за этой же фразой скрывается совершенно новый объём работы.
Проблема не в самом запросе.
Проблема в том, что «это же небольшое дополнение» часто не воспринимается как изменение стоимости, сроков или scope.
Что видно
«Просто добавим одну кнопку / поле»
Скрытая сложность
- Новые бизнес-правила и валидация
- Совместимость с уже существующими данными
- Влияние на другие потоки, модули и API
- Дополнительное тестирование и внедрение
- Новое поведение, которому нужно учиться пользователю
«Небольшое» дополнение всё равно может расширить границы системы.
Новый запрос — это не плохо
Появление новых идей в процессе работы над проектом — абсолютно нормально.
Когда становится понятен пользовательский сценарий, проходят демо или появляются реальные данные, могут обнаружиться потребности, которых раньше просто не было видно.
Я не отклоняю такие запросы автоматически.
Но и не включаю каждый новый запрос в текущий scope проекта автоматически.
Потому что если принимать каждое «небольшое дополнение» без чётких границ, продукт постепенно превращается во что-то совсем другое по сравнению с тем, что было запланировано изначально.
Сначала я задаю три вопроса
Когда появляется новое требование, я сначала ищу ответы на три вопроса:
- Какую конкретную проблему это решает?
- Это входит в согласованную первую версию или расширяет текущий scope?
- Если не сделать это сейчас, продукт действительно не будет работать — или просто станет лучше, если эта функция будет?
Если ответ — «было бы неплохо», это не значит, что идея плохая.
Возможно, просто сейчас ей не место в текущей версии.
Вопрос 1
Какую конкретную проблему это решает?
Вопрос 2
Это в первой версии — или расширяет scope?
Вопрос 3
Без этого продукт не работает — или просто «было бы неплохо»?
Критично или в исходном обещании
Добавить в текущий scope
«Было бы неплохо» / новый scope
Backlog — следующий этап
Почему «маленькая» задача становится большой?
Добавить одну кнопку, одно поле или один статус на экране может показаться очень простой задачей.
Но за этим часто стоят:
- новые бизнес-правила
- совместимость с существующими данными
- влияние на другие процессы
- дополнительное тестирование и работа по внедрению
- новое поведение пользователя, которому нужно обучиться
Поэтому вопрос на самом деле не в том:
«Сколько часов займёт написание этого кода?»
Главный вопрос:
«Меняет ли это границы системы?»
Поэтому, когда я слышу «давайте добавим ещё одну фичу», я сначала смотрю не на объём реализации, а на то, изменяется ли scope.
Что делать сейчас, а что потом?
Для меня хороший подход выглядит так:
- Сохранять обещание первой версии.
- Не нарушать основной рабочий процесс.
- Добавлять новые идеи в backlog, а не включать всё сразу в текущий релиз.
Некоторые запросы действительно нужно реализовать сейчас — без них продукт будет ощущаться незавершённым.
Другие относятся уже к следующему этапу.
Важно чётко видеть эту разницу.
Иначе проект на самом деле никогда не заканчивается.
Он просто продолжает становиться всё длиннее.
Сохранять границы — не значит говорить «нет»
Сохранение scope не означает остановить клиента или заблокировать команду.
Это означает завершить то, о чём договорились, а следующую задачу рассматривать как отдельное решение.
Иначе каждую неделю появляется новое «небольшое» дополнение, а первоначальная договорённость постепенно теряет своё значение.
Для меня хороший результат — это не как можно больше фич.
Хороший результат — выпустить рабочую версию, которая решает ту проблему, которую мы изначально обещали решить.
Всё остальное — отдельное решение.
Отдельный scope.