Lekce 15 - Metodika SCRUM
V minulé lekci, Úvod do vývoje softwaru, jsme si uvedli běžné problémy při vývoji softwaru a jejich možné řešení. Nyní už také víme, jaký je rozdíl mezi tradiční a agilní metodikou.
V dnešní lekci probereme metodiku SCRUM. Jedná se o agilní metodiku, která se dá aplikovat na vývoj softwaru, ale i na další projekty s různým zaměřením. Tato metodika je velmi populární a dokazuje to až 40 % společností, které ji pro své projekty využívají.
Tato lekce je součástí kurzu Metodiky vývoje softwaru.
Metodika SCRUM
SCRUM je cizí slovo pocházející z anglického sportu rugby, kde výraz scrum (mlýn), značí hráčskou formaci. Název byl takto zvolen, protože dává důraz na týmovou spolupráci. Toto je důležité, protože při řízení projektů pomocí SCRUMu existují malé týmy (kolem 10 lidí v každém týmu), které rozkouskovávají svou práci na úkoly zvládnutelné v časově daných iteracích (tyto iterace se nazývají sprinty). Členové týmů spolu velmi blízce spolupracují. Tomu je docíleno například fyzickou kolokací na pracovišti, blízkou spoluprací online, nebo denními Face-To-Face meetingy. Metodika SCRUM uznává přístup, ve kterém platí, že problém nemůže být plně pochopen, nebo definován předem. Soustředí se na to, jak maximalizovat týmovou schopnost dodávat výsledky rychle, jak rychle reagovat na nové vznikající požadavky a jak se adaptovat na nově vznikající technologie a změny na trhu.
Role v týmu
Ve SCRUM metodice existují 3 hlavní role:
- SCRUM master – Tento člen je zodpovědný za odstranění překážek v týmu, které by bránily dokončení úkolu. SCRUM master není tradiční projektový manažer nebo team leader. Má za úkol být jakýmsi prostředníkem mezi svým týmem a nežádoucími vlivy. To znamená, že tým usměrňuje a dohlíží nad tím, aby se SCRUM proces využíval tak, jak bylo naplánováno a tým dodržuje předem dohodnuté pracovní procesy.
- Product owner – Má být jakýmsi hlasem zákazníka. Zaměřuje se hlavně na byznys stránku projektu a neřeší technické záležitosti (jakým způsobem má být splnění požadavku docíleno). Jeho úkolem je prezentovat to, co zákazník od svého produktu chce a co by mělo být výsledkem vývoje. Je velmi důležité, aby Product owner rozuměl oběma stranám. Musí být schopný plně porozumět potřebám zákazníka a tyto potřeby poté přetlumočit svému týmu.
- Team member (také Development team) – Klasický pracant. Je to člen v týmu, který plní předem stanovené úkoly, které vedou ke zvýšeni hodnoty výstupu v každém sprintu. Každý Team member si bere úkoly z "nástěnky", na kterých pracuje tak dlouho, dokud je nesplní. Teprve potom si z nástěnky mohou vzít další úkol. Těchto členů je ve SCRUM týmu kolem sedmi. Tito členové týmu by se neměli příliš měnit, protože postupem času "dospívají" a lépe si rozumí. To je velmi důležité pro týmovou spolupráci:

SCRUM Development Process
Nastínili jsme si, o čem je SCRUM a že každý v týmu má svou roli. Jak ale takovýto vývoj ve SCRUMu vypadá? Podobně jako u metodiky Rapid Application Development se všechno točí dokola. Ze začátku přijde "hlavní úkol", kterého by mělo být na konci dosaženo. Tým (může to být i více týmů) začne pracovat na části úkolu. Tu část poté prezentuje zákazníkovi, zákazník nám dá feedback a nové požadavky. Toto se opakuje stále dokola, dokud není hotovo. Takovéto běhy se ve SCRUM metodice nazývají sprinty:

Běh na krátkou trať
Sprint je časový úsek, který trvá pevně stanovený čas (často jsou to dva týdny) a ve kterém se pracuje na splnění daných požadavků. Na začátku sprintu probíhá plánování, ve kterém se probírá rozsah práce, požadavky a cíl, kterého se má během sprintu dosáhnout. Během první poloviny takového plánování celý SCRUM tým vybírá požadavky, ve které věří, že mohou být splněny. V druhé polovině dochází k analýze práce, která je potřebná pro splnění předem diskutovaných požadavků. Jakmile je tato práce vyhodnocena, může dojít k vrácení některých požadavků do takzvaného pomyslného pytle, protože tým nevěří, že by dokázal tyto požadavky splnit v daném sprintu.
Schůzky každý den?
Během sprintu dochází k takzvaným Daily Scrumům, což jsou vlastně denní meetingy. Tyto meetingy by se měli konat vždy na stejném místě a ve stejný čas a trvají přesný stanovený čas (přibližně 15 minut). Tyto meetingy začínají přesně na čas, i když někteří z týmu nejsou přítomni. Všichni členové Team members musí na meeting přijít připravení. Vítán je každý, avšak vystupovat by měli především členové Team members. Na každém meetingu každý z Team members odpovídá na 3 důležité otázky:
- Čím jsem včera přispěl ke splnění našeho úkolu?
- Co plánuji udělat dneska, abych přispěl ke splnění našeho úkolu?
- Vidím nějaké překážky, které by mohly mě nebo členovi týmu zabránit ve splnění našeho úkolu?
Jakákoliv překážka zmíněná na tomto meetingu by měla být zachycena SCRUM masterem a předána předem dohodnutému člověku, který by měl během dne (mimo tento denní meeting) pracovat na vyřešení. Během meetingu by neměla nastat žádná detailní diskuse. Denní meetingy slouží pouze k zodpovězení výše zmíněných otázek. Jakmile daily scrum skončí, členové týmu se mohou sejít a dále prodiskutovat věci zmíněné na daily scrumu více do hloubky. Těmto post daily scrum schůzkám se také říká after party.
Pro projekty, kde na jednom produktu pracuje více SCRUM týmů se pořádá takzvaný Scrum Scrumů. Je to meeting, na kterém se sejdou zástupci jednotlivých týmů a podobně, jako na klasickém daily scrumu, prezentují, co jejich tým dokázal.
Po úspěšném závodě není vyhráno
Na konci sprintu se dějí dvě události:
- Sprint review meeting a
- Sprint retrospective meeting.
Sprint review meeting v sobě obsahuje představení úspěšně dokončené práce a práce, které byla plánovaná, ale nesplněná. Dále se prezentují výsledky práce zákazníkům (většinou nějaká demo verze, podobně jako u metodiky Rapid Application Development) a probírá se, na čem by se mělo pracovat dále:

Na Sprint retrospective meetingu se členové týmu ohlížejí za právě zdolaným sprintem. Hledají a souhlasí na opatřeních, které mají za úkol vylepšit stávající procesy. Při tomto procesu nastávají tři otázky:
- Co během sprintu šlo dobře?
- Co během sprintu nešlo dobře?
- Co by mohlo být zlepšeno, aby byla produktivita v dalším sprintu lepší?
Díky své roli SCRUM master tento meeting velice zjednodušuje, jelikož je jeho prací dávat během sprintu na tyto věci pozor.
Závěr
SCRUM metodika je moderní řešení pro vývoj softwaru, ale také metodikou pro řešení jiných projektů. Největší roli v ní hraje tým, ve kterém má každý člen pevně přiřazenou roli. To může být největší výhoda, ale také největší hrozba, protože tým je jenom tak silný, jako jeho nejslabší článek.
V následujícím kvízu, Kvíz - Testování softwaru dle ISTQB, si vyzkoušíme nabyté zkušenosti z kurzu.
