От идеи до релиза: жизненный цикл разработки и путь задачи

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


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

Кейс: «Где мой заказ?»

Службе поддержки «Узелка» каждый день звонят покупатели с одним вопросом: «Где мой заказ?». Владелец решает: пусть покупатель видит статус заказа в личном кабинете и получает SMS при каждой смене статуса. На обсуждении выясняется, что список статусов никто не определил, неясно, кто и где их меняет, и что делать, если SMS не дойдёт. Задача, которая выглядела на полдня работы, ждёт ответов на эти вопросы ещё неделю.

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

Рисунок 1. Восемь этапов от идеи до поддержки и возврат к идее

Что происходит на каждом этапе

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

Этап Что происходит Результат (артефакт) Какие вопросы закрывают
Идея Кто-то замечает проблему или возможность Короткая формулировка: «покупатель видит статус заказа» Зачем это нужно и стоит ли заниматься этим сейчас
Уточнение Детали разбирают вместе с владельцем, поддержкой и разработчиками Список ответов и открытых вопросов Какие статусы бывают, кто их меняет, что делать, если SMS не доставлено
Постановка (запись требований: что именно должна делать система) Ответы превращаются в текст Требование с правилами проверки Что система делает в обычном и необычном случае и как проверить, что готово
Разработка Программисты пишут код Работающая функция на тестовой копии сайта Хватает ли данных для решения, что в требовании неоднозначно
Тестирование Результат сравнивают с требованием и ищут отличия Список найденных ошибок или подтверждение, что всё совпадает Совпадает ли результат с записью и что в записи не предусмотрено
Приёмка (проверка работы владельцем продукта) Владелец смотрит результат и решает, принимать ли Решение: принято или нет Это ли то, что просили
Релиз (выпуск изменений покупателям) Готовая функция попадает на рабочий сайт Обновлённый рабочий сайт Когда выпускать и как вернуть прежнее, если что-то пойдёт не так
Поддержка Покупатели пользуются функцией и пишут о проблемах Обращения и исправления Что нового выяснилось в работе и не пора ли новая идея

Как подготовить постановку, чтобы её можно было взять в работу, разбирает статья 02-26, а как проводится приёмка, статья 02-25. Здесь важно другое: у каждого этапа есть вход (что ему передали) и выход (что он передаёт дальше), и по ним видно, где в цепочке пробел.

Что происходит, когда вопрос остался без ответа

Предположим, на этапе уточнения никто не спросил: «что делать, если SMS не доставлено?». Вопрос не исчезает: он ждёт своего часа и всё равно возникнет, просто в более позднем месте. Чем позже обнаружен пробел, тем больше людей и готовой работы он затрагивает: на уточнении вопрос задаётся разговором, на тестировании возвращается в постановку и в код, в поддержке исправляется отдельным релизом.

Рисунок 2. Вопрос о недоставленном SMS на этапах уточнения, тестирования и поддержки

Ошибка здесь не в разработчике и не в тестировщике: вопрос не был задан на входе. Поэтому в таблице выше вопросы уточнения и постановки стоят раньше разработки.

Как этапы повторяются и где задачи ждут очереди

В таблице этапы идут по порядку, но на практике так бывает не всегда. В подходах, где работают короткими циклами, этапы повторяются: задачу делят на небольшие части, и каждая проходит путь от уточнения до проверки отдельно. Статус заказа «Узелок» может выпустить в два захода: сначала статус в личном кабинете, потом SMS. Подходы к организации работы разбирает статья 01-07.

Задачи ждут своей очереди в бэклоге: списке работ, упорядоченном по важности. Задачу про статус заказа владелец ставит выше, если поддержка тонет в звонках, и ниже, если горит оплата. Готовые изменения выпускают релизом, а каждый релиз фиксирует версию: состояние продукта с номером и списком изменений, например «Узелок 1.4». Статус в кабинете попадёт в одну версию, SMS в следующую.

Кто участвует на каждом этапе

Роли из статьи 01-03 распределены по этапам неравномерно. На схеме типичная раскладка: кто ведёт этап и кто участвует. В разных компаниях она может отличаться, но заметна закономерность: системный аналитик в этой раскладке участвует в семи этапах из восьми, потому что вопросы к требованию возникают на каждом шаге, кроме релиза.

Рисунок 3. Роли и этапы: кто ведёт этап и кто участвует

Где это встречается в работе

  • Оценка сроков. Разработчики оценивают только код, а уточнение, проверка и приёмка тоже занимают время, и о них нужно напомнить.
  • Разбор жалобы. По этапу, на котором возник пробел, видно, что исправлять: недостающее правило в требовании или ошибку в коде.
  • Планирование релиза. Команда решает, какие задачи войдут в ближайшую версию, а какие останутся в бэклоге.
  • Приёмка работы. Владелец принимает функцию по проверкам, записанным в требовании, а не по ощущению.
  • Выбор приоритета. Поддержка приносит цифры обращений, и по ним владелец решает, что поставить в бэклоге первым.

Итог

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

Что дальше

  • 01-07. Методологии разработки: обзор
  • 01-09. Окружения, стенды и доставка кода
  • 02-26. Постановка задачи разработке: Definition of Ready
  • 02-25. От требований к тестированию: тест-кейсы и приёмка
  • 02-24. Виды тестирования: что проверяют и кто

Источники

  • Product Backlog, Atlassian. Определение бэклога как упорядоченного списка работ.
  • The Scrum Guide. Циклы работы короткими частями и приоритет задач в бэклоге.
Проверка знаний

5 вопросов