Что такое Definition of Ready и Definition of Done?
Junior
Definition of Ready — набор критериев, при которых задача готова к взятию в работу: понятные требования, дизайны, оценка, заведённые тестовые сценарии, разрешённые зависимости.
Definition of Done — критерии завершённости: код написан, проверен на ревью, покрыт тестами, прошёл QA, документация обновлена.
Из практики: чёткие DoR и DoD сокращают переделки и недопонимание. QA активно участвует в формулировке обоих, особенно DoD.
Частые ошибки
Принимать задачу без DoR — потом всплывают неясности.
Не обновлять DoD при появлении новых требований.
Дополнительные вопросы
Кто отвечает за DoD?
Чем DoD отличается от acceptance criteria?
Что такое acceptance criteria и кто их пишет?
Junior
Acceptance criteria — это условия, при которых фича считается выполненной. Обычно формулируются в стиле Given/When/Then или просто списком чек-пунктов.
Пишет PM или аналитик совместно с командой (включая QA). QA — естественный голос для уточнения граничных случаев.
Из практики: чёткие AC — основа хорошей фичи. Если AC размыты — будут переделки и споры на этапе приёмки.
Частые ошибки
Считать AC задачей PM в одиночку.
Принимать задачу с туманными AC.
Дополнительные вопросы
Что такое INVEST для AC?
Чем AC отличается от DoD?
Какие виды требований существуют?
Junior
Бизнес-требования (зачем делаем), пользовательские (что пользователь хочет получить), функциональные (что система делает), нефункциональные (как делает: производительность, безопасность, юзабилити), переходные (что нужно для перехода со старой системы на новую).
Уровни идут сверху вниз: бизнес → пользовательские → функциональные/НФТ. Каждый уровень детализирует предыдущий и должен трассироваться обратно.
Из практики: главная ошибка — начинать с функциональных, не зафиксировав бизнес-цель. Получается продукт, который никому не нужен.
Частые ошибки
Не разделяют уровни и пишут «бизнес-требование: должен быть синий цвет кнопки».
Забывают про переходные требования — и миграция становится сюрпризом.
Дополнительные вопросы
Что такое регуляторные/системные требования?
Как ты группируешь требования в больших проектах?
В чём отличие функциональных и нефункциональных требований? Приведи примеры.
Junior
Функциональные требования (ФТ) описывают, ЧТО система делает: «пользователь может оплатить заказ картой». Нефункциональные (НФТ) описывают, КАК она это делает: «p95 ответа платёжного API < 500 мс при 100 RPS».
ФТ — про поведение и сценарии. НФТ — про качество: производительность, безопасность, юзабилити, надёжность, поддерживаемость, переносимость.
Из практики: НФТ — слабое место аналитика. Их часто пишут как «должно быть быстро» вместо измеримых критериев.
Частые ошибки
НФТ пишут общими словами без цифр.
Считают НФТ «инфраструктурным делом», не своим.
Дополнительные вопросы
Какие НФТ часто забывают?
Как ты согласовываешь НФТ с бизнесом, который их не понимает?
Какая бывает классификация НФТ (FURPS+)? Какие НФТ описываешь чаще?
Чаще всего описываю: производительность (latency, throughput, p95/p99), безопасность (методы аутентификации, шифрование, аудит), доступность (SLA, RTO/RPO), юзабилити (для каких устройств/локалей).
Из практики: НФТ удобно собирать по чек-листу — иначе всегда что-то забудешь. У меня есть свой шаблон НФТ под каждый тип системы.
Частые ошибки
Берут «всё из FURPS» и пишут пустые разделы.
Дублируют НФТ в каждой user story вместо одного раздела.
Дополнительные вопросы
Чем отличается ISO 25010 от FURPS+?
Как разделяешь общие НФТ системы и НФТ конкретной фичи?
Что такое транзитные (переходные) требования? Приведи пример.
Middle
Переходные требования — то, что нужно сделать ОДНОКРАТНО для перехода со старой системы на новую: миграция данных, конвертация, обучение пользователей, временные интеграции, параллельная работа двух систем.
Пример: при миграции CRM нужно перенести 5 млн контактов, обучить 200 менеджеров и месяц поддерживать оба интерфейса. Это — переходные требования, они не остаются в продакшене после внедрения.
Из практики: переходные требования часто оценивают по остаточному принципу и срывают cutover. На них уходит 20–30% бюджета крупных проектов.
Частые ошибки
Не выделяют переходные в отдельный раздел — они теряются в общем backlog.
Не планируют декомиссию старой системы — она живёт годами.
Дополнительные вопросы
Какие стратегии cutover ты знаешь (big bang, parallel, phased)?
Кто отвечает за переходные требования?
Что такое User Story? Опиши формат и приведи пример.
Junior
User Story — короткое описание потребности с точки зрения пользователя по формуле: «Как <роль>, я хочу <действие>, чтобы <выгода>». Цель — единица обсуждения и работы, а не полная спецификация.
Пример: «Как менеджер продаж, я хочу видеть рейтинг клиентов по сумме за квартал, чтобы планировать звонки на следующий месяц». Дальше — критерии приёмки (AC) и обсуждение реализации.
Из практики: формула «Кто/Что/Зачем» защищает от story без бизнес-смысла. Если «зачем» пустое — это фича, а не story.
Частые ошибки
Пишут «реализовать API метод getClients» — это задача, не история.
Пропускают «зачем» — теряется приоритизация.
Дополнительные вопросы
Что такое 3C (Card, Conversation, Confirmation)?
Какие альтернативы формату «As a … I want …»?
Что такое Acceptance Criteria? Чем отличаются от Definition of Done?
Junior
Acceptance Criteria (AC) — конкретные проверяемые условия, при которых эта user story считается выполненной. Привязаны к одной story. Часто в формате Given/When/Then (Gherkin) или списка чек-боксов.
Definition of Done (DoD) — общий чек-лист команды для ВСЕХ задач: код-ревью пройдено, тесты написаны, документация обновлена, на стейдже задеплоено. Не привязан к конкретной story.
Из практики: AC отвечает «что именно работает в этой фиче», DoD — «по каким стандартам сделана любая работа». Это разные документы и разные владельцы (PO vs команда).
Частые ошибки
Дублируют общие пункты DoD в каждый AC.
Пишут AC как «работает корректно» — это не критерий.
Дополнительные вопросы
Что такое Definition of Ready?
Как пишешь AC для НФТ?
Какие признаки хорошей User Story? Что такое INVEST?
Junior
INVEST: Independent (не зависит от других), Negotiable (можно обсуждать реализацию), Valuable (есть ценность), Estimable (можно оценить), Small (помещается в спринт), Testable (есть критерии проверки).
Хорошая story — это не полная спецификация, а приглашение к разговору. Если её нельзя обсудить и нельзя проверить — это не story.
Из практики: чаще всего страдает Small и Independent. Большая story дробится на серии или сплитуется по сценариям, а не по слоям (бэк/фронт).
Частые ошибки
Сплитят story по техническим слоям и теряют ценность каждой половины.
Принимают story «работа с API» — она не Testable и не Valuable.
Дополнительные вопросы
Какие техники сплита user story знаешь (SPIDR, по сценариям)?
Что такое vertical slice?
Что такое User Story Map и зачем её использовать?
Middle
User Story Map (Джефф Паттон) — двумерная карта: по горизонтали путь пользователя (backbone верхнего уровня), по вертикали — story внутри каждого шага, отсортированные по приоритету. Релизы режутся горизонтальными полосами.
Помогает увидеть систему целиком, выделить тонкий MVP-срез по всему пути пользователя, а не «зафигачить весь backlog по одному модулю».
Из практики: USM — лучшее лекарство от backlog-портянки. Команда видит картину и легче приоритизирует.
Частые ошибки
Делают USM как обычный backlog в виде стикеров — без горизонтальной оси пути.
Не обновляют после первых релизов.
Дополнительные вопросы
Какие инструменты для USM (Miro, FeatureMap)?
Как USM сочетается с CJM?
Что такое Use Case? Какие разделы он содержит?
Junior
Use Case — текстовый сценарий взаимодействия актора с системой для достижения цели. В отличие от User Story, описывает поток шагов, альтернативы и исключения.
Из практики: fully dressed use case оправдан в крупных проектах с регуляторкой. В стартапах достаточно casual: цель, актор, шаги, альтернативы.
Частые ошибки
Пишут use case как алгоритм работы кода, а не взаимодействие.
Раздувают на 5 страниц то, что укладывается в 10 строк.
Дополнительные вопросы
Что такое extension point?
Как ты документируешь негативные сценарии?
В чём отличие User Story от Use Case?
Junior
User Story — короткая «карточка для разговора», 1–3 строки + AC. Use Case — детальный сценарий с шагами, альтернативами и исключениями, обычно несколько страниц.
Story — артефакт Agile, оптимизирована под итеративную работу и обсуждение. Use Case — артефакт RUP/Waterfall, оптимизирован под полную спецификацию.
Из практики: они не взаимоисключающие. На крупных фичах сначала пишу Use Case (общая картина), потом дроблю в user stories для спринта.
Частые ошибки
Пишут «user story» на 2 страницы — это уже use case.
Используют только что-то одно в проекте, где нужны оба.
Дополнительные вопросы
Можно ли заменить use case полным набором user stories?
Применяется в Waterfall, при фиксированном scope, в гос/банковских/медицинских проектах, при аутсорсе с фиксированной ценой. В Agile-проектах SRS как монолитный документ заменяют живым набором story и спецификаций.
Из практики: даже в Agile-команде на крупных интеграциях имеет смысл писать «лёгкий SRS» — это снимает споры на стыках команд.
Частые ошибки
Пишут SRS на 300 страниц и не поддерживают его — он мёртв через месяц.
Думают, что SRS = backlog. Это разные жанры.
Дополнительные вопросы
Чем IEEE 830 SRS отличается от ГОСТ 34?
Кто подписывает SRS?
Что такое ГОСТ 19 и ГОСТ 34? В чём разница?
Middle
ГОСТ 19 — серия стандартов на программные продукты (как отдельные программы). Описывает структуру ТЗ, спецификации, описание программы и эксплуатационной документации.
ГОСТ 34 — серия стандартов на автоматизированные системы (АС): стадии и этапы создания, состав документов на каждой стадии. Это более широкий комплекс: оборудование, ПО, оргобеспечение.
Из практики: ГОСТ 34 чаще встречается в госконтрактах и крупных корпоративных АС, ГОСТ 19 — в проектах на разработку конкретного ПО. Многие проекты используют оба, разделяя документы.
Частые ошибки
Путают серии и применяют ГОСТ 19 к АС или наоборот.
Создают «гостовские» документы для галочки, без реального содержания.
Дополнительные вопросы
Какие ключевые документы по ГОСТ 34.602 (ТЗ на АС)?
Самые часто нарушаемые — однозначность и тестируемость. «Система должна быть удобной» — не однозначно и не тестируемо. «p95 < 300 мс на пути checkout» — да.
Из практики: проверяю требование вопросом «какой тест-кейс из этого напишет тестировщик?». Если не получается — переписываю.
Частые ошибки
Используют слова «возможно», «обычно», «как правило».
Пишут требования в пассиве без указания актора.
Дополнительные вопросы
Какие инструменты статического анализа требований знаешь?
Как ты проверяешь полноту?
В чём разница между верификацией и валидацией требований?
Middle
Верификация требований — «делаем ли мы продукт правильно». Проверка, что требования согласованы, полны, корректны по форме (статический анализ, ревью).
Валидация требований — «делаем ли мы правильный продукт». Проверка, что требования соответствуют реальной потребности бизнеса/пользователя (демо прототипа, проверка на сценариях, пользовательские тесты).
Из практики: верификацию делает аналитик с командой, валидацию — с заказчиком/пользователем. Пропуск валидации = красивый ТЗ под ненужный продукт.
Частые ошибки
Делают только верификацию и думают, что «согласованное ТЗ» = «нужный продукт».
Путают валидацию требований и валидацию системы (это разные вещи).
Дополнительные вопросы
Какие техники валидации требований знаешь (прототипы, мокапы, walk-through)?
Кто отвечает за валидацию?
Как ты документируешь требования к UI-элементу (поле ввода, кнопка, форма)?
Junior
Поле: тип данных, обязательность, маска/формат, длина, валидация (правила + тексты ошибок), значение по умолчанию, видимость по условиям, доступность для редактирования. Кнопка: состояния (active/disabled/loading), действия при клике, условия видимости. Форма: набор полей, порядок, валидация на сабмит, поведение при успехе/ошибке.
Удобно делать единый шаблон описания UI-элементов проекта, чтобы разработчик и тестировщик не угадывали.
Из практики: 80% дефектов в UI — из-за непрописанных edge-cases: пустые значения, длинные строки, спецсимволы, повторное нажатие, потеря сети.
Частые ошибки
Пишут «поле email» — без формата, длины, регистра.
Забывают про disabled-состояния и сообщения об ошибках.
Дополнительные вопросы
Как ты разделяешь требования к UI и UX?
Где описываешь поведение при ошибках сети?
Как ты выявляешь «подводные камни» в требованиях?
Middle
Использую набор техник: чек-листы (для НФТ, безопасности, локализации), вопросы из «5W+1H», ревью с разработчиками и тестировщиками, прототипирование на спорных местах, проверка крайних случаев (пустые, максимальные, отрицательные значения).
Особенно помогает «inverse thinking»: что должно произойти, чтобы это требование сломалось? Какие сценарии его обходят?
Из практики: дешевле всего найти проблемы на ранних этапах через walk-through с командой. Каждый смотрит со своей стороны и видит разные риски.
Частые ошибки
Полагаются только на «своё чутьё» и пропускают системные дыры.
Не привлекают разработчика к ревью требований.
Дополнительные вопросы
Какие чек-листы используешь?
Что такое pre-mortem?
Что делать, если требования противоречивы?
Middle
Сначала проверяю — это реальное противоречие или терминологическое. Если терминологическое — фикс через глоссарий. Если реальное — выношу на принятие решения тем, кто отвечает за бизнес-цель (PO/спонсор), с двумя-тремя вариантами и их последствиями.
Фиксирую решение в decision log с автором и обоснованием. Обновляю все артефакты, на которые противоречие повлияло.
Из практики: молча выбрать одну сторону = впоследствии переделывать. Лучше потратить день на эскалацию, чем неделю на переделку.
Частые ошибки
Принимают решение от себя и потом получают вето.
Не обновляют связанные документы — противоречие остаётся в проекте в скрытом виде.
Дополнительные вопросы
Кто формальный owner противоречия?
Что делать, если PO сам себе противоречит?
Как обеспечиваешь обратную совместимость при изменении требований?
Middle
Принципы: не ломать существующих потребителей. Только добавлять (additive changes) — новые поля, новые эндпоинты с версией. Удаление и переименование — через deprecation: помечаем устаревшим, держим N версий, потом убираем.
В требованиях явно прописываю: какие потребители использует фичу/контракт, какая стратегия миграции, какой период deprecation, как уведомляются потребители.
Из практики: компромисс обычно между скоростью развития и стабильностью. Чёткое политика версионирования снимает споры в каждом релизе.
Частые ошибки
Меняют контракт в новой версии без deprecation — клиенты валятся в продакшене.
Поддерживают слишком много старых версий — накапливается долг.
Дополнительные вопросы
Какие подходы к версионированию API (URL, header, content)?
Что такое breaking change?
Что такое DoR, DoD, AC?
Junior
DoR (Definition of Ready) — чек-лист готовности задачи ко входу в спринт: ясная цель, AC, оценка, нет блокеров. Защищает команду от «сырого» backlog.
DoD (Definition of Done) — общий чек-лист «когда задача считается завершённой»: код, тесты, ревью, деплой на стейдж, обновлённая документация. Один на команду.
AC (Acceptance Criteria) — конкретные проверяемые условия выполнения этой user story. Привязаны к одной задаче.
Из практики: команды путают DoD и AC. DoD — общие стандарты ВСЕХ задач, AC — функционал ЭТОЙ задачи.
Частые ошибки
Дублируют пункты DoD в каждый AC.
Принимают задачу в спринт без DoR — она блокирует всю команду.
Дополнительные вопросы
Кто отвечает за DoR/DoD?
Чем DoD спринта отличается от DoD релиза?
Что такое Definition of Ready и зачем нужно?
Junior
DoR — чек-лист готовности задачи ко входу в спринт. Типовые пункты: ясная цель, AC написаны, оценка дана, зависимости известны, без блокеров, описаны UI и интеграции, при необходимости — макеты.
Нужен, чтобы команда не брала «сырое» в работу. Иначе спринт ломается на полпути: «а это как делать?».
Из практики: жёсткий DoR пугает PO («слишком строго»), мягкий DoR не работает. Лучшее — короткий чек-лист на 5–7 пунктов, который реально проверяется на refinement.
Частые ошибки
Не имеют DoR — спринт получает «сырые» задачи.
Делают DoR из 25 пунктов — никто его не использует.