Як оцінити свої робочі завдання за допомогою story points: пояснення на котиках
Автор статті — Project Manager в EPAM Ольга Руденок.
Вступ
Я працюю менеджером проєктів понад 4 роки. За час своєї кар’єри я працювала з різними проєктами, методологіями та фреймворками, комунікувала з фахівцями різних ролей і рівнів. Однією з найбільших проблем майже у всіх моїх командах була оцінка задач в Story Points.
Запитання, які я чула від проєкту до проєкту: «Навіщо нам story points, якщо ми можемо просто оцінити ці задачі в годинах?», «Я можу точно оцінити час у годинах чи хоча б у днях, так навіщо тоді story points?» тощо. Я намагалася знайти спосіб, щоб переконати колег в тому, що оцінка у відносних одиницях виміру є більш ефективною. Врешті-решт я дізналася за допомогою яких прийомів та вправ можна навчити команди використовувати story points, і нижче я поділюся з вами своїми знахідками.
Ця стаття буде корисною тим, хто ніколи не працював зі story points, а також тим, хто має певний досвід, але все ще має труднощі з їх використанням. Стаття містить трохи теорії, але основна мета — дати практичні вправи, які допоможуть зрозуміти принципи оцінки в story points.
Що таке story points
Почнемо з визначення. Story points — це:
- метрика, яка використовується в Agile Project Management і розробці для оцінки складності реалізації заданої користувацької історії, або
- абстрактна міра зусиль, необхідних для реалізації користувацької історії.
Простіше кажучи, story point — це число, яке вказує на рівень складності історії.
Існує формула, за якою можна описати story points:
Переваги використання story points
Важливо пам’ятати, що story point — це відносна одиниця вимірювання. Це не те ж саме, що години чи дні, які є абсолютними одиницями вимірювання.
У випадку оцінки за допомогою часу не враховують складність і ризики. Окрім того, особиста оцінка завдання кожним членом команди може варіюватися залежно від його рівня, розуміння завдання й попереднього досвіду виконання аналогічних завдань.
Story points використовуються в Agile-фреймворках, тому що вони:
- підвищують точність оцінки,
- скорочують час на планування,
- допомагають точніше спрогнозувати дати релізів і
- дають командам змогу покращити продуктивність.
Практичні завдання
Нижче наведений практичний сценарій, який допоможе вам краще зрозуміти суть story points. Ви також можете використовувати його, щоб допомогти своїм командам розібратися в цьому.
Вправа 1
Намалюйте горизонтальну лінію й спробуйте розмістити на ній кілька завдань — від найменшого до найбільшого — з урахуванням зусиль, необхідних для виконання кожного завдання, його складності та всіх можливих ризиків у процесі виконання.
Обирайте для цієї вправи повсякденні, а не технічні завдання. Це особливо важливо, якщо ви збираєтеся попросити свою команду виконати її. Потрібно, щоб усі учасники зрозуміли суть завдання, і розташували завдання в правильному порядку.
Наприклад, завдання можуть бути такими:
Мета — зрозуміти принцип відносної оцінки, розташувавши картки відносно одна до одної, а не за точною кількістю годин, днів, тижнів тощо, необхідних для виконання кожного завдання.
У моєму випадку результат виконання цієї вправи такий:
Цей результат відображає мою особисту точку зору. Але якщо ви працюєте в команді з іншими колегами, вам потрібно обговорювати кожне завдання разом і приймати спільне рішення про його розташування. Наприклад, для мого чоловіка було б легше пофарбувати паркан, ніж приготувати вечерю. Отже, на нашу спільну (а не мою особисту) думку, приготувати вечерю буде трохи важче, а пофарбувати паркан буде трохи легше, що змінює картину:
Той самий принцип застосовується до завдань розробки: у вашій команді можуть бути люди з різним досвідом, і мета полягає в тому, щоб прийти до середнього значення складності завдання.
Вправа 2
У вас може бути велика кількість завдань, і при цьому немає потреби в тому, щоб давати кожному з них окрему оцінку. Натомість потрібен метод групування завдань за рівнем складності.
Для цього можна використати підхід із розмірами футболок. Це коли вам дають низку одиниць, що повторюють загальноприйняті розміри одягу: S, M, L та XL. Ви та ваша команда повинні разом вирішити, куди відноситься кожне завдання з попередньої вправи. У моєму випадку результат такий:
Справа в тому, що різницю між розмірами дійсно видно. Ви не переплутаєте завдання з категорії Large з завданнями з категорії Extra Large, як це могло б статися, наприклад, якби для оцінки завдань у вас було 16 і 17 годин.
У чому перевага такого підходу? Заощадження часу на оцінку. Іноді оцінка може зайняти більше часу, ніж виконання. При цьому ця оцінка не завжди буде відображати реальність.
Вправа 3
Отже, ми підібралися до story points. У розробці програмного забезпечення для попередньої оцінки великих обсягів робіт (наприклад, об'ємного функціоналу) завичай використовують метод із розмірами футболок, а story points використовують для оцінки конкретних історій (менші блоки функціоналу).
Дуже популярна шкала оцінки — послідовність Фібоначчі. Для потреб сфери IT вона дещо модифікується й часто починається з 0,5 або 1:
Чому саме ця послідовність? З тієї ж причини, з якої використовують метод із футболками: в такому разі краще видно різницю між значеннями. Ви ніколи не сплутаєте 13 і 21, як це можна зробити з 20 і 21. Наприклад, з цієї причини використання наведених нижче послідовностей — не найкраща ідея:
Ми розглянули проблему використання варіанту A, але ви можете запитати: «А що не так із варіантом B?». Відповідь: ми ніколи не знаємо, чи є якесь завдання рівно вдвічі більшим/меншим за інше.
Давайте потренуємося зі story points. Для цієї вправи я пропоную використовувати користувацькі історії з однаковим контекстом, але різним набором даних.
Приклади:
- Як любителю котів, мені потрібно гладити кота щодня, щоб бути щасливим. Дано: я не власник кота.
- Як любителю котів, мені потрібно гладити кота щодня, щоб бути щасливим. Дано: я — власник кота.
- Як любителю котів, мені потрібно гладити кота щодня, щоб бути щасливим. Дано: я — власник кота. Зараз я перебуваю в Польщі. Мій кіт в Україні.
- Як любителю котів, мені потрібно гладити кота щодня, щоб бути щасливим. Дано: я — власник кота. Кіт живе зі мною вдома.
- Як любителю котів, мені потрібно гладити кота щодня, щоб бути щасливим. Дано: я — власник кота. Кіт живе зі мною. Зараз він сидить у мене на колінах.
На першому етапі потрібно вирішити, яка користувацька історія найбільш зрозуміла для вас і вашої команди, яку з них вам найлегше реалізувати, і присвоїти їй найменше значення, що дорівнює 0,5 story points. Яке завдання можна оцінити таким чином? Те, яке має найменший рівень невизначеності й вимагає мінімальних зусиль: Як любителю котів, мені потрібно гладити кота щодня, щоб бути щасливим. Дано: я — власник кота. Кіт живе зі мною. Зараз він сидить у мене на колінах.
А найскладнішим завданням із наведених варіантів буде гладити кота при тому, що у мене його немає. Таким чином, я присвоюю цій історії 21 story point.
Сподіваюся, наведені приклади допомогли вам розібратися в суті story points й оцінці з їхнім використанням.