Czym jest Agile? Jakie wartości można przypisać zwinnym metodom zarządzania projektem? Czy warto w ogóle wdrażać Agile? jeżeli tak – to w jaki sposób? Jak wygląda praca w myśl metodyk zwinnych? Dowiesz się tego z poniżeszgo artykułu.
Spis treści:
Czym jest Agile?
Podstawowe zasady i wartości Agile
Etapy pracy nad projektem w duchu Agile
Zalety i wady Agile
Rodzaje metodyk zwinnych
Wdrożenie Agile
Czy opłaca się pracować zwinniej?
Czym jest Agile?
Agile (zarządzanie zwinne) powstało z początkiem XXI wieku, jako alternatywny sposób wytwarzania oprogramowania. Stanowiło odpowiedź na praktykowane powszechnie podejście waterfall (model kaskadowy, w którym kolejne czynności, pojmowane tutaj jako odrębne fazy projektowe, wykonywane są po sobie, we wcześniej zaplanowanym porządku). Twórcy Agile zarzucali podejściu waterfall niską elastyczność (przejście do kolejnej fazy projektowej możliwe jest tylko po wykonaniu poprzedzającej), czasochłonność, marnotrawienie zasobów, generowanie wysokich kosztów projektu.
U podstaw Agile leży przekonanie, iż niemożliwym jest aprioryczne zaplanowanie szczegółowego przebiegu projektu w jego początkowej fazie. Dzieje się tak z co najmniej dwóch powodów:
- wymagania klientów (odbiorców) mogą zmieniać się w czasie trwania projektu w sposób nieprzewidywalny;
- na przebieg projektu wpływa wiele czynników (zarówno wewnętrznych jak i zewnętrznych), częstokroć losowych, które nie są możliwe do przewidzenia z odpowiednim marginesem czasowym, by móc ująć je już na etapie planowania.
Agile, w kontekście wytwarzania oprogramowania, stanowi więc taki dobór metod, które cechuje transparentność, elastyczność, ale też… zdrowy rozsądek.
Podstawowe zasady i wartości Agile
Podstawowe założenia Agile zostały wyrażone w symbolicznym dokumencie, który do dzisiaj znany jest jako Agile Manifesto. Przedstawiono w nim ogólne zasady i wartości, które stały się podwalinami wszystkich wyrosłych na polu Agile metodyk i praktyk zwinnych. Manifest rozpoczyna się czterema krótkimi założeniami, które przedkładają:
- Ludzi i interakcje ponad procesy i narzędzia;
- Działające oprogramowanie od szczegółowej dokumentacji;
- Współpracę z klientem od negocjacji umów;
- Reagowanie na zmiany od realizacji założonego planu.
Należy jednak pamiętać, iż czynniki wymienione po lewej nie wykluczają tych z prawej! Wytwarzanie systemu w duchu Agile przez cały czas ma za zadanie realizować postawione przed zespołem cele biznesowe, w określonym czasie, w oparciu o przygotowane założenia.
Twórcy idei, oprócz założeń, wyróżnili 12 głównych zasad, które określają podstawy tego sposobu pracy:
- Zadowolenie klienta – ma charakter kluczowy. Dostarczane oprogramowanie jest stale udoskonalane.
- Gotowość do zmian – w podejściu Agile dopuszcza się zmiany wymagań w projekcie na każdym etapie jego trwania.
- Częste dostarczanie kolejnych części produktu – im częściej, tym lepiej, ponieważ klient ma szansę na dostarczanie informacji zwrotnej, co przekłada się na stałe ulepszanie produktu.
- Ścisła kooperacja między zespołami deweloperskimi i biznesowymi – każda ze stron musi być zaangażowana w projekt i posiadać tę samą wiedzę na jego temat.
- Zmotywowany, zaangażowany i wspierany przewodnik – tylko taki kierownik projektu będzie w stanie wydobyć maksymalne możliwości i potencjał drzemiący w zespole, dzięki czemu finalnie dostarczy produkt wysokiej jakości.
- Stała komunikacja – najlepszym z możliwych sposobów przekazywania wiedzy jest kontakt osobisty.
- Oprogramowanie, które działa – cel w Agile jest tożsamy z tym, znanym z metodyki Waterfall i jest nim efekt podjętych działań.
- Zrównoważony rozwój – zaangażowanie wszystkich zespołów w przebieg kolejnych iteracji pozwala na wczesne i skuteczne uczenie się na własnych błędach, wyciągnięcie wniosków i sprawne przejście do następnych elementów projektu.
- Skupienie na technicznej doskonałości – agile koncentruje się na wspólnym poszukiwaniu nowych dróg i sposobów na rozwiązanie problemów, a co za tym idzie, udoskonalanie produktu, iteracyjność to zwielokrotniona szansa na naukę.
- Minimalizowanie ilości koniecznej pracy – rozwiązania mają być wdrażane możliwie gwałtownie i sprawnie.
- Rozwiązania proponowane przez samoorganizujące się zespoły – inicjatywa powinna wychodzić wprost z zespołu; kierownicy (mentorzy, liderzy), nie narzucają swojego zdania, tylko czuwają nad całością projektu.
- Wyciąganie wniosków – iteracyjność, gotowość do podejmowania zmian w projekcie, otwartość na feedback klienta, wszystko to ma na celu w zasadzie jedną rzecz: rozwój.
W ujęciu Agile szczególną wagę przypisuje się partnerstwie i transparentności wobec wszystkich uczestników projektu. Produkt końcowy ma spełniać oczekiwania klientów (nawet jeżeli ulegną one zmianie), dlatego tak ważne jest utrzymanie stałej i efektywnej komunikacji.
Etapy pracy nad projektem w duchu Agile
Jak zatem przebiega praca nad projektem prowadzonym w myśl metodyki Agile? Opiera się na kilkuetapowych cyklach, powtarzanych aż do czasu zakończenia danego zadania. Co istotne, kolejne iteracje mają na celu ewentualne skorygowanie wymagań postawionych w zadaniu. Nie oznacza to jednak poprawiania błędów wynikłych z powodu niedbale przeprowadzonego lub pominiętego etapu planowania.
Wyróżnić można zatem następujące etapy:
- Planowanie – polega na zbieraniu i analizie dokładnych wymagań klienta oraz zaplanowaniu kroków, których podjęcie będzie konieczne do wykonania zadania. To jeden z istotniejszych etapów całego cyklu; niedokładność lub zaniechanie jego wykonania ma najważniejsze znaczenie dla jakości dostarczonego produktu.
- Projektowanie – zespół opracowuje, w jaki sposób zrealizuje kolejne części projektów, szacuje także, na ile zlecenie okaże się zasobożerne (zasoby rozumiane są tutaj zarówno jako specjaliści potrzebni do wykonania zadania, ale także oczekiwany czas jego wykonania).
- Programowanie – tutaj następują adekwatne prace nad zadaniem, w oparciu o przygotowany we wcześniejszych fazach projekt.
- Testowanie – przeznaczona do tego osoba (lub zespół) sprawdza od strony technicznej oraz od strony klienta, czy dany element spełnia postawione wymagania.
- Wdrażanie – po pomyślnych testach technicznych oraz otrzymaniu akceptacji klienta, zdefiniowany w zadaniu element projektu jest przekazywany “na produkcję”, czyli do finalnego użytkowania.
- Informację zwrotną – klient przekazuje zespołowi realizującemu dane zadanie w projekcie informacje na temat ewentualnych uwidocznionych w trakcie użytkowania błędów, zgłasza propozycje usprawnień lub zmianę wymagań. Informacje te stanowią podstawę do podjęcia kroku planowania w kolejnej iteracji.
Zalety i wady Agile
Choć metodyka Agile niewątpliwie zrewolucjonizowała podejście do wytwarzania oprogramowania, nie pozostaje cudownym, wolnym od wad rozwiązaniem. Przed przeszczepieniem jej na grunt swojego zespołu, warto zapoznać się zarówno z zaletami jak i wadami, które mogą wpłynąć na prowadzenie projektu w zwinny sposób.
Zalety:
- podejmowane procesy są skoncentrowane na klienta; dbałość o stałą i transparentną komunikację;
- samoorganizujące się zespoły cechuje wysoka motywacja na osiągnięcie zamierzonego celu;
- zastosowanie podejścia iteracyjnego pozwala na wprowadzanie szybkich zmian na każdym etapie procesu rozwojowego produktu, zgodnie z diagnozowanym na bieżąco zapotrzebowaniem;
- dzięki krótkim sprintom i zorientowaniu na jakość, potencjalne błędy są diagnozowane i usuwane szybciej.
Wady:
- od zespołów samoorganizujących się wymaga się wysokiego poczucia dyscypliny – jej brak będzie znacząco wpływał na tempo prac oraz jakość dostarczanego produktu;
- potrzebny jest zaangażowany i zorientowany w dynamice projektu mentor, który będzie koordynował prace zespołów oraz relacje międzyzespołowe oraz na linii zespoły-klient;
- wiedza mentora musi pozwalać mu na podejmowanie kluczowych decyzji ad hoc, w zależności od zmieniających się okoliczności;
- każdorazowa zmiana w projekcie wymaga akceptacji ze strony klienta, co w praktyce może wydłużyć proces wytwarzania systemu (oczekiwanie na acceptance, wypadki losowe).
Agile – dla kogo?
Agile sprawdzi się zatem w zespołach projektowych, które dążą do ciągłego doskonalenia przeprowadzanych procesów, a także tam, gdzie zachodzi konieczność ich ulepszenia i szybszego reagowania na pojawiające się zmiany. Metody zwinne znajdą zastosowanie w obszarach wymagających regularnej i ścisłej współpracy z klientem oraz pozostałymi podmiotami zewnętrznymi. Aż w końcu – Agile sprawdzi się tam, gdzie przykłada się szczególną wagę do informacji zwrotnej dostarczanej przez klienta (i jest ona rzeczywiście brana pod uwagę podczas rozwijania danego produktu czy usługi).
Rodzaje metodyk zwinnych
Na kanwie Agile wyrosły także inne metodyki, które znajdują zastosowanie w zarządzaniu projektami. Do najpopularniejszych należą m.in.:
- najpopularniejsze: Scrum, Kanban, Lean;
- oraz: SAFe, LeSS czy Nexus.
Scrum
Praca przebiega w małych, samoorganizujących się zespołach. Czas trwania projektu odlicza się w tzw. Sprintach – czyli krótkich cyklach, w których pracuje się nad jakąś częścią projektu i na bieżąco przedstawia do wglądu klientowi, celem uzyskania feedbacku oraz przeprowadzenia wdrożenia. Zespoły składają się ze zróżnicowanego grona specjalistów (testerzy, programiści, analitycy etc.), pozostających w ścisłej współpracy ze Scrum Masterem (dba, by projekt przebiegał zgodnie z założeniami Agile) oraz Product Ownerem (reprezentuje klienta oraz posiada kompleksową wiedzę na temat produktu).
Kanban
W uproszczeniu polega na wizualizacji procesu oraz zaplanowania go w taki sposób, by zminimalizować marnotrawstwo zasobów. To strategia “pull”, w której każdy etap procesu pociąga za sobą etap poprzedzający (tym samym potwierdzając, iż poprzedni etap został wykonany i można przejść do następnego). Centralnym elementem tej metody jest tzw. tablica Kanban, na której zwizualizowane są zadania na danym etapie realizacji (np.: To do, Working, Validating, Done), z przypisaną wartością punktową, tak by suma w danej kolumnie nie przekraczała założonego progu (minimalizacja tzw. “wąskich gardeł”).
Lean
W podejściu tym główną zasadą jest eliminacja strat, wyrażona jako: wartością jest to, co klient uzna za wartościowe. Skupia się na dostosowaniu organizacji do warunków panujących na rynku, pełnym wykorzystaniu środków przy równoczesnym ograniczaniu kosztów. Efektem jest poprawa jakości wytwarzanych produktów lub usług, ale też zmniejszenie zapasów i efektywniejsze nimi zarządzanie.
Wdrożenie Agile
Agile w zarysie może wydawać się łatwe i przyjemne, a oczekiwane efekty – obiecujące. Niestety, w początkowej fazie może przysporzyć więcej trudności, niż zauważalnej poprawy jakości pracy. Agile to pewien konkretny sposób myślenia, filozofia, rozciągająca się poza wykonywanie sekwencji działań. Zmiany zachodzą nie tylko na poziomie organizacyjnym, ale przede wszystkim w mentalności i podejściu do przeprowadzanych projektów. Mówimy tutaj o porzuceniu pewnych rygorów, którymi obostrzone jest podejście typu waterfall, wypłaszczenie struktur, reorganizacja procesów, zmianę kompetencji liderów zespołów. Dlatego tak ważne jest, aby osoby odpowiedzialne za wdrożenie Agile dysponowały możliwie najobszerniejszą wiedzą na ten temat. Sama decyzja o wdrożeniu metodyk zwinnych powinna być poprzedzona także pogłębioną analizą: celów, problemów, możliwości i potrzeb, z jakimi boryka się dana organizacja.
Częściowa adaptacja Agile może prowadzić do obniżenia efektywności pracy, a co za tym idzie – dostarczania gorszej jakości produktu. Dlatego tak ważna jest skrupulatna implementacja wszystkich rozwiązań powiązanych z wybraną metodyką, zwłaszcza tych, które początkowo wydają się problematyczne. Agile wpływa na całą organizację, a wdrożenie ma w zasadzie charakter ciągłej transformacji. Taki sposób działania musi na stałe wpisać się w DNA firmy – od sumiennej realizacji założeń przez pracowników, po gotowość wsłuchiwania się w ich potrzeby i uwagi przez kadry zarządzające (i powiązane z tym możliwie szybkie reagowanie na pojawiające się trudności).
Czy opłaca się pracować zwinniej?
Metodyki zwinne biorą szturmem nie tylko sektor IT. Podejmowane są próby przeszczepienia ich na grunt innych branż i nie powinno to nikogo dziwić. W rzeczywistości VUCA, w której więcej niewiadomych, konieczność nieustannej adaptacji do zmieniających się warunków nie stanowi opcji, a konieczność.
Istotna jest jednak świadomość, iż nie każdy projekt da się przeprowadzić w zwinny sposób. Agile to jeden ze sposobów zarządzania projektem, nie nowe sztywne ramy koncepcji zarządczej. I choć wyrosłe w duchu Agile praktyki stanowią skuteczne strategie projektowe, należy mieć na względzie przede wszystkim potrzeby własnej organizacji, jej otoczenie oraz sytuację rynkową.