W nadchodzącym miesiącu zamierzam napisać sporo o zarządzaniu projektami za pomocą metodyki Scrum. Postaram się opisać dość dokładnie idee i zasady tej metodyki, a tam gdzie to będzie możliwe wesprzeć opisy przykładami.
Na początek jednak, aby każdy mógł się łatwo odnaleźć w kolejnych postach, chcę opisać tutaj parę pojęć i definicji związanych z tą metodyką.
Scrum
Jest to nie tylko nazwa metodyki. Scrum jest to również nazwa codziennego spotkania zespołu. Spotkanie to jest codziennym przeglądem wykonanej i planowanej pracy. Scrum powinien być prowadzony przez ScrumMaster’a. Każdy z członków zespołu powinien odpowiedzieć na 3 pytania:
- 1. Co zrobiłeś od ostatniego Scrum?
- 2. Co planujesz wykonać do następnego Scrum’u?
- 3. Czy coś utrudnia Ci wykonywanie efektywnie swojej pracy?
Spotkanie takie powinno być bardzo zwięzłe, co zwykle oznacza czas trwania do 15 minut.
Sprint
Ograniczony standardowo do 30 dni okres czasu, w którym zespołu pracuje nad stworzeniem funkcjonalności z zaplanowanej listy zaległości produktowych sprintu . Sprint najłatwiej porównać jest do iteracji. Każdy sprint powinien być tak zaplanowany, aby stworzone funkcjonalności były w pełni działające i gotowe do wydania. Co oznacza, że w każdym sprincie muszą zostać wykonane następujące czynności:
- 1. Analiza
- 2. Projektowanie
- 3. Kodowanie
- 4. Testowanie
- 5. Dokumentowanie
W praktyce sprinty trwają od 2 tygodni do 1 miesiąca, w zależności od projektu i organizacji.
Zaległości Produktowe (Product Backlog)
Lista wszystkich wymagań, zarówno funkcjonalnych jak i niefunkcjonalnych projektu. Każde wymaganie powinno mieć ustalony priorytet i oszacowanie czasowe potrzebne do zamiany każdego z wymagań w działającą funkcjonalność. Im większy priorytet elementu, tym dokładniejsze powinno być jego oszacowanie. Scrum jest procesem otwartym na zmiany wymagań w trakcie trwania projektu. Dlatego lista zaległości produktowych cały czas ewoluuje zarówno pod kątem znajdujących się elementów, jak też mieniających się priorytetów poszczególnych wymagań. Zamiast standardowych przypadków użycia, wymagania opisywane są zwykle przy wykorzystaniu User Stories.
Zaległości Sprintu (Sprint Backlog)
Lista wymagań danego sprintu wybrana wspólnie przez zespół i właściciela produktu. W przeciwieństwie do Zaległości produktowych całego projektu, Sprint backlog jest niezmienny. Czyli określamy go na początek danego sprintu i trzymamy się, aż do jego zakończenia. Jeśli w trakcie sprintu wynikną bardzo nieprzewidziane okoliczności mające duże znaczenie dla powodzenia projektu, w ostateczności Właściciel Produktu ma możliwość przerwania sprintu, ale nigdy zmiany jego zaległości.
ScrumMaster
Jedna z trzech ról w procesie Scrum. Nie wolno mylić jej z Project Managerem z klasycznych metodyk. Rolą ScrumMaster’a jest nadzorowania i kontrolowanie procesu scrum. Tak aby zmaksymalizować korzyści wynikające z jego stosowania. ScrumMaster powinien również pomagać zespołowi w przypadku pojawienia się problemów. Ale rolą ScrumMaster nie jest przydzielanie zadań członkom zespołu.
Właściciel Produktu
Druga z trzech ról w procesie Scrum. Też nie powinno się jej mylić z klasycznym Project Managerem, jednak jest to moim zdaniem rola bardziej zbliżona do PM’a niż ScrumMaster. Zadaniem właściciela produktu jest zarządzanie Zaległościami Produktu, tak aby zmaksymalizować zyski z projektu. Właściciel produktu wraz zespołem ustala listę zaległości sprintu.
Zespół
Ostatnia i najważniejsza rola w procesie Scrum. Zespół to grupa licząca zwykle od 5 do 9 osób (Za wartość optymalną uznaje się 7 osób). Zespół jest odpowiedzialny za realizację zaległości sprintu. Przy czym bardzo ważna jest kwestia odpowiedzialności, bowiem fundamentem metodyki scrum jest założenie, iż zespół powinien się sam organizować. Również z uwagi na założenia Scrum’u w skład zespołu powinny wchodzić osoby o różnych specjalizacjach: Analitycy, Architekci, Programiści, Testerzy.