Poznajcie pewną historię…
W końcu nadszedł ten dzień. Po długich, męczących rozmowach rekrutacyjnych dostałeś wymarzoną pracę, w której będziesz mógł spełniać się zawodowo. Wszystko pięknie - jedyną niedogodnością jest to, że Twoje nowe miejsce pracy, lśniący biurowiec, znajduje się na drugim krańcu miasta. Wiesz, że musisz pokonać wiele kilometrów, aby tam dotrzeć. Już od miesiąca wyobrażasz sobie i planujesz jak będzie wyglądał Twój samochód marzeń. Każdy dzień spędzasz na wybieraniu jego konfiguracji. Od marki i modelu, poprzez kolor, wzór felg i kolor tapicerki, aż po kolor dywaników i logo na zapalniczce samochodowej. Składasz zamówienie i czekasz, bo jego produkcja potrwa kilka miesięcy. W międzyczasie nadszedł w końcu dzień, kiedy po raz pierwszy musisz pojawić się w biurze. Co robisz? Nic, zostajesz w domu i czekasz aż wyprodukują Twój samochód. Tak mijają pierwszy, drugi, trzeci i kolejne dni, kiedy powinieneś być w pracy. A Ty nadal siedząc w domu, czekasz na dostawę Twojego nowego samochodu, aby móc dostać się do biura. Po miesiącu czekania, jest! Pod Twoim domem stoi piękne, lśniące auto. Następnego dnia ruszasz do pracy. Doceniasz, jak świetnie dobrałeś kolor tapicerki, aby podkreślał kolor Twoich oczu. Dojeżdżasz do biura, a tam nie ma gdzie zaparkować! Nie przewidziałeś, że pod biurowcem może nie być parkingu. Krążysz po okolicy, parkujesz samochód kilkaset metrów dalej, pędzisz do biura, bo przecież od miesiąca na Ciebie czekają. Wpadasz zdyszany i co? Kierownik zniecierpliwiony czekaniem na Ciebie, zatrudnił kogoś innego i to jemu da szansę na realizację marzeń.
Czym jest Waterfall?
Przyznasz, że historia brzmi dziwnie? Ale właśnie w ten sposób realizowanych do tej pory było wiele projektów. Wiedząc (bądź raczej myśląc, że się wie) co chciałoby się osiągnąć czy zbudować, przygotowywano obszerną specyfikację projektu, dopinając w niej każdy szczegół. Jak w historii powyżej, mając konkretną potrzebę przemieszczenia się z punktu A do B, wymyślono, że najlepiej będzie uczynić to skrzętnie skonfigurowanym samochodem. Następnie realizowało się projekt w oparciu o dokumentację, niejednokrotnie mając do czynienia z opóźnieniami. Gdy w końcu produkt trafiał na rynek, okazywało się, że nie trafia on w potrzeby rynku bądź jest do niego niedostosowany. Starałem się zobrazować to na przykładzie braku miejsca parkingowego. Ostatecznie może nawet okazać się, że nie mamy już czasu wprowadzać zmian w projekcie. Nasza szansa na zaistnienie na rynku przepada, podobnie jak posada na stanowisku. Bardzo upraszczając, tak może wyglądać tradycyjny model kaskadowego zarządzania projektami (ang. waterfall), również informatycznymi.
To czego nie pokazałem w historii, to zmieniające się otoczenie i warunki w których przyszło nam realizować projekt. Mając zatwierdzoną specyfikację, zakres i koszty, bardzo rzadko wprowadzało się w tym sposobie realizacji zmiany w projekcie, który już się toczył, aby dostosować się do zmieniającego się świata wokół. Zamiast tego koncentrowano się na realizacji założonego wcześniej planu.
Czas na Agile i scrum
Skoro widzimy, że coś tu nie gra, to dlaczego nie zrobić tego inaczej? W ten sposób, w odpowiedzi na potrzeby coraz dynamiczniej zmieniającego się w dzisiejszych czasach otoczenia, powstały zwinne metodyki zarządzania projektami (ang. Agile project management).
Kładą one nacisk na iteracyjne, czyli przyrostowe wytwarzanie wartości biznesowej. Mowa tu o zaspokajaniu potrzeb, uwzględniając jednocześnie zachodzące zmiany oraz weryfikując z klientem czy podążamy w dobrym kierunku. Wśród metodyk zwinnych najczęściej do tej pory mogłeś słyszeć o metodyce Scrum i jego użyteczności w zespołach wytwarzających oprogramowanie. Przykładami innych technik zwinnych są Extreme Programming oraz Feature-Driven Development (FDD).
Czym jest Scrum?
Scrum można określić jako ramy, zbiór dobrych praktyk, które mają pomóc zespołowi wytworzyć produkt zgodny z oczekiwaniami, a przede wszystkim, spełniającym rzeczywiste potrzeby klienta. Należy przy tym pamiętać, że zmieniać się mogą zarówno same potrzeby, jak i rzeczywistość okołobiznesowa, np. obecność konkurencji czy wymogi prawne.
Czym są dobre praktyki, o których mówi Scrum?
To ustalenie stałego okresu (np. 2 lub 3 tygodnie) tzw. Sprintu, w którym zespół zobowiązuje się do dostarczenia pewnych funkcjonalności. To potrzeba cyklicznego weryfikowania z klientem osiągnięć zespołu podczas tzw. Review. To planowanie dalszych prac podczas spotkania, które nazywamy planowaniem (Planning).To wyciąganie wniosków i formułowania akcji do zastosowania w przyszłości, aby sprawniej dostarczać oprogramowanie podczas retrospekcji (Retrospective). Jeśli znajome jest Ci pojęcie cyklu Deminga, określanego też jako cykl PDCA (ang. Plan-Do-Check-Act), to z pewnością widzisz tutaj analogie.
Myślisz o rozpoczęciu nauki? Sprawdź nadchodzący kurs Machine Learning z trenerem na ŻYWO
Jak zbudowany jest zespół Scrumowy?
W zespole deweloperskim, bo tak określa się zespół scrumowy, wyodrębnia się dwie dodatkowe role – Product Owner’a i Scrum Master’a. Product Owner to ktoś podejmujący kluczowe decyzje w projekcie co do kierunku, w którym podąża projekt. Scrum Master jest osobą wspierającą i dbającą o zespół, często określanym jako przywódca służebny (ang. Servant Leader). Początkowo jego rolę nieszczęśliwie tłumaczono po polsku jako Mistrz młyna, co wzbudza uśmiech na wielu twarzach. W Scrumie zespół deweloperski powinien być samoorganizujący się i interdyscyplinarny, a postępy swoich prac śledzi podczas codziennych spotkań zwanych Daily Stand-up, bądź Codziennym Scrumem. Chciałbym zaznaczyć, że powyższy opis ma pozwolić jedynie na bardzo zgrubną orientację w podstawowych pojęciach i wydarzeniach, o których mówi Scrum. Należy przy tym pamiętać, że Scrum bez pracy zespołu nad Wartościami Scrumowymi (zaangażowanie, otwartość, szacunek odwaga i skupienie) oraz nad zrozumieniem celu ich wykonywania byłby tylko mechanicznym Scrumem, nie przynoszącym pożądanej wartości.
A więc od początku…
Wróćmy do przykładu, o którym pisałem na początku i zobaczmy, jak wykorzystując metodyki zwinne, w tym np. Scrum’a, mogłaby wyglądać jego historia. Rozpoczęlibyśmy od zidentyfikowania u naszego bohatera potrzeby dotarcia z domu do pracy. Zespół Scrumowy wie, że dobrze jest zaspokoić potrzebę klienta jak najszybciej, nawet kosztem pewnych wygód czy funkcjonalności. W odróżnieniu od podejścia kaskadowego, zespół Scrumowy mógłby postarać się dostarczyć klientowi np. hulajnogę. Pytając klienta o opinię i wrażenia z jazdy hulajnogą, dostalibyśmy bardzo cenne informacje co do kolejnej iteracji. Jej produktem mógłby być rower, którym przemieszczanie się w mieście mogłoby okazać się szybsze i wygodniejsze. Czy mając rower i znając sytuację braku miejsc parkingowych pod biurowcem pracownik w dalszym ciągu zdecydowałby się na samochód? Doświadczenia jakie zebrał podczas dojazdów do pracy hulajnogą i rowerem, mogłyby poskutkować wybraniem jednak motocykla jako ostatecznego środka transportu. A może jednak już rower okazałby się wystarczający? Konstruując produkt przyrostowo, oprócz lepszego dopasowania rozwiązania do rzeczywistych potrzeb, byliśmy w stanie zaspokoić je już od samego początku. Pracownik już pierwszego dnia, mimo pewnych niedogodności, mógł pojawić się w pracy. Podobnie w projektach informatycznych, szczególną uwagę zwraca się na to, aby produkt poddany zmianom, choć nadal pozbawiony pewnych funkcjonalności, był użyteczny na każdym etapie pracy nad projektem. Zwinność i Scrum, choć wymagają zmiany naszych przyzwyczajeń, znacząco zmniejszają ryzyko niepowodzenia projektów, przez co zdobywają coraz większą popularność nie tylko w świecie IT. Warto się zastanowić, jak wiele przykładów bycia agile jesteś w stanie znaleźć wokół siebie.
Przeczytaj także: Dlaczego nie każdy może zostać programistą?
Autor:
Sławomir Wołczkiewicz Scrum Master i Senior Software Engineer Zwinny od najmłodszych lat. Początkowo jedynie za sprawą sportów wszelakich, lecz zaraz po wejściu na rynek pracy odkrył to drugie oblicze zwinności. Scrum Master z doświadczeniem dewelopera, pomaga dogadać się programistom i ludziom biznesu. Inżynier, który stawia na wartościową komunikację z innymi. Miłośnik jedzenia w dużych ilościach, a jako taką formę trzyma dzięki dużym pokładom energii, która nie pozwala mu usiedzieć w domu.