Scrum — це гнучкий фреймворк для управління проєктами в умовах невизначеності: короткі ітерації, фокус на командній роботі та постійному вдосконаленню допомагають швидко надавати цінність користувачам. Найчастіше Scrum застосовують у розробці ПЗ, але він працює в будь-яких галузях, де важлива адаптація та швидкий цикл зворотного зв'язку.
Історія та розвиток Scrum
Слово «Scrum» запозичене з регбі: воно позначає сутичку, де команда рухається разом і координує зусилля. Цей образ підкреслює важливість взаємодії та спільного розв'язання задач.
Ідеї, близькі до Scrum, сягають виробничих практик Toyota з їхньою увагою до безперервного вдосконалення та зменшення втрат. На мислення вплинув також цикл OODA (Observe, Orient, Decide, Act), запропонований Джоном Бойдом, який підкреслює швидкий цикл спостереження, орієнтації та дії.
Сам підхід був вперше описаний Хіротака Такеучі та Ікудзиро Нонакою в статті «The New Product Development Game» (Harvard Business Review, 1986): автори зауважили, що невеликі крос-функціональні команди досягають кращих результатів і порівняли їхню роботу з регбійною схемою.
На початку 1990-х Кен Швабер і Джефф Сазерленд незалежно розвивали схожі ідеї, а у 1995 році на конференції OOPSLA представили формалізований фреймворк Scrum. У 2001 році Швабер разом із Майком Бідлом випустив книгу «Agile Software Development with Scrum», докладно описав практики методу. З 2009 року офіційне визначення міститься в «The Scrum Guide», який регулярно оновлюють Швабер і Сазерленд.
Основні принципи Scrum
У основі Scrum лежать три принципи, що забезпечують прозорість та здатність до швидкої адаптації:
- прозорість;
- інспекція;
- адаптація.
Ці принципы підтримуються п'ятьма цінностями: відданість, зосередженість, відкритість, повага та сміливість. Команда, яка живе цими цінностями, працює продуктивніше та швидше досягає цілей.
Ролі Scrum
У Scrum є три ключові ролі, кожна з яких має свої завдання та зону відповідальності, що допомагає команді самоорганізовуватись та ефективно доставляти інкременти:
Власник продукту (Product Owner)
Власник продукту зв'язує команду з зацікавленими сторонами та відповідає за максимізацію цінності продукту. Він керує беклогом продукту — упорядкованим списком вимог — та вирішує, які елементи є пріоритетнішими. Власник продукту забезпечує ясність та пріоритети для команди.
Скрам-майстер (Scrum Master)
Скрам-майстер діє як лідер-служба: фасилітує процеси, допомагає усувати перешкоди та навчає команду й організацію принципам Scrum. Він не керує людьми напряму, а створює умови для їх ефективної роботи та постійного вдосконалення.
Команда розробки
Команда розробки — крос-функційна та самоорганізована група спеціалістів, які створюють інкремент продукту. У складі зазвичай від 3 до 9 людей; команда сама вирішує, як виконати роботу, і несе колективну відповідальність за результат спринта.
Артефакти Scrum
Артефакти забезпечують прозорість та служать основою для інспекції та адаптації:
Беклог продукту (Product Backlog)
Динамічний, упорядкований список усіх відомих вимог до продукту: функціональних та нефункціональних, покращень та багфіксів. Елементи ранжуються за цінністю, а список постійно уточнюється за появи нової інформації та зворотного зв'язку.
Беклог спринта (Sprint Backlog)
Набір обраних для поточного спринта елементів беклогу продукту та план їх доставки. Команда розробки сама оцінює, що можна зробити за спринт, та розбиває роботу на конкретні завдання. Беклог спринта — план команди на ітерацію, який команда може корегувати протягом спринта.
Інкремент продукту (Product Increment)
Сума всіх завершених елементів беклогу продукту за поточний та попередні спринти. Інкремент має бути потенційно готовим до випуску: функціональним, протестованим та відповідати критеріям якості. Його демонструють зацікавленим сторонам наприкінці спринта.
Критерій готовності (Definition of Done, DoD)
Визначення стану інкремента, при якому його вважають завершеним. DoD — спільний стандарт команди: код написаний, протестований, задокументований, інтегрований і готовий до релізу. Дотримання DoD забезпечує єдине розуміння «готовності» та підтримує якість.
Події Scrum
За розкладом за часом події створюють ритм, допомагають інспектувати результат та корегувати роботу:
Планування спринта
Відкриває спринт: вся Скрам-команда формулює ціль спринта та обирає елементи з беклогу продукту. Команда розробки деталізує обрані елементи в завдання та формує беклог спринта. Для місячного спринта час цієї зустрічі зазвичай не перевищує восьми годин.
Щоденний скрам
Коротка п’ятнадцятихвилинна зустріч команди розробки в одне й те саме час і місце. Мета — синхронізувати дії та скласти план на найближчі 24 години: що зроблено, що заплановано, які перешкоди з'явилися.
Огляд спринта
Відбувається наприкінці спринта: команда демонструє інкремент та разом із зацікавленими сторонами обговорює подальший напрям розвитку продукту та можливі зміни в беклозі.
Ретроспектива спринта
Після огляду команда розглядає свій процес, обговорює, що спрацювало, що можна поліпшити та формує план покращень на наступний спринт. Для місячного спринта ретроспектива зазвичай не довша трьох годин.
Допоміжні практики
Користувацькі історії
Короткі описання функціональності з точки зору користувача, часто за шаблоном «Як <тип користувача>, я хочу <дію>, щоб <отримати результат>». Вони допомагають орієнтуватися на цінність для кінцевого користувача.
Оцінка трудомісткості
Часто використовують відносні оцінки, наприклад історії в очках (story points). Метод «покер-планування» з картами Фібоначчі допомагає команді дійти до консенсусу та зменшити упередження під час оцінки.
Діаграма згоряння задач
Візуальний інструмент для відстеження залишкового обсягу роботи у часовій перспективі. Вона показує прогрес і допомагає оперативно помітити відхилення від плану.
Scrum-дошка
Фізична або електронна дошка з колонками «Зробити», «У процесі», «Готово», на якій переміщуються картки завдань. Дошка робить хід робіт наочним та пришвидшує комунікацію в команді.
Швидкість команди
Метрика, що вимірює обсяг роботи (зазвичай у історіях в очках), який команда завершує за спринт. Швидкість допомагає прогнозувати обсяг роботи в майбутніх ітераціях та використовується для планування, а не для оцінки окремих учасників.
Відміна спринта
Спринт може бути скасований, якщо його ціль втратила актуальність. Право на скасування має власник продукту, оскільки він відповідає за максимізацію цінності.
Масштабування Scrum
Коли над продуктом працює кілька команд, потрібна координація — різні підходи допомагають синхронізувати зусилля:
Scrum of Scrums
Представники команд (часто скрам-майстри) збираються регулярно, щоб обговорити прогрес, залежності та перешкоди між командами. Такі зустрічі дозволяють узгодити роботу кількох груп над одним продуктом.
Інші підходи
Існують більш формалізовані фреймворки для масштабування: LeSS, Nexus, SAFe та інші. Вони пропонують структуровані практики для координації десятків та сотень учасників у рамках одного проєкту.
Scrum та DevOps
Scrum та DevOps доповнюють один одного: Scrum пришвидшує створення інкрементів через короткі ітерації, а DevOps забезпечує автоматизовану та надійну доставку цих інкрементів у експлуатацію. Разом ці практики скорочують цикл зворотного зв'язку та допомагають швидше перевіряти гіпотези на ринку.
Виклики впровадження Scrum
Впровадження Scrum складне: часті помилки зводять користь нанівець. Одна з них відома як «ScrumBut» — коли застосовують лише частину практик та виправдовують це фразою «ми робимо Scrum, але...», наприклад пропускаючи ретроспективи або порушуючи регулярність щоденних зустрічей. Частковий підхід часто знижує ефективність і може дати гірші результати, ніж традиційні методи.
Інші проблеми — опір змінам, слабка залученість власника продукту, перетворення скрам-майстра на звичайного менеджера проекту та спроби трактувати Scrum як суворий набір правил замість гнучкого фреймворку. Успіх вимагає культурних змін, навчання та готовності експериментувати.
Переваги використання Scrum
При вірному застосуванні Scrum дає відчутні переваги:
- швидка поставка цінності;
- підвищена адаптивність;
- покращена якість продукту;
- висока залученість та мотивація команди;
- прозорість та передбачуваність;
- постійне вдосконалення.
Scrum — потужний інструмент для управління складними проєктами: за глибокого розуміння принципів та цінностей він допомагає командам створювати якісні продукти та швидко реагувати на зміни.