WSJF - Зважена найкоротша робота спочатку (Weighted Shortest Job First)
Модель визначення пріоритетів, яка використовується для встановлення послідовності завдань (наприклад, функцій, можливостей та Епіків) з метою отримання максимальної економічної вигоди. У SAFe WSJF оцінюється як вартість затримки Cost of Delay (CoD), поділена на розмір завдання.
У системі, що базується на потоці, постійне оновлення пріоритетів забезпечує найкращі економічні результати. У такому потоковому контексті найкращий результат дає послідовність виконання робіт, а не теоретична рентабельність інвестицій в окремі робочі місця.
З цією метою SAFe застосовує WSJF для визначення пріоритетності відставань шляхом розрахунку відносної вартості затримки the relative Cost of Delay (CoD) та розміру роботи (проксі для тривалості). Пріоритети відставання постійно оновлюються на основі відносної цінності для користувача та бізнесу, часових факторів, зниження ризиків та використання можливостей, а також відносного розміру завдання.
WSJF також зручно і автоматично ігнорує безповоротні витрати, що є основоположним принципом ощадливої економіки (Lean economics).
Деталі WSJF
Райнертсен описує комплексну модель, яка називається WSJF, для визначення пріоритетності робіт, засновану на економіці потоку розробки ощадливого продукту [Reinertsen, Don. Principles of Product Development Flow: Second Generation Lean Product Development. Celeritas Publishing, 2009].
WSJF розраховується шляхом ділення вартості затримки (CoD) на тривалість. CoD - це гроші, які будуть втрачені через затримку або невиконання роботи протягом певного періоду часу. Наприклад, якщо перспективна функція коштувала б $100 000 на місяць, а затримка склала три місяці, то загальна вартість затримки склала б $300 000.
Роботи, які можуть забезпечити найбільшу цінність (або CoD) за найкоротший термін, забезпечують найкращу економічну віддачу. У застосуванні до SAFe, модель підтримує деякі додаткові принципи потоку розробки продукту, в тому числі:
- Економічний підхід
- Ігнорування безповоротних витрат
- Безперервний фінансовий вибір
- Використання правил прийняття рішень для децентралізації прийняття рішень і контролю
- Якщо ви можете кількісно оцінити лише одну річ, кількісно оцініть вартість затримки
На Рисунку 1 показано вплив правильного застосування WSJF Рейнерсена. Області, заштриховані синім кольором, ілюструють загальну вартість затримки в кожному випадку. Виконання найкоротшої за часом роботи в першу чергу забезпечує найкращу економію, причому з дуже великим коефіцієнтом.
(Примітка: Як показано на рисунку 1, Reinertsen використовує фактичні грошові значення для вартості затримки та оціночної тривалості тривалості роботи, тоді як SAFe застосовує відносну оцінку з використанням модифікованої послідовності Фібоначчі, описаної далі в цій статті).
Оцінка вартості затримки (Estimating the Cost of Delay)
У SAFe "завданнями" є Функції, Можливості та Епіки, які живуть у відповідних бэклогах. Однак, оскільки може бути складно визначити загальну вартість затримки для речей, які ніколи не були реалізовані, SAFe використовує проксі для CoD, який оцінює розмір завдання відносно інших завдань у відставанні. Три основні компоненти вносять свій внесок в CoD:
- Цінність для користувача та бізнесу (User-business value) - Яка відносна цінність для клієнта або бізнесу? Чи надають наші користувачі перевагу цьому, а не тому? Який вплив на дохід нашого бізнесу? Чи існує потенційний штраф або інші негативні наслідки у разі затримки?
- Критичність часу (Time criticality) - Як цінність для користувача/бізнесу зменшується з часом? Чи існує фіксований дедлайн? Чи будуть вони чекати на нас або перейдуть на інше рішення? Чи є віхи на критичному шляху, на які це впливає? Який поточний вплив на задоволеність клієнтів?
- Зменшення ризику - цінність використання можливостей (Risk reduction-opportunity enablement value) - Що ще це робить для нашого бізнесу? Чи зменшує це ризик цієї або майбутньої поставки? Чи є цінність в інформації, яку ми отримаємо? Чи відкриє ця функція нові можливості для бізнесу?
Команди порівнюють елементи бэклогів відносно один одного, використовуючи ті ж самі модифіковані числа Фібоначчі, що і в "оцінювальному покері". Потім (відносний) CoD розраховується наступним чином:
Оцінка тривалості роботи (Estimating the Job Duration)
Наступним елементом у рівнянні, знаменником у WSJF, є тривалість роботи.
Це також може бути досить важко визначити, особливо на початковому етапі, коли важко сказати, хто буде виконувати роботу або який розподіл потужностей може бути застосований. На щастя, розмір роботи є хорошим показником тривалості.
(Якщо я один кошу газон, а передній двір втричі більший за задній, то на передній це займе втричі більше часу). Використовуючи розмір завдання, ми маємо простий розрахунок для порівняння завдань за допомогою WSJF, як показано на рисунку 3.
Тоді для порівняння робочих місць (в даному випадку за трьома характеристиками) можна використовувати просту таблицю, як показано на рисунку 4.
Як і при оцінці сторей, використовується модифікована послідовність Фібоначчі, оскільки вона краще відображає діапазон невизначеності в оцінках зі збільшенням розміру. Використовуючи таблицю на Рисунку 4, команда оцінює кожну характеристику відносно інших для кожного з трьох компонентів CoD та розміру завдання.
Почніть з перегляду одного стовпчика за раз, встановлюючи найменший елемент на "одиницю", а потім встановлюйте інші відносно нього. Потім обчисліть і розділіть CoD на розмір роботи. Робота з найвищим значенням WSJF є наступною за важливістю роботою, яку потрібно виконати.
Ця модель заохочує поділ великих робіт на декілька менших, щоб вони могли конкурувати з іншими меншими роботами. В іншому випадку критичні великі роботи можуть ніколи не бути виконані. Але це просто Agile в роботі. Оскільки впровадження відбувається поступово, інша робота буде обрана щоразу, коли поточна робота не матиме належного рейтингу серед своїх аналогів.
Ще однією перевагою моделі WSJF SAFe є те, що абсолютна вартість (гроші) компонентів CoD не потрібна. Замість цього команди оцінюють компоненти кожного завдання порівняно з іншими завданнями з того ж самого відставання. Нарешті, оскільки оновлені оцінки відставання включають лише залишковий обсяг роботи, часта зміна пріоритетів означає, що система автоматично ігноруватиме безповоротні витрати.
Використання розміру роботи як показника тривалості (Using Job Size as a Proxy for Duration)
Хоча ми застосовуємо розмір роботи (job size) як показник тривалості, розмір роботи (job size) не завжди є добрим показником. Розглянемо два сценарії:
- Якщо наявність спеціальних навичок означає, що більша робота з більшою цінністю може бути виконана швидше, ніж в іншому випадку, то її можна вибрати, оскільки вона забезпечує більшу цінність за коротший період. (Якщо три людини можуть підстригти мій великий газон перед будинком, а я займуся маленьким заднім двором, ці роботи матимуть приблизно однакову тривалість, але не однакову цінність).
- Невелика робота може мати дефіцит ресурсів або залежність від інших робіт, які можуть зайняти більше часу, ніж велика робота.
У цьому випадку результати можуть бути розставлені відповідно до пріоритетів. Але рідко нам потрібно турбуватися про ці два винятки. У більшості ситуацій швидка відносна оцінка WSJF є адекватною. Оскільки це потокова система, невеликі помилки у виборі не настільки критичні, оскільки наступна важлива робота підніметься на вершину відставання досить скоро.
Використання вартості робіт як проксі для визначення тривалості епіка (Using Job Costs as a Proxy for Epic Duration)
Коли відомі оціночні витрати на роботу, це може бути кращим показником, ніж оціночний розмір роботи для знаменника в WSJF. Ці витрати часто стають відомими на більш пізніх етапах Канбану після того, як було створено бізнес-план ощадливого виробництва. Оскільки ці великі робочі місця відбираються для впровадження, більш досконалий WSJF, що використовує оціночні витрати як проксі, або ще краще - оцінку тривалості, є виправданим.
Коли оціночні витрати на роботу використовуються в знаменнику WSJF, нормалізація вартості цих епічних робіт спрощує математику. Для цього найнижчу оціночну вартість епізоду слід прийняти за "1,0", а потім поділити вартість наступних епізодів на найнижче значення (наприклад, 1,5/ 0,5 = 3,0).
Малюнок 5. Застосування нормалізованої вартості для знаменника WSJF
(Примітка: Якщо у вас є хороші грошові оцінки для CoD, використовуйте їх для чисельника для всіх епічних творів, які є пріоритетними. Аналогічно, якщо у вас є хороші оцінки тривалості, використовуйте їх замість проксі-змінної).
Інші методи визначення пріоритетів продукту (Prioritization Frameworks):