С помощью «Product Flow Assignment» вы можете быстро составить задание на разработку продукта либо услуги. Подходит для самостоятельного использования или внутри команды, с внутренним или внешним заказчиком.
Подсистема «Product Flow Assignment» даёт инструменты для описания результата работы в виде задания, но нарочно избегает учёта задач и не может заменить таск-трекер. Если вам нужен учёт задач или заказов, то используйте Product Flow Assignment совместно с Product Flow Tasks, либо с любым другим таск-трекером: Trello, Asana, GitHib Issues, etc.
Product Flow Assignment даёт инструменты для учёта заданий, но нарочно избегает учёта задач, проектов и заказов. Во-первых, не всем такой учёт нужен. В малых командах можно прекрасно жить и без него. Чем меньше бюрократии — тем лучше.
В крупных организациях учёт задач/заказов преследует свои цели, и, как следствие, накладывает особые ограничения. Например, в организации может отслеживаться кто, кому и какие задачи ставил, сколько денег было потрачено и в какой срок.
Задание может существовать отдельно от задачи. Например, если вы строите дом, то архитектор может начертить вам общий план строения -- подготовить задание ещё до того, как бригада строителей приступит к работе. Более того, архитектор может подготовить несколько разных планов строения (задания), но строить вы будете только что-то одно.
Product Flow Assignment многое заимствует из Jobes To Be Done (JTBD). Полезная литература по теме:
- https://tilda.education/articles-jobs-to-be-done
- https://scrumtrek.ru/blog/product-management/2492/gajd-po-tehnike-jobs-to-be-done-jtbd/
- https://tilda.education/jobs-to-be-done-course
Шаблон:
${название сущности}: !concept
определение: |
Короткий ответ на вопрос "Что это такое?" …
${название примера}: !example |
Описание ситуации …
# Заложенная на будущее точка расширения функциональности.
# Отмечается тегом !extension
${название расширенного примера}: !extension |
Описание ситуации …
# Пример того, чего точно быть не может. Показывает где заканчивается эта сущность и начинается другая.
# Например, для "Машинного масла" мы можем исключить ситуацию "Жидкость для утоления жажды".
# Отмечается тегом !exclusion
${название исключения}: !exclusion |
Описание ситуации …
Вот пример с концепциями сайта менторов Девмана:
Программа обучения: !concept
определение: Программа обучения — это большой список учебных задач для ученика.
Общая программа: !example |
По одной программе обучения проходят обучение сразу несколько учеников. Один мог начать занятия
месяц назад, а другой — сегодня, поэтому прогресс у них разный, но план занятий — общий.
Python: !example |
Программа обучения по Python рассчитана включает в себя уроки на сайте dvmn.org, упражнения
sql-ex.ru и командные проекты.
JavaScript: !extension |
Программа обучения готовит не питонистов, а фронтендеров.
Fullstack: !extension |
Программа обучения включает сразу два языка программирования: Python и JavaScript.
Академическая гребля: !extension |
Программа обучения готовит не IT-шников, а спортсменов, у которых нет
ни привычных "языков программирования", ни "стека технологий".
Обучение без конца и края: !exclusion |
Программа обучения обязана быть ограничена по учебному времени. Если у обучения нет сроков, то и в создании
программы обучения смысла мало.
Учебный час: !concept
определение: |
Учебный час — это усреднённый по всем ученикам показатель. Если Петя прошёл урок за 3 часа,
а Вася — за 5, то считаем, что урок занимает 4 учебных часа. Дальше эти учебные часы умножаются
на хитро рассчитанный индивидуальный коэффициент, чтобы оценить сколько времени потребуется Пете, а сколько — Васе.
Учебная неделя: !concept
определение: |
Учебная неделя длится семь календарных дней, но начинается не обязательно в понедельник.
Cо среды по вторник: !example |
Учебная неделя длится со среды по следующий вторник включительно.
Индивидуально: !example |
У разных учеников учебная неделя стартует в разные дни календарной недели. У Пети — со вторника, а
у Сергея — с воскресенья.
Не семь дней: !exclusion |
Ни праздники, ни болезни, ни академы — ничто не влияет на продолжительность учебной недели с точки
зрения «Сайта менторов».
Она всегда семь календарных дней.
Шаблон:
${название роли}: !role
мотивация:
- Чего хочет роль …
- Чего ещё, бывает, хочет …
старт: … # Точка, с которой роль обычно начинает взаимодействие с продуктом
${название примера}: !example |
Описание ситуации …
# Заложенная на будущее точка расширения функциональности.
# Отмечается тегом !extension
${название расширенного примера}: !extension |
Описание ситуации …
# Пример того, чего не может быть. Показывает где заканчивается эта роль и начинается другая.
# Например, для "Администратора сайта" мы может исключить ситуацию "Разработчик сайта", считая их
# разными ролями.
# Отмечается тегом !exclusion
${название исключения}: !exclusion |
Описание ситуации …
Вот пример с ролями сайта менторов Девмана:
Ментор: !role
Мотивация:
- Управлять процессом обучения ученика от недели к неделе
Старт: Главная страница сайта менторов
Ментор нулевичков: !example |
Менторит нулевичков — учеников без опыта программирования.
Ментор новичков: !example
Ментор джунов: !example
Ментор универсал: !example |
Менторит как нулевичков, так и новичков с джунами.
Глава подразделения менторов: !role
Мотивация:
- Организовать эффективную работу подразделения менторов
Старт: Главная страница сайта менторов
Заказчик обучения: !role
Мотивация:
- Выполнить обязательство перед учениками по организации обучения
- Делегировать занятия с учеником ментору
- Обеспечить учеников менторами
- Не платить лишние деньги за обучение
Старт: Главная страница сайта менторов
Шаблон:
${название роли} — ${что хочет сделать с помощью продукта}: !func
${название истории}: !story
ситуация: …
успех: …
отказ: …
что понадобится:
- ${продукт}. ${функция}
# Заложенная на будущее точка расширения функциональности.
# Отмечается тегом !extension
${название истории}: !extension
ситуация: …
# Пример того, чего точно быть не может. Показывает где пролегает та граница функциональности, за которую
# не следует выходить. Решение о такой границе (scope) принимает product owner.
# Отмечается тегом !exclusion
${название истории}: !exclusion
ситуация: …
Пример функций для процесса авторизации на сайте:
Пользователь сайта — Войти в аккаунт: !func
Войти по почте: !story
ситуация:
- Уже зарегистрирован, есть аккаунт
- Регистрировался по почте через письмо с подтверждением
- Не авторизован на сайте
старт: Клик по ссылке на урок из закрытой части сайта
успех:
- Зашёл на страницу сайта
- Вижу, что URL текущей страницы совпадает с адресом ссылки
что понадобится:
- Пользователь сайта — Подтвердить email по ссылке с токеном
Войти через GMail: !extension
ситуация:
- Уже зарегистрирован, есть аккаунт
- Регистрировался через GMail
- Не авторизован на сайте
Забыл пароль: !story
ситуация:
- Уже зарегистрирован, есть аккаунт
- Регистрировался по почте через письмо с подтверждением
- Не авторизован на сайте
- Забыл пароль
старт: Клик по ссылке на урок из закрытой части сайта
успех:
- Зашёл на страницу сайта
- Вижу, что URL текущей страницы совпадает с адресом ссылки
Пользователь сайта — Подтвердить email по ссылке с токеном: !func
Ссылка протухла: !story
старт: Открытое в почтовом клиенте письмо с предложением подтвердить email.
отказ:
- Вижу сообщение о протухшей ссылке
- Вижу предложение зарегистрироваться заново
- Вижу ссылку для перехода к регистрации
Email подтверждён: !story
старт: Открытое в почтовом клиенте письмо с предложением подтвердить email.
успех:
- Вижу сообщение о подтверждённой почте
- Вижу предложение авторизоваться
- Вижу ссылку для перехода к авторизации
Отключены ссылки в почтовом клиенте: !exclusion
ситуация:
- Пользователь отключил в своём почтовом клиенте поддержку ссылок в письмах