Kedysi bol Crossuite len jednoduchý kalendár s možnosťou objednania sa k doktorovi. Teraz je to digitálna multidisciplinárna platforma s viac ako 10 000 odborníkmi v 13 krajinách. S rastom projektu sa rozširoval aj náš tím. Na začiatku nám stačil jeden vývojár a jeden klient. Dnes pracuje na Crossuite 45 ľudí. V určitom bode nášho fungovania sme si ale uvedomili, že stretnutia už nie sú v časovom limite. Že transparentnosť nie je taká, ako bývala a ľudia sú menej zapojení a proaktívni. Že ich je priveľa a preto je náročné ich zosynchronizovať. Nastal teda čas na škálovanie procesov.
Čo znamená pojem škálovateľnosť?
Definícia sa mení v závislosti od toho, s čím ju spájame. Vo všeobecnosti ale ide o schopnosť procesu, siete, softvéru alebo organizácie zvládnuť zvýšené pracovné zaťaženie alebo rastúce požiadavky bez výrazného zníženia výkonu, efektivity alebo kvality. Výhodou škálovateľného celku je, že sa prispôsbuje potrebám a požiadavkám svojich používateľov alebo klientov.
Na projekte Crossuite vyvíjáme produkt prostredníctvom Scrumu. Je to agilný rámec, čo nám proste sedí. Keď sme začali vnímať potrebu zmeny procesov vývoja, nepýtali sme sa teda, za čo Scrum vymeníme. Skôr sme riešili, ako ho rozvinieme do takej podoby, aby zvládol väčšie množstvo ľudí, požiadaviek a zložitejšie závislosti medzi funkcionalitami.
Našim cieľom bolo dopracovať sa k takému spôsobu vývoja, v ktorom bude tím schopný naďalej fungovať dobre, doručovať pravidelne a plniť business požiadavky. A to bez ohľadu na to, že dochádza k nárastu v jeho veľkosti alebo v objeme požiadaviek.
Škalovateľných frameworkov existuje viacero. Patria medzi ne napríklad:
- Scaled Agile Framework (SAFe) (podľa prieskumu z roku 2021 ho používa až 37% užívateľov Scrumu)
- Nexus
- Large-Scale Scrum (LeSS)
- Scrum@Scale
My sme sa rozhodli pre Nexus.
Prečo práve Nexus?
Nexus u nás vyhral preto, lebo sa odvíja od samotného Scrumu. Znamená preto len malú zmenu oproti tomu, na čo sú ľudia u nás už zvyknutí. Tiež nám pri ňom nevzniká potreba nových rolí a všetky v ňom zahrnuté tímy pracujú na jednotnom produkte. Má jedného produkt ownera a jeden spoločný backlog.
Refinement meetingy, ktoré v Scrume nie sú oficiálnym eventom, sa v prípade Nexusu stali povinnými. To bolo pre nás tiež jedno z kritérií pri rozhodovaní. Potrebu spoločných refinement meetingov, kedy jednotlivé tímy diskutujú a ohodnocujú náročnosť požiadaviek vstupujúcich do vývoja v najbližšom šprinte, sme vyhodnotili ako nutnú. Rozhodlo sa tak na spoločnej retrospektíve, kde sme sa jednotne zhodli, že ich chceme a potrebujeme. Nexus zároveň umožňuje podporiť Scrum s Kanban boardom a neprekáža mu, keď sa tím nenachádza na jednej lokácii, čo sa stáva aj u nás.
Ako sa Nexus líši od samotného Scrumu?
Scrum diagram:
Nexus diagram:
Čo sa teda zmenilo?
Z pohľadu diagramu veľká zmena nenastala :) Z pohľadu reality ale boli rozdiely väčšie, hoci nijak výrazne neovplyvnili ľudí na projekte.
1. Menšie tímy
Veľké tímy sa rozdelili na menšie a k slovenským developerom sme pripojili vývojový tím v Ukrajine a v Belgicku. Dnes ich máme dokopy 7.
2. Pribudli Proxy Product Owneri
Zostal nám Product backlog aj jeden Product Owner, no doplnili ho dvaja Proxy Product Owneri. Áno, viem, nie je to ideálne riešenie. Pri Nexuse a Scrume by sme sa mali vyvarovať použitiu proxy. V našom prípade je ale náš Product Owner zároveň naším sponzorom, klientom a zakladateľom spoločnosti Crossuite :) Vďaka tomu sú nám pravidelne komunikované vízie, krátkodobé ciele, stratégie a úspechy/neúspechy na trhu. Nevýhodou je jeho občasná časová nedostupnosť.
V tíme sme preto dali hlavy dokopy a zhodli sa na tom, že výhoda detailného business pohľadu, pochopenia požiadaviek a ich komunikovania smerom k nám, prevyšuje negatívne situácie, ktoré môže medzirola Proxy Product Ownera priniesť.
3. Nový integračný tím
Okrem troch v Scrume existujúcich rolí nám pribudol aj Nexus integračný tím. Jedná sa o ľudí zodpovedných za zabezpečenie kompatibility práce jednotlivých Scrum tímov. Kontrolujú napríklad, či nám každý šprint pribudol spoločný nárast produktu, ktorý spĺňa cieľ šprintu. Tiež má na starosti edukovanie a usmernenie ľudí v jednotlivých Scrum tímoch.
Jeho hlavnou úlohou je teda zabezpečenie plynulého vývoja, odstraňovanie prekážok, usmerňovanie vzájomnej komunikácie a koučovanie ľudí v jednotlivých Scrum tímoch tak, aby boli schopní doručiť želaný spoločný výsledok a navzájom sa nebrzdili.
Nexus integračný tím je zložený z Product Ownera, Scrum Mastra a vhodných zástupcov Scrum tímov. Každý z členov by mal disponovať zručnosťami a znalosťami nevyhnutnými na efektívne riešenie akýchkoľvek problémov, ktorým by mohol Nexus čeliť. Zloženie integračného tímu Nexus sa môže časom meniť, aby odrážalo aktuálne potreby. V praxi to znamená, že Nexus daily Scrum meetingov sa môžu zúčastňovať vždy iní členovia tímu.
4. Upravené eventy
Nexus pridáva alebo rozširuje udalosti definované Scrumom.
a. Cross-tímový refinement
Nexus zavádza napríklad pojem Cross-tímový refinement, teda spresnenie a rozdelenie požiadaviek do menších zmysluplných celkov medzi zástupcami jednotlivých tímov. Produktový backlog sa preto musí rozložiť tak, aby boli závislosti identifikované medzi tímami odstránené alebo minimalizované.
Následne tento Cross-tímový refinement dopĺňaju tímove refinementy, kde už idú jednotlivé tímy viac do hĺbky. Pripravujú si vlastné user stories, ohodnocujú ich a definujú požiadavky, aby dosiahli stav „definition of ready“ a bolo možné ich plánovať.
b. Nexus plánovanie
Plánovanie dostáva v Nexuse formu Nexus plánovania. Zúčastňuje sa na ňom Nexus integračný tím a/alebo jednotliví zástupcovia Scrum tímov a Product Owner. Ich úlohou je skoordinovať všetky aktivity jednotlivých Scrum tímov pre nasledujúci šprint.
Výsledkom Nexus šprint plánovania je:
- cieľ Nexus šprintu – je v súlade s cieľom produktu a popisuje hodnotu, ktorú majú tímy ako celok doručiť na konci šprintu,
- cieľ šprintu pre každý Scrum tím – je v súlade s cieľom Nexus šprintu,
- jeden spoločný Nexus šprint backlog – predstavuje prácu všetkých tímov a sprehľadňuje závislosti medzi tímami,
- šprint backlog pre každý Scrum tím – sprehľadňuje prácu, ktorú budú vykonávať pre dosiahnutie ich definovaného cieľa.
Nexus plánovania sa nezvyknú zúčastňovať všetci členovia tímu a preto už samotné vytváranie šprint backlogu pre každý Scrum tím prebieha na samostatnom tímovom plánovaní.
c. Nexus daily Scrum
Daily Scrum sa u nás začína Nexus daily Scrumom, kde si prediskutujeme, ako jednotlivé tímy napredujú v súvislosti s plnením cieľa šprintu. Rozprávame sa spolu o rôznych prekážkach a závislostiach, ktoré medzi jednotlivými tímami mohli nastať. Následne na tímovom daily Scrume potrebné situácie a riešenia tlmočíme. Podľa toho sa upravuje plán práce tímu na daný deň.
d. Nexus šprint review
Nexus šprint review je jediným eventom, ktorý nemá pokračovanie v tímoch.
Počas tohto eventu tím prezentuje výsledky svojej práce kľúčovým zainteresovaným stranám. Diskutuje sa tu aj o pokroku, ktorý bol dosiahnutý smerom k produktovému cieľu, a to aj v prípade, že nie je možné odprezentovať všetky dokončené práce. Na základe týchto informácií sa ďalej rieši, čo by mal Nexus tím urobiť inak, lepšie, a čo naopak bolo výborné alebo dokonca nad rámec. Produktový backlog môže byť upravený tak, aby odrážal tieto diskusie.
Súčasťou šprint review je demo, kde môže byť prezentujúcim ktokoľvek z tímu, kto na danej funkčnosti robil. Považujeme to za malú show, kde sa spoločná práca jednotlivých tímov prezentuje aj takým zainteresovaným stranám, s ktorými inak Nexus tím neprichádza do kontaktu.
Záverom šprint review je krátka vízia nadchádzajúcich business cieľov od nášho Produkt Ownera. Vďaka tomu sa nám lepšie chápe a plánuje ďalší šprint.
e. Nexus šprint retrospektíva
Nexus šprint retrospektíva prebieha opäť cez viaceré úrovne.
Najskôr sa stretnú jednotliví zástupcovia Scrum tímov, Scrum Master, Product Owner a diskutujú o problémoch, ktoré jednotlivé tímy blokujú, a ako ich to navzájom ovplyvňuje.
Nasledujú samostatné tímové retrospektívy, kde sa riešia identifikované problémy (ak sa to daného tímu týka). Rovnako prebieha aj tímová retrospektíva zameraná len na tento konkrétny tím.
Ak si to situácia vyžaduje, pokračuje ešte stretnutie zástupcov tímov, kde boli identifikované problémy v rámci prvej úrovne, prípadne pre nich vyplynuli nové problémy z tímových retrospektív. Zadefinujú sa akčné body na ich riešenie, prípadne ich monitorovanie a adaptácia.
Retrospektíva uzatvára šprint a nasleduje nové plánovanie.
Porovnanie Scrumu a Nexusu tabuľkovo:
Scrum | Nexus | |
Tím | 1 | 3 – 9 |
Role | Vývojári, Product Owner, Scrum Master | Vývojári, Product Owner, Scrum Master, Nexus integračný tím. |
Eventy | šprint
refinement (nepovinný) plánovanie šprintu daily Scrum šprint review šprint retrospektíva | šprint
Cross-tímový refinement (povinný) Nexus plánovanie šprintu Nexus daily Scrum Nexus šprint review Nexus šprint retrospektíva |
Artifacts a záväzky | Produkt backlog/Záväzok: Produktový cieľ
šprint backlog/Záväzok: Cieľ šprintu Prírastok produktu/Záväzok: Definition of done | Product backlog/Záväzok: Produktový cieľ
Nexus šprint backlog/Záväzok: Nexus cieľ šprintu Integrovaný prírastok produktu/Záväzok: Definition of done |
Od zavedenia Nexusu nám aktuálne prebieha šprint číslo 9. Šprinty máme trojtýždňové a jednou z najväčších výziev bolo zladiť multi-jazyčné tímy, ktoré sa zároveň nenachádzajú na tej istej lokácii.
Príkladom je nový tím s členmi z 3 krajín na dvoch svetových kontinentoch a 9 hodinovým časovým rozdielom. Okrem tejto komplikácie sa v ňom navyše nachádzalo aj zopár ľudí, ktorí nemali skúsenosť s agilným vývojom. Prvé tri šprinty sme sa preto zamerali najmä na koučovanie ľudí a získavanie vzájomnej dôvery. Dnes už bežia procesy hladko.
Ako hodnotia zmeny moji kolegovia?
Erik (architekt):
„Pre mňa je najväčším prínosom, že sú kratšie meetingy, keďže v core tíme sme iba dvaja až štyria. Na druhej strane je ale tých meetingov trochu viac, keďže pribudlo Nexus plánovanie, retro a refinement. Stále je to však ušetrenie času. Ďalšiu výhodu vidím v tom, že sa ľudia viac koncentrujú na svoje úlohy, a sú menej rozptyľovaní úlohami z iných tímov.“
Aďa (QA):
„Plusy:
- Standupy a všetky meetingy sú viac k veci, sú podrobnejšie a dajú sa lepšie prispôsobiť potrebám ľudí v tíme (či už časovo alebo obsahovo).
- Ľudia užšie spolupracujú a komunikujú, doťahujú veci. Možno aj preto, že nemajú na koho preniesť zodpovednosť, napríklad čo sa týka presne definovaných features a user stories.
Minusy:
- Rivalita medzi tímami, napríklad vety ako: „Toto je váš bug, nie náš.“
- Menší prehľad o projekte celkovo, a o tom, čo sa robí v inom tíme.“
Maťo (proxy product owner):
„V „obyčajnom“ Scrume sme boli ako tím ostrieľaní a preto bol prechod na Nexus lahoda. Mirka to potrebovala vysvetliť asi len štyrikrát. Potom nasledovalo rozdeľovanie do tímov a zodpovednosti. Výsledok je, že teraz všetko beží výborne, aj keď máme zrazu viacerých “proxy product ownerov”. V zásade mám pocit, že projekt ako taký nie je zložitejší, hoci je ťažké uveriť, že tomu tak naozaj je.“
A ako to hodnotím ja z pozície Scrum mastra?
Najťažšia úloha bola na začiatku. V hlave som mala kopu otázok a stáli ma zopár nocí spánku :) Ako rozdelíme ľudí do tímu? Budeme mať komponentové tímy alebo feature tímy? Koľko ich bude? Určite potrebujeme proxy product ownerov alebo to zvládne náš zákazník ako product owner sám?
Veľmi si cením proaktivitu a zainteresovanosť ľudí v core tíme, s ktorými sme spoločne tieto otázky riešili. Popísali sme si problémy, čo ideme vyriešiť, a ja som im predostrela možné riešenia. Rozdelenie ľudí, komunikáciu s nimi a aj samotné koučovanie na Nexus sme potom riešili spoločne.
Prirovnala by som to k domu. Ak je postavený na dobrých základoch, aj jeho prerobenie či pridávanie poschodí a nadstavieb je ľahšie. Ďakujem ľuďom, ktorí so mnou boli pri týchto základoch, a stavajú náš Crossuite dom úspešne naďalej :) A čo bude po Nexuse? Neviem. Ale viem, že ak bude treba ďalšiu zmenu procesov, zvládneme ju spoločne.