Введение

Всем привет, меня зовут Сергей Прощаев. Я Tech Lead и руководитель направления Java | Kotlin разработки в FinTech, а ещё преподаю на курсах по разработке и архитектуре в OTUS. Сегодня хочу поговорить о теме, которая, казалось бы, лежит на поверхности, но именно в ней чаще всего тонут проекты и страдает разработка. О работе с требованиями. Точнее — о том, почему их нельзя «собрать» раз и навсегда и почему Agile‑требования ничем принципиально не отличаются от любых других, как бы их ни называли.

Мне не раз приходилось видеть, как команды упираются в глухую стену именно из‑за иллюзий вокруг работы с требованиями. Кто‑то уверен, что в начале проекта можно всё предусмотреть и зафиксировать. Кто‑то, наоборот, считает, что в Agile можно вообще ничего не писать, достаточно устных договорённостей. И те и другие потом переписывают код по ночам. Давайте разберёмся, где тут правда, а где опасные заблуждения.

Почему «сбор требований» — это вредный миф?

Фраза «сбор требований» создаёт ложное ощущение, что они уже где‑то лежат готовенькие, как грибы в лесу, — только наклоняйся и складывай в корзину. На деле всё иначе. В большинстве случаев пользователи сами не знают, что им нужно, пока не увидят работающий прототип. Бизнес‑цели могут меняться. Регулятор выпускает новое постановление. Рынок переворачивается. Ждать, что в начале пути у вас будет полная и неизменная спецификация, — это утопия.

Когда я только начинал программировать, я часто попадал в одну и ту же ситуацию. Садился писать код, плохо понимая задачу. Через пару часов начинал «буксовать»: переписывал, правил, но почти не продвигался. Проблема всегда была одной и той же: я не потратил время на то, чтобы по‑настоящему понять, что именно должен сделать. Это не значит, что нужно впадать в аналитический паралич и месяцами рисовать диаграммы. Это значит, что нужно принять как факт: требования никогда не будут полными с первой итерации. И это нормально.

Разработка требований — это итеративный процесс

Представьте, что вы собираете пазл, но коробку с картинкой вам не дали, а часть деталей ещё не напечатали. Примерно так выглядит попытка зафиксировать все требования до начала разработки. Поэтому правильный подход — постепенное уточнение.

Как это работает на практике? Сначала вы определяете бизнес‑цель (зачем вообще делаем продукт). Затем выделяете крупные пользовательские сценарии или задачи. После этого приоритизируете: что пойдёт в ближайший релиз или спринт, а что может подождать. И только те требования, которые попали в ближайший цикл, детализируете до уровня, понятного разработчику и тестировщику. Потом цикл повторяется.

Такой подход решает сразу несколько проблем:

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

  • У команды всегда есть достаточно информации для старта, но она не перегружена документацией.

  • Пользователи и стейкхолдеры видят промежуточные результаты и могут вовремя скорректировать курс.

В своей практике я много раз убеждался: если пытаться написать «идеальное ТЗ» на старте, то через пару месяцев оно превращается в тыкву. Реальность уходит вперёд, документ устаревает, и его перестают открывать. Гораздо эффективнее — вести «живой» артефакт (будь то список пользовательских историй в Jira, набор сценариев в Confluence или даже Miro‑доска), который постоянно актуализируется по мере получения новых знаний.

Ниже — схема (рис. 1), которая хорошо иллюстрирует итеративный процесс работы с требованиями. Обратите внимание: мы не просто движемся по кругу, а каждый раз уточняем и углубляем понимание.

Рис. 1 — Итеративный процесс уточнения требований
Рис. 1 — Итеративный процесс уточнения требований

На старте любого проекта я всегда начинаю с бизнес‑целей и видения — отвечаю на главный вопрос: «Зачем мы вообще это делаем?». Без этого фундамента любая приоритизация превращается в гадание на кофейной гуще, поэтому именно с него и начинается путь.

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

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

В работу берём только этот сфокусированный набор. Его мы детализируем до уровня, понятного разработчикам. Здесь я (или бизнес‑аналитик, если он есть) прорабатываю критерии приёмки, краевые сценарии и нефункциональные требования ровно настолько, чтобы разработчики и тестировщики могли стартовать без лишних вопросов.

После этого начинается сам производственный цикл — разработка и тестирование. Команда воплощает требования в коде, проверяет их и готовит рабочий инкремент продукта.

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

Первый — прямые замечания и уточнения по уже сделанному. Они могут отправить нас назад к этапу выявления пользовательских задач, если выяснится, что какой‑то сценарий мы поняли неправильно или упустили полностью.

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

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

Agile‑требования: та же суть, другая упаковка

