← Усі статті

Інструкція для команди (user story): як читати, щоб зрозуміти, за що ми платимо

Як відрізнити добре написану задачу від поганої. Формула, три ознаки слабкої історії, і фраза, якою попросити переписати без конфлікту з командою.

Це для людей, які бачать у Jira, Notion або листі від виконавця рядки на кшталт “As a user I want to…” і не розуміють, чи це нормально, чи нас уже починають дурити.

Чому це болить

Ми замовили розробку. Команда відкрила для нас доступ у свою систему задач. Ми зайшли — і побачили список з десятків карток, кожна з яких починається з фрази “Як [хтось] я хочу [щось]…”. Звучить як магія. На вигляд складно. У договорі написано, що ми за це платимо.

Питання, яке боляче ставити вголос, але треба: звідки ми знаємо, що цей текст узагалі чогось вартий?

Бо буває так, що картки в системі задач — це декорація. Поставили галочку “BA працює над беклогом”, виставили рахунок, поїхали далі. А ми платимо за рядки, які нічого нікому не пояснюють, бо команда розробників все одно прийде до тімліда і запитає словами.

Хороша новина: відрізнити нормальну інструкцію від поганої можна за 30 секунд. Без технічного бекграунду. Зараз покажу як.

Що таке user story — без магії

Це короткий шаблон, у якому одна задача описана з боку користувача, а не з боку розробника.

У IT його називають user story (історія користувача). Це не зашифрований код і не “методологія”. Це просто домовлена форма, у якій усі члени команди описують роботу однаково — щоб не плутатись.

Далі вживатиму “інструкція” і “user story” як синоніми. Англійський термін — щоб ми його впізнавали в листі, український — щоб ми про нього думали без піднесення.

Формула: хто / що / для чого

Класичний шаблон виглядає так:

Як [роль користувача], я хочу [виконати дію], для того щоб [отримати результат].

Розкладемо на прикладі. Уявімо, що ми замовляємо застосунок для оплати комунальних послуг.

Як користувач, який платить комуналку щомісяця, я хочу бачити нагадування за 2 дні до останнього дня оплати, для того щоб не пропустити термін і не платити пеню.

Що тут добре:

  • “Як користувач, який платить щомісяця” — це не “як юзер”, це людина з обставинами. Розробник тепер знає, що це той, хто заходить рідко, а не той, хто живе в застосунку.
  • “Бачити нагадування за 2 дні” — це конкретна дія, з конкретним числом.
  • “Не платити пеню” — це причина, а не повтор дії. І саме причина допомагає команді, коли вони впираються в технічне обмеження і треба знайти варіант.

Якщо знаємо ці три частини — ми вже відрізняємо нормальну історію від несерйозної.

Три ознаки слабкої історії

Ознака 1: розмита

“Як користувач я хочу зручний інтерфейс.”

Це не інструкція. Це побажання. “Зручний” — суб’єктивне слово. “Інтерфейс” — не дія, а абстракція. Така картка в системі задач не дасть розробнику жодного орієнтира — і він зробить так, як уявить сам. Потім ми скажемо “не те”, і почнеться переробка за наші гроші.

Ознака 2: без критеріїв

“Як користувач я хочу оплатити рахунок одним кліком.”

Уже краще. Є дія. Але немає відповіді на питання: що значить “оплачено”? З якими банками? Що бачить користувач після успіху? Що відбувається, якщо банк відмовив? Без критеріїв приймання історія — це початок розмови, а не угода. Про критерії був перший пост серії — варто перечитати, якщо ще не.

Ознака 3: без контексту

“Як адмін я хочу видалити користувача.”

Технічно повна формула. Але — для чого? У яких випадках адмін видаляє користувача? Що з даними після видалення? Чи можна відновити? Без причини команда зробить найпростіший варіант (одна кнопка “видалити назавжди”), а в нас потім вибухне регуляторна проблема, бо за GDPR/КЗПД дані мали зберігатися 3 роки.

Контекст рятує від цього. Одне речення “для того щоб…” закриває половину питань іще до того, як вони з’являться.

Приклад до/після

Беремо реальний рядок, який часто пишуть у задачі:

До (так не треба)

