❤️ Управління проєктом за Fix Time, Fix Budget, Flex Scope (FFF)

Чи не мрія будь-якого власника компанії керувати IT-продуктом так, щоб постачати продукт у строк, обганяючи конкурентів, і робити це з високою якістю, радуючи користувачів? Хотілося б знайти срібну кулю для управління і, здається, вона є. Не така вже й срібна і не така вже й куля, але досить надійний і обкатаний роками підхід до управління, який можна назвати FFF: Fix Time and Budget, Flex Scope.

Чому і коли варто обрати FFF? Подивімось.

Три комбінації

Кожен із підходів до управління проєктом, по суті, відрізняється тим, що фіксує або не фіксує такі величини: бюджет, обсяг робіт, термін і внутрішню якість системи.

Конкретна комбінація створює певні умови роботи, має плюси та мінуси:

Fixed price

  1. Зафіксовано три точки проєктного трикутника: термін, гроші та обсяг роботи.
  2. Основні ризики бере на себе виконавець і, як наслідок, ці ризики відображаються на оцінці. Крім цього створюються ризики і для замовника, про це я писав у статті 12 проблем під час роботи за технічним завданням в IT-продукті.
  3. Великим плюсом цього підходу є наперед визначені до початку робіт параметри проєкту. Дуже часто бізнесу/державі потрібно прописати в договорі термін, гроші та обсяг роботи.
  4. Внутрішню якість при цьому рідко фіксують. Натомість майже завжди саме якістю жертвують, щоб у нашому мінливому світі примудритися вкластися в строк із фіксованим обсягом роботи. Чому так відбувається і що є коренем проблеми, обговоримо трохи далі.
  5. Оплата відбувається наприкінці проєкту з можливою передоплатою на початку.

Time and Materials (T&M)

  1. Зафіксовано гроші та внутрішню якість системи, хоча другою часто нехтують через недбалість або недосвідченість з обох сторін.
  2. Замовник бере в оренду ресурси виконавця за фіксованою ставкою і управляє ними на свій розсуд.
    Виконавець відповідає за те, щоб дати максимально якісний продукт за рахунок своєї компетенції.
  3. Оплачується при цьому час, який співробітники виконавця були зайняті на проєктах замовника. Це відбувається наприкінці звітного періоду, наприклад, раз на місяць.
  4. Основні ризики бере на себе замовник.
  5. Якщо у замовника є чітке розуміння завдань і організовано контроль роботи (зокрема власних ресурсів, особливо Product Owner’а), то це найоптимальніший і найшвидший варіант управління, бо він найменш бюрократизований, відповідно, всі займаються тільки розробкою без зайвих відволікань на ритуали погоджень.

Fix Time and Budget, Flex Scope (FFF)

  1. Зафіксовано три точки проєктного трикутника: термін, гроші та внутрішня якість системи.
  2. Оплата відбувається наприкінці проєкту з можливою передоплатою на початку.
  3. У контракті описуються завдання, але досить високорівнево, щоб можна було флексити обсяг роботи без переписування контракту.
  4. Обсяг роботи обговорюється на початку проєкту, але є предметом для зміни.
  5. Під час розробки потрібно стежити за спалюванням бюджету, терміном релізу, що наближається, і завданнями, що залишилися, щоб усе найважливіше встигнути до терміну. Глибину опрацювання завдань і кінцевий список цих завдань можуть змінювати під час роботи прямо на плануваннях або стендапах.
  6. Ризики діляться порівну: розробники зобов’язуються поставити цінність у термін і бюджет, а замовник намагається вибрати/обрізати завдання, виходячи з пріоритетів бізнесу і поточної ситуації.

Внутрішня якість системи стає дуже важливою, тому що обсяг робіт може змінитися, при цьому термін і бюджет рухати ніхто не збирається. Тому код, тести, внутрішній дизайн, архітектура й автоматизація мають бути високої якості, мати гнучкість і, зрештою, допомагати швидко підлаштовуватися під будь-які зміни.

Внутрішня якість системи – це те, як ПЗ влаштовано всередині. Зовні софт може мати гарний вигляд і навіть працювати непогано, але всередині може складатися з одних “милиць”, макаронного коду, крихких інтеграцій, розроблятися без тестів і працювати без належного рівня моніторингу. Низька якість загрожує уповільненням розробки та підвищенням вартості підтримки. Високою якістю можна вважати, наприклад, відсутність технічного боргу й успішне проходження коду через метрики SonarQube.

Корінь проблеми

Чому сформувалися саме такі три комбінації? Чому не можна зафіксувати все? Адже найпростіше – зафіксувати бюджет, обсяг робіт, дату релізу і внутрішню якість системи, підписати договір (якщо замовник внутрішній, то пройти процедуру узгодження в стейкхолдерів) і зробити роботу з точним попаданням у всі чотири величини. Але, як показує практика, є фундаментальна проблема, яка не дає з легкістю пройти цей шлях без спотворень.

Ні в кого не виникає проблем із розрахунком бюджету, доволі легко порахувати дату релізу і є безліч метрик і чеклистів, щоб задати конкретний рівень якості IT-продукту. Це все просто, якщо ви можете точно оцінити обсяг робіт. Іншими словами, якщо є детальний список завдань і точна оцінка цього обсягу робіт, то інші три величини рахуються легко. І навпаки, якщо точної оцінки немає, то інші величини теж будуть неточні, тому що ґрунтуються на оцінці обсягу робіт.