Второе распространённое заблуждение звучит так: «В Agile мы не пишем требования, у нас User Stories». Или наоборот: «У нас серьёзный проект, нам нужны Use Cases и функциональные спецификации, а не эти ваши стикеры». На самом деле, с точки зрения конечной цели — дать разработчику достаточно информации для создания работающего решения — разницы нет.

Разработчику всё равно, как называется документ, из которого он берёт информацию. Ему нужно понимать:

  • Что именно должно быть сделано (функциональность).

  • Для кого и с какой целью.

  • Какие есть ограничения и краевые случаи.

  • Как проверить, что всё работает правильно.

Эту информацию можно упаковать в Use Case, в User Story с критериями приёмки, в функциональное требование с тест‑кейсами. Суть не меняется. Меняется только способ подачи и момент, когда эта информация становится доступна.

В традиционном подходе часто пытаются описать всё заранее. В Agile требования детализируются «точно вовремя» — непосредственно перед тем, как команда берёт задачу в разработку. Это не отменяет необходимости в документации, но делает её более компактной и живой. Как говорится, «работающий продукт важнее исчерпывающей документации», но это не значит «документация не нужна».

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

Рис. 2 — Роли и потоки информации о требованиях в Agile-проекте
Рис. 2 — Роли и потоки информации о требованиях в Agile‑проекте

На этой схеме показано, как информация о требованиях циркулирует между бизнесом и командой разработки.

Начнём с левой части. Стейкхолдеры — это представители бизнеса, пользователи и другие заинтересованные лица, которые формируют исходные запросы. Именно от них исходит поток, помеченный как «Видение, потребности, обратная связь».

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

Владелец продукта фильтрует входящие запросы, сопоставляет их с бизнес‑целями и формирует «Приоритеты, цели продукта», которые передаются дальше.

Следующий узел — Бизнес‑аналитик. В некоторых командах эта роль совмещена с владельцем продукта, но на схеме они разделены, чтобы подчеркнуть разницу функций.

Аналитик получает приоритеты и цели, после чего превращает их в «Уточнённые истории, критерии приёмки». Это уже не абстрактное «хотим админку», а конкретное описание с чёткими границами и проверяемыми условиями, которое передаётся Разработчикам.

Разработчики на основе историй и критериев создают «Рабочий инкремент» — ту часть продукта, которую можно протестировать и показать. Инкремент поступает Тестировщикам, которые проверяют его на соответствие критериям приёмки и возвращают «Результаты тестирования» обратно бизнес‑аналитику.

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

Когда инкремент стабилен, бизнес‑аналитик сообщает владельцу продукта о «Готовности фичи». Владелец продукта, в свою очередь, организует «Демонстрацию» стейкхолдерам, замыкая внешний цикл обратной связи. Именно здесь рождаются новые идеи и уточнения, которые снова поступают на вход процесса в виде потребностей и обратной связи.

Таким образом, схема наглядно показывает разделение труда: стейкхолдеры отвечают за «что ценно», владелец продукта — за «что и когда делать», бизнес‑аналитик — за «как именно описать», разработчики и тестировщики — за «как сделать и проверить». А петли обратной связи — внутренняя и внешняя — гарантируют, что продукт не уходит в сторону от реальных потребностей бизнеса.

Что в итоге?

Разработка требований — это не одноразовый этап, а непрерывный процесс уточнения и адаптации. Не важно, называете вы это User Stories, Use Cases или функциональными спецификациями. Важно, чтобы команда и заказчик имели общее понимание того, что будет сделано в ближайшей итерации, и могли быстро реагировать на новую информацию.

Итеративный подход позволяет снизить риски, не плодить ненужную функциональность и доставлять ценность бизнесу быстрее. А грамотная документация (ровно в том объёме, который нужен команде) страхует от потери знаний и упрощает онбординг новых участников.

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

Если вы узнали в статье свои проекты — скорее всего, проблема не в разработке, а в формулировке требований. Эту тему подробнее рассмотрим на открытом уроке «Как не допустить ошибок при написании пользовательских историй (User Story)?» — с примерами и разбором типичных провалов. Встреча пройдет 5 мая в 20:00. ☛ [Записаться на открытый урок]

Комментарии (4)


  1. barolina
    15.04.2026 09:42

    а вы разве, не учитываете архитектуру или проработку решений ?


  1. DenSigma
    15.04.2026 09:42

    Вот бы получить ответ на простой вопрос. Почему ракету изготавливают по четко определенным чертежам (а не по стикерам), а в разработке ПО уже третий десяток лет не могут наладить нормальный производственный процесс?


    1. silverwolf
      15.04.2026 09:42

      Стоимость ошибки и исправления разная


      1. DenSigma
        15.04.2026 09:42

        Да, совершенно верно.

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