W poprzednim artykule omawialiśmy, jak elementy Extreme Programming pomagają zarządzać jakością kodu i procesem developmentu. Potrzebny był nam nie tylko nowy proces, ale coś w rodzaju systemu odpornościowego: mechanizm, który nie leczy problemów po fakcie, tylko wcześniej rozpoznaje zagrożenia i wytwarza przeciwko nim „przeciwciała”. Takim systemem stały się dla nas praktyki Extreme Programming (XP).
Tym razem opowiemy o innej sytuacji. Gdy zespół Scrum pracuje w sprintach, ale w trakcie procesu pojawiają się pilne bugi, zmieniają się priorytety i dochodzą zadania ad-hoc. Czasem nie można odkładać ich do kolejnego sprintu. Ale jeśli dodawać je ponad to, co zostało już zaplanowane, zespół szybko traci fokus, osiągnięcie celu sprintu jest zagrożone, a obciążenie przestaje być transparentne.
I właśnie w takich przypadkach Kanban pomaga wzmocnić Scrum: zachować rytm pracy, zarządzać przepływem zadań i szybciej reagować na pilne zmiany.
Przyjrzymy się temu, co Scrum i Kanban mają ze sobą wspólnego, jak można wykorzystać Kanban wewnątrz frameworka Scrum i jakie problemy rozwiązuje to w praktyce.
Krótko o Scrum
Scrum to podejście do organizacji pracy w krótkich iteracjach, czyli sprintach.
W Scrum Team są trzy główne role:
- Product Owner;
- Scrum Master;
- Developers.
Na początku sprintu zespół planuje pracę (Sprint Planning), codziennie synchronizuje się podczas Daily Scrum, a na końcu przeprowadza Sprint Review i Sprint Retrospective.
Główna idea Scrum polega na pracy w stabilnym rytmie i regularnym dostarczaniu gotowego rezultatu.
Więcej o Scrum przeczytasz w Scrum Guide.
Krótko o Kanban
Kanban to metoda, która pozwala zarządzać przepływem zadań.
Praca jest widoczna na tablicy, gdzie każda kolumna odpowiada etapowi procesu: na przykład To Do, In Progress, Testing i Done.
Dla każdego etapu ustala się WIP-limity (Work In Progress) – ograniczenie liczby zadań, nad którymi można pracować jednocześnie.
Główna idea Kanban jest prosta: najpierw kończ to, co zostało rozpoczęte, a dopiero potem bierz nowe zadania. Więcej o Kanban przeczytasz w Kanban Guide.
Co wspólnego mają Scrum i Kanban
Mimo różnic Scrum i Kanban dążą do tych samych celów.
Oba podejścia pomagają:
- uczynić pracę transparentną;
- szybciej zauważać problemy;
- otrzymywać feedback;
- usprawniać proces;
- adaptować się do zmian.
Scrum nadaje rytm pracy, a Kanban pomaga zarządzać przepływem zadań w ramach tego rytmu.
Wdrożenie Kanbana w Scrumie
Kanban w Scrumie to nie zastępstwo dla frameworka Scrum, ale sposób na zwiększenie jego elastyczności.
Oficjalne rekomendacje Scrum.org dotyczące tego, jak prawidłowo wbudować Kanban w Scrum, można przeczytać tutaj, a poniżej opowiemy, jak zrobiliśmy to my.
Jak Kanban działa w Scrumie w praktyce
Scrum zachowuje podstawę procesu, a Kanban dodaje transparentność przepływu i kontrolę obciążenia.
Co zostaje ze Scruma
- role w zespole;
- sprinty;
- Sprint Planning;
- Daily Scrum;
- Sprint Review;
- Sprint Retrospective.
Co dodaje Kanban
- tablica Kanban;
- WIP-limity;
- model pracy pull;
- metryki przepływu: lead time, cycle time, throughput.
Role i wydarzenia
Zachowujemy role i wydarzenia Scrum – sprinty, planowanie, codzienne spotkania, przegląd i retrospektywę – ale uzupełniamy proces narzędziami Kanban.
Tablica Kanban
Używamy tablicy z kolumnami, które odzwierciedlają etapy procesu pracy, na przykład: To Do, In Progress, Testing (może być dodatkowo uszczegółowiona na testowanie prowadzone na różnych środowiskach), Ready for Production, Done. Daje to pełną widoczność statusów wszystkich zadań w dowolnym momencie.
WIP-limity
Dla każdej kolumny ustalamy maksymalną liczbę zadań, które można jednocześnie wziąć do pracy. Zapobiega to przeciążeniu zespołu, pomaga kończyć rozpoczętą pracę przed braniem nowej, a także zobaczyć „wąskie gardła” na każdym z etapów pracy.
System pull
Zespół bierze zadania do pracy w miarę pojawiania się wolnej mocy przerobowej. Główna część zadań to ustalone elementy Sprint Backlog, a pozostała część to zadania ad-hoc.
Metryki przepływu
Na retrospektywach analizujemy średni czas realizacji zadań (lead time), średni czas aktywnej pracy nad zadaniem (cycle time) i przepustowość (throughput), a także porównujemy cumulative flow diagram z burndown chart. To pomaga wykrywać wąskie gardła i usprawniać proces.
W ten sposób Scrum nadaje rytm pracy, a Kanban pomaga zarządzać przepływem zadań w ramach tego rytmu.
Jak to działa
Zespół nadal pracuje w sprintach, ale zadania przechodzą przez wizualny przepływ.
Nowe zadania są brane tylko wtedy, gdy w procesie pojawia się wolna moc przerobowa. To ogranicza wielozadaniowość i pomaga szybciej kończyć rozpoczętą pracę.
Praktyczny case z HR-tech
Na jednym z naszych projektów HR-tech zespół jednocześnie:
- pracował nad nową funkcjonalnością;
- wspierał już działający produkt;
- naprawiał pilne bugi na produkcji/wykonywał inne zadania ad-hoc.
Jeśli kierować się wyłącznie Scrum, pilne zadania mogły naruszyć plan sprintu albo krytyczne poprawki trzeba byłoby odłożyć do kolejnego sprintu.
Rozwiązaniem było wbudowanie Kanban w proces Scrum, w którym ustalaliśmy obowiązkowy zakres prac w trakcie sprintu, ale jednocześnie zostawialiśmy „elastyczną” część na manewr.
W praktyce wyglądało to tak: przy średniej velocity 30 SP na sprint w planowaniu braliśmy do pracy 20–25 SP.
Pozostały zapas zostawialiśmy na krytyczne zadania z produkcji i zadania ad-hoc. To pozwalało nie przeciążać sprintu i nie rozbijać go przy nagłych incydentach, przy jednoczesnym zachowaniu możliwości szybkiego podejmowania pilnych zadań bez czekania na kolejne planowanie.
Zespół nadal pracował w sprintach: przeprowadzał planowanie, codzienne spotkania, przeglądy i retrospektywy, a jednocześnie cały backlog był prowadzony na tablicy Kanban, dla kolumn In Progress i Testing ustawiliśmy WIP-limity.
Gdy pojawiało się niezaplanowane zadanie, a zmienna część naszego Velocity nie została jeszcze wykorzystana, zespół mógł wziąć zadanie do pracy. To pozwalało szybko reagować na zmiany bez przeciążenia i bez zerwania sprintu.
W rezultacie:
- pilne zadania trafiały do pracy od razu;
- zespół zachowywał fokus na zadaniach sprintu;
- obciążenie pozostawało transparentne;
- wąskie gardła były dobrze widoczne.
Podsumowanie: co daje Kanban w Scrumie?
Elastyczność bez utraty przewidywalności
Zespół zachowuje rytm sprintów, ale może szybko brać pilne zadania do pracy.
Kontrola obciążenia
WIP-limity pomagają uniknąć przeciążenia i pokazują realną moc przerobową zespołu.
Szybkie wykrywanie problemów
Tablica sprawia, że blokady i zawieszone zadania są widoczne od razu.
Usprawnianie procesu na podstawie danych
Metryki przepływu pomagają dokładniej planować i znajdować wąskie gardła.
W ten sposób połączenie uporządkowanego planowania Scrum i elastyczności Kanban pozwala jednocześnie pracować zgodnie z planami iteracyjnymi oraz brać do pracy niezaplanowane/jednorazowe zgłoszenia wymagające natychmiastowego rozwiązania.
Zakończenie
Kanban w Scrumie to sposób na wzmocnienie frameworka Scrum dzięki wizualizacji przepływu zadań i kontroli obciążenia.
Scrum zachowuje zrozumiały rytm pracy, a Kanban pomaga szybciej reagować na zmiany i efektywniej zarządzać zadaniami wewnątrz sprintu.
Jeśli zespół musi jednocześnie rozwijać nową funkcjonalność i szybko rozwiązywać pilne problemy, Kanban w Scrumie również może stać się wygodnym i praktycznym rozwiązaniem.