“Додати оплату через Apple Pay.”

Це не історія. Це технічне завдання, написане з боку розробника. Тут немає користувача, немає причини, немає критерію готовності.

Після (так треба)

Як користувач iPhone, який оплачує комуналку зі смартфона, я хочу мати кнопку Apple Pay поряд із кнопкою “Оплатити карткою”, для того щоб не вводити дані картки щомісяця.

Критерії приймання:

  • Кнопка Apple Pay видима тільки на iPhone (на Android не показується).
  • При натисканні відкривається стандартний інтерфейс Apple Pay.
  • Після підтвердження користувач бачить квитанцію на email протягом 1 хвилини.
  • Якщо Apple Pay недоступний на пристрої — кнопка не показується (а не показує помилку).

Друга версія — це угода. Ми можемо взяти телефон, відкрити застосунок і за хвилину перевірити, чи зроблено те, що замовляли.

Як попросити переписати без сварки

Це найделікатніша частина. Якщо ми скажемо команді “ваші історії погано написані” — нас сприймуть або як токсичного замовника, або як людину, яка лізе не у свою справу. Обидва варіанти зіпсують стосунки на місяці вперед.

Краще працює така фраза:

“Я хочу простіше орієнтуватись у задачах. Можете для [конкретна задача] додати причину (‘для того щоб…’) і 3-5 критеріїв приймання? Це мені треба, щоб самому потім перевірити, чи зроблено те, що ми домовлялися.”

Що відбувається в цій фразі:

  • Ми не критикуємо команду. Ми описуємо свою потребу.
  • Просимо не “переписати все” — а доповнити конкретну задачу.
  • Пояснюємо, навіщо нам це треба — щоб самим перевірити. Це нормальне і зрозуміле прохання, а не “вчити команду роботі”.

У 9 випадках із 10 команда зробить — і часто скаже спасибі. Бо тімліду самому простіше, коли картки в системі задач написані по-людськи.

Часті помилки на цьому етапі

  1. Думаємо, що user story пишемо ми. Зазвичай їх пишуть BA або тімлід. Наша задача — читати і ставити питання. Якщо нам нав’язують писати самим — це або сильна команда хоче навчити нас (добре), або слабка команда перекладає на нас свою роботу (погано).
  2. Не звертаємо уваги на причину “для того щоб”. Це найслабкіша частина у 70% історій, які я бачив. Без неї команда робить за уявленням, а не за нашою бізнес-метою. Завжди питаємо: “а навіщо?” — і записуємо відповідь у картку.
  3. Великі історії не розбиваємо. Якщо інструкція займає більше двох екранів — це не одна історія, а пакет з 3-5. Розбити їх перед стартом дешевше, ніж переробити після.
  4. Підписуємо беклог “пакетом” на 3 місяці. Не треба. Достатньо описати наступні 2-3 спринти, а далі — додаємо в міру того, як з’являється конкретика. Контракт повинен дозволяти такий формат.

Що буде далі

Це третій пост серії про артефакти бізнес-аналізу. Попередні матеріали — про критерії приймання і про брифінг до контракту.

Наступний — про оцінку від IT-компанії. Як читати рядок “200 годин · $25K” і де у виконавця можуть бути інші інтереси, ніж у нас, плюс чому “fixed price” не завжди дешевший за погодинну роботу.

Якщо не хочемо пропустити — стежимо за мною у LinkedIn, там анонсую кожен матеріал серії.


Якщо ми зараз дивимось на беклог від виконавця і не розуміємо, чи це нормальні історії, чи декорація — це привід поставити паузу. У Ascend Griffin ми робимо короткі Discovery Call — 30 хвилин, щоб подивитися на ваші документи разом і сказати чесно, де ризики.

Маєте подібний проект і хочете обговорити?

30-хвилинна розмова — без презентацій, без обов'язків.

Discovery Call →

НАСТУПНИЙ КРОК

Поговорімо

Зв'яжуся з вами протягом 24 годин — узгодимо час знайомства або обговоримо ваш запит.

Хочете швидко?

або надішліть повідомлення

Або напишіть напряму: taras@ascendgriffin.org

Дякую за заявку!
Зв'яжуся з вами протягом 24 годин.