З оцінкою обсягу робіт завжди проблеми, тому що немає жодної методики оцінки, яка б працювала з прийнятною точністю. Усі методики спираються на попередній досвід команди, яка робила схожі речі, що в підсумку означає неточності, тому що люди неточні: емоційні, оптимістичні, забудькуваті. Відсутність методики точного оцінювання – перший фактор, що заважає нам потрапляти в оцінку обсяг робіт.

Під час роботи над IT-продуктом змінюються: список завдань, які треба зробити, глибина їхнього опрацювання, підхід до проєктування системи. Це відбувається під впливом зовнішнього середовища: зміни на ринку, зміни в стратегії компанії, зміни в політиці всередині компанії, зворотний зв’язок від користувачів, нові вступні дані від тих, хто на етапі аналітики промовчав, а надалі вирішив висловитися, і т. д. Наша неможливість впливати на зовнішні впливи – другий фактор, що заважає від самого початку потрапити в оцінку.

Третій фактор полягає в тому, що немає критеріїв для визначення досягнення повноти при описі обсягу робіт. Написання ТЗ неможливо закінчити, його можна тільки припинити.

Треба застерегти, що все це справедливо, якщо ви працюєте в досить складній області: за Cynefin framework це області Complex і Complicated. Якщо ж ваш проєкт потрапляє в Obvious і водночас він досить короткий, то обсяг роботи ви, найімовірніше, оціните дуже точно.

Отже, ми маємо, що корінь проблеми в неточній оцінці обсягу робіт і практичній неможливості зробити цю оцінку точною, тому:

  • У Fixed price проєктах жертвують внутрішньою якістю системи, адже потрапити в оцінку з трьома фіксованими вершинами майже неможливо. Або в тих же Fixed price проєктах перезакладають у бюджет стільки ризиків, щоб покрити взагалі будь-які неточності оцінки, що є неефективним.
  • У T&M легко піти в неефективне управління ресурсами, адже постійно відстежувати роздмухування скоупа й обрізати його досить складно. Потрібні правильні інструменти і дуже сильні Product Owner’и.
  • FFF заздалегідь приймає, що обсяг роботи не передбачити, але при цьому “забиває кілочки” на терміні та бюджеті, щоб уникнути проблем T&M.

А може взагалі не оцінювати?

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

Якщо коротко, то ми організовуємо процес розробки так, щоб максимально ефективно проводити завдання від етапу ідеї до викочування в прод і при цьому зберігати високу внутрішню якість. Організовувати процес пропонують за Kanban з відстеженням метрик обробки потоку і особливою увагою до поліпшення процесу доставки нових фіч. Передчасні оцінки вважаються шкідливими, оцінка і груммінг беклога – втрата часу.

Я двома руками за цей підхід. Він мені подобається, як інженеру і як керівнику. Але життя так влаштоване, що власникам бюджету потрібна оцінка, хоча б на перших етапах роботи, хоча б приблизна. У Byndyusoft ми іноді переходимо до #NoEstimates, але тільки після доволі тривалих стосунків із замовником і відбувається це далеко не завжди.

FFF – баланс гнучкості та передбачуваності

Оцінки, хоч і псують життя і є втратами часу, але без них складно починати роботу. При цьому зрозуміло, що жодна оцінка не буде точною. Виходить, що найкращий варіант – зафіксувати термін і бюджет, щоб бізнес зміг із цим жити, а обсяг роботи залишити плаваючою величиною.

Окрім цього, замовник і виконавець повинні домовитися, що в кожен момент часу команда займається тільки найважливішими і потрібними завданнями, а замовник приділяє час на те, щоб стежити в динаміці за вибором пріоритетів.

Уперше я побачив опис FFF у книзі Getting Real від 37signals у розділі Fix Time and Budget, Flex Scope. Наразі в моїй компанії це найпопулярніший підхід до роботи, ним задоволені і замовники, і ми.

Внутрішня якість системи

Як я писав вище, працювати за FFF можна, якщо в компанії є компетентні розробники, які здатні забезпечити високу внутрішню якість системи. Зазвичай це досягається автоматизацією всього і вся, складанням чеклистів із найкращими практиками, постійним рев’ю коду та архітектури, усіма видами тестування і, найголовніше, набором правильних людей у команду.

Чому не варто забувати про внутрішню якість, написано в блозі Мартіна Фаулера у статті Is High Quality Software Worth the Cost?

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

Якщо ви хочете працювати за FFF, то закладіть критерії якості в контракт, щоб зафіксувати їх напевно.

Мотивація замовника і виконавця

Робота за FFF дає правильну мотивацію з боку замовника і виконавця. На відміну від Fixed Price, де замовник і виконавець спілкуються через інтерфейс контракту, і на відміну від T&M, де замовник може втратити межі та витратити більше, ніж треба; у FFF усім доводиться вкладатися в комунікації та “жити” у проєкті, щоб зробити найважливіше й при цьому задовольнити умови контракту.

Обираємо FFF

Fixed price і T&M мають свої переваги в певних контекстах:

  1. Якщо ви берете участь у тендері та зобов’язуєтеся виконати конкретну роботу за обумовлений час і гроші, водночас комунікація здебільшого вибудувана через договір підряду, найімовірніше, найкращим варіантом буде Fixed price.
  2. Якщо замовник точно знає, що йому потрібно, і вміє ефективно вибудовувати процес роботи, то йому достатньо купити ресурси з T&M і розпоряджатися ними на свій розсуд.

Проте, за інших рівних умов ми намагаємося вибирати FFF. Цей підхід здається найбільш збалансованим: він знижує ризики замовника і виконавця, створює потрібну мотивацію з обох сторін і піклується про внутрішню якість системи.

Додати коментар