15. diel - Metodika SCRUM Nové
V minulej lekcii, Úvod do vývoja softvéru , sme si uviedli bežné problémy pri vývoji softvéru a ich možné riešenie. Teraz už vieme, aký je rozdiel medzi tradičnou a agilnou metodikou.
V dnešnej lekcii preberieme metodiku SCRUM. Ide o agilnú metodiku, ktorá sa dá aplikovať na vývoj softvéru, ale aj na ďalšie projekty s rôznym zameraním. Táto metodika je veľmi populárna a dokazuje to až 40 % spoločností, ktoré ju pre svoje projekty využívajú.
Táto lekcia je súčasťou kurzu Metodiky vývoja softvéru.
Metodika SCRUM
SCRUM je cudzie slovo pochádzajúce z anglického športu rugby, kde výraz scrum (mlyn), značí hráčsku formáciu. Názov bol takto zvolený, pretože dáva dôraz na tímovú spoluprácu. Toto je dôležité, pretože pri riadení projektov pomocou SCRUMu existujú malé tímy (okolo 10 ľudí v každom tíme), ktoré rozhryzujú svoju prácu na úlohy zvládnuteľné v časovo daných iteráciách (tieto iterácie sa nazývajú šprinty). Členovia tímov spolu veľmi blízko spolupracujú. Tomu je docielené napríklad fyzickou kolokáciou na pracovisku, blízkou spoluprácou online, alebo dennými Face-To-Face meetingmi. Metodika SCRUM uznáva prístup, v ktorom platí, že problém nemôže byť plne pochopený, alebo definovaný vopred. Sústredí sa na to, ako maximalizovať tímovú schopnosť dodávať výsledky rýchlo, ako rýchlo reagovať na nové vznikajúce požiadavky a ako sa adaptovať na novo vznikajúce technológie a zmeny na trhu.
Rola v tíme
V SCRUM metodike existujú 3 hlavné role:
- SCRUM master – Tento člen je zodpovedný za odstránenie prekážok v tíme, ktoré by bránili dokončeniu úlohy. SCRUM master nie je tradičný projektový manažér alebo team leader. Má za úlohu byť akýmsi prostredníkom medzi svojim tímom a nežiaducimi vplyvmi. To znamená, že tím usmerňuje a dohliada nad tým, aby sa SCRUM proces využíval tak, ako bolo naplánované a tím dodržiava vopred dohodnuté pracovné procesy.
- Product owner – Má byť akýmsi hlasom zákazníka. Zameriava sa hlavne na biznis stránku projektu a nerieši technické záležitosti (akým spôsobom má byť splnenie požiadavky docielené). Jeho úlohou je prezentovať to, čo zákazník od svojho produktu chce a čo by malo byť výsledkom vývoja. Je veľmi dôležité, aby Product owner rozumel obom stranám. Musí byť schopný plne porozumieť potrebám zákazníka a tieto potreby potom pretlmočiť svojmu tímu.
- Team member (tiež Development team) – Klasický pracant. Je to člen v tíme, ktorý plní vopred stanovené úlohy, ktoré vedú k zvýšeniu hodnoty výstupu v každom šprinte. Každý Team member si berie úlohy z " nástenky ", na ktorých pracuje tak dlho, kým ich nesplní. Až potom si z nástenky môžu vziať ďalšiu úlohu. Týchto členov je v SCRUM tíme okolo siedmich. Títo členovia tímu by sa nemali príliš meniť, pretože postupom času "dospievajú" a lepšie si rozumejú. To je veľmi dôležité pre tímovú spoluprácu:
SCRUM Development Process
Načrtli sme si, o čom je SCRUM a že každý v tíme má svoju rolu. Ako ale takýto vývoj v SCRUMe vyzerá? Podobne ako pri metodike Rapid Application Development sa všetko točí dookola. Zo začiatku príde "hlavná úloha", ktorú by sa malo na konci dosiahnuť. Tím (môže to byť aj viac tímov) začne pracovať na časti úlohy. Tú časť potom prezentuje zákazníkovi, zákazník nám dá feedback a nové požiadavky. Toto sa opakuje stále dookola, kým nie je hotové. Takéto behy sa v SCRUM metodike nazývajú šprinty:
Beh na krátku trať
Šprint je časový úsek, ktorý trvá pevne stanovený čas (často sú to dva týždne) av ktorom sa pracuje na splnení daných požiadaviek. Na začiatku šprintu prebieha plánovanie, v ktorom sa preberá rozsah práce, požiadavky a cieľ, ktorý sa má počas šprintu dosiahnuť. Počas prvej polovice takého plánovania celý SCRUM tím vyberá požiadavky, v ktorej veria, že môžu byť splnené. V druhej polovici dochádza k analýze práce, ktorá je potrebná na splnenie vopred diskutovaných požiadaviek. Akonáhle je táto práca vyhodnotená, môže dôjsť k vráteniu niektorých požiadaviek do takzvaného pomyselného vreca, pretože tím neverí, že by dokázal tieto požiadavky splniť v danom šprinte.
Schôdzky každý deň?
Počas šprintu dochádza k takzvaným Daily Scrumom, čo sú vlastne denné meetingy. Tieto meetingy by sa mali konať vždy na rovnakom mieste av rovnakom čase a trvajú presný stanovený čas (približne 15 minút). Tieto meetingy začínajú presne na čas, aj keď niektorí z tímu nie sú prítomní. Všetci členovia Team members musia na meeting prísť pripravení. Vítaný je každý, avšak vystupovať by mali predovšetkým členovia Team members. Na každom meetingu každý z Team members odpovedá na 3 dôležité otázky:
- Čím som včera prispel k splneniu našej úlohy?
- Čo plánujem urobiť dneska, aby som prispel k splneniu našej úlohy?
- Vidím nejaké prekážky, ktoré by mohli mne alebo členovi tímu zabrániť v splnení našej úlohy?
Pre projekty, kde na jednom produkte pracuje viac SCRUM tímov sa organizuje takzvaný Scrum Scrumov. Je to meeting, na ktorom sa stretnú zástupcovia jednotlivých tímov a podobne, ako na klasickom daily scrumu, prezentujú, čo ich tím dokázal.
Po úspešnom závode nie je vyhrané
Na konci šprintu sa dejú dve udalosti:
- Sprint review meeting a
- Sprint retrospective meeting.
Na Sprint retrospective meetingu sa členovia tímu obzerajú za práve zdolaným šprintom. Hľadajú a súhlasia na opatreniach, ktoré majú za úlohu vylepšiť existujúce procesy. Pri tomto procese nastávajú tri otázky:
- Čo počas šprintu išlo dobre?
- Čo počas šprintu nešlo dobre?
- Čo by sa mohlo zlepšiť, aby bola produktivita v ďalšom šprinte lepšia?
Záver
SCRUM metodika je moderné riešenie pre vývoj softvéru, ale aj metodikou pre riešenie iných projektov. Najväčšiu rolu v nej hrá tím, v ktorom má každý člen pevne priradenú rolu. To môže byť najväčšia výhoda, ale aj najväčšia hrozba, pretože tím je len taký silný, ako jeho najslabší článok.