Z artykułu dowiesz się:
Jaka jest historia Agile Co to jest Agile Jakie 12 zasad stosuje się w zwinnej metodyce zarządzania Czym się różni zarządzanie zwinne od kaskadowego Jakie są etapy tworzenia oprogramowania zgodnie z zasadami Agile Jak Agile funkcjonuje w polskich organizacjachO co właściwie chodzi w Agile?
Co wspólnego ma jazda na nartach z Agile? Więcej, niż mogłoby nam się wydawać. Kto wie, może gdyby nie wyprawa grupy programistów do kurortu narciarskiego w górach, to ta metodyka nigdy by nie powstała. Miało to miejsce w 2001 roku i właśnie wtedy 17 programistów postanowiło wyskoczyć poszusować na stoku i przy okazji podebatować nad ówczesnymi problemami dotyczącymi kaskadowego modelu tworzenia oprogramowania. Dostrzegali oni wiele niedogodności, jakie były z tym związane. Przede wszystkim przeszkadzały im zakłócenia w przekazie informacji, a także zbyt późna reakcja na zmiany oczekiwań klienta i nowo powstające standardy. Dla praktyków lubiących zimowe szaleństwo na śniegu było jasne, że coś trzeba z tym zrobić. Skutecznie zidentyfikowali oni problem i uznali, że Waterflow nie sprawdza się dobrze w zarządzaniu projektami. A skoro coś zawodzi, to trzeba to zmienić lub stworzyć coś zupełnie nowego.
Zajęło im to 3 dni. Tak, dokładnie tyle potrzebowali, aby dojść do porozumienia i stworzyć zbiór 12 zasad, które definiują zwinne podejście do wytwarzania i zarządzania oprogramowaniami. Nazywamy je Manifesto for Agile Software Development.
Agile to system zwinnego zarządzania projektami. Przedsięwzięcie dzielone jest na cykle, które z kolei składają się z etapów. Chodzi o to, aby tworzyć oprogramowanie małymi krokami, dzięki czemu łatwiej jest kontrolować postępy i wdrażać ewentualne zmiany. Kluczowy jest też feedback od klienta, który zespół otrzymuje po zakończeniu każdego cyklu. Jego uwagi nie sprawiają, że cały projekt zostaje zburzony. Możliwe jest łatwe i sprawne jego udoskonalanie, co zawdzięcza się też otwartemu podejściu do procesu projektowego.
W Agile uwzględniane są zmieniające się warunki i nowe informacje pojawiające się w trakcie realizacji projektu. Nie chodzi o to, aby trzymać się tego, co zostało zaplanowane jeszcze przed startem całego przedsięwzięcia. Nie wszystko można przewidzieć i zaplanować. W zwinnych metodykach zarządzania projektami ważna jest elastyczność. Istnieją ramowe zasady i plan projektu, ale nie jest on zamknięty. To właśnie dzięki takiemu udaje się osiągnąć naprawdę wybitne cele.
Kluczowe aspekty zwinnego zarządzania projektami
Twórcy metodyki Agile nie byli fanami skomplikowanych zasad i teorii. Raczej starali się wszystko upraszczać, niż komplikować, podobnie było też z 12 zasadami opisującymi fundamenty zwinnego zarządzania projektami, czyli Manifesto for Agile Software Development. No to poznajmy je:
Zadowolenie klienta – realizowane zadania ukierunkowane są na satysfakcję klienta. Jest to łatwiejsze do osiągnięcia dzięki możliwości wprowadzania cyklicznych zmian i dopasowaniu działań do oczekiwań klienta Otwartość i gotowość na zmiany – istnieje możliwość wprowadzania zmian na każdym etapie tworzenia i zarządzania oprogramowaniem Komunikowanie postępów w projekcie – klient regularnie otrzymuje raport z postępów. Może więc kontrolować efekty zakończonych już etapów Efektywna współpraca – przy projektach współpracuje ze sobą wielu specjalistów, aby w każdym aspekcie było wsparcie fachowca dobrze znającego się na rzeczy. Ważna jest dbałość o sprawny przepływ informacji pomiędzy nimi i niezakłóconą komunikację Motywacja i zaangażowanie – aby można było osiągać zamierzone efekty, członkowie zespołu muszą mieć odpowiednie warunki do pracy, które minimalizowałyby ewentualny stres i jego skutki. Potrzebują stałej motywacji, która wspiera ich niesłabnące zaangażowanie Bezpośrednia komunikacja – to kolejny kluczowy czynnik, mający wpływ na sprawny przepływ informacji. W zespołach, które pracują w oparciu o Agile, o wszystkim mówi się wprost, bez owijania w bawełnę Działające oprogramowanie – to podstawowa miara postępu całego projektu Równe tempo pracy – postęp powinien być możliwie jak najbardziej równy, a więc efekty o podobnej wadze mają być widoczne na poszczególnych etapach Nieustanne udoskonalanie – na każdym etapie projekt można zmienić, a także znaleźć i wdrożyć jeszcze lepsze rozwiązania, pozwalające na osiągnięcie lepszego efektu. Agile w znaczącym stopniu polega na ciągłym doskonaleniu Prostota – to nie jest miejsce na skomplikowane procesy i zasady współpracy. Gotowy produkt powinien odpowiadać wszystkim potrzebom i oczekiwaniom klienta, ale też mieć możliwie jak najprostszą wersję. W przypadku skomplikowanych rozwiązań nietrudno o chaos, można się zwyczajnie pogubić Samoorganizacja – projekt podzielony jest na cykle, które realizowane są przez konkretnych specjalistów mających wiedzę z konkretnego zakresu. Z tego powodu menadżer powinien być osobą kontrolującą przebieg prac, ale dawać przy tym swobodę pracy swoim podopiecznym Wnioski – każdy projekt to nowe doświadczenie. Na poszczególnych jego etapach zespół analizuje postępy, wdrożone rozwiązania i przebieg prac, dokonując ich oceny. Zastanawia się, co się więc sprawdza dobrze, a nad czym trzeba popracowaćAgile odpowiedzią na kulejące podejście kaskadowe
Agile powstało, ponieważ dotychczas stosowane podejście się nie sprawdzało. Wreszcie zespół odważnych ludzi powiedział STOP i zdecydował się na konkretne kroki w kierunku zmian. Już na tym etapie rodziła się nowa metodyka. Ludzie zdecydowali się udoskonalić proces, który kulał, tak jak robi się to w Agile.
Wcześniej oprogramowania tworzono i zarządzono nimi w oparciu o podejście kaskadowe. Zgodnie z nim na początku projektu określa się szczegółowy harmonogram, według którego później przeprowadzane są konkretne prace. Plan jest nie do ruszenia, jakiekolwiek zmiany nie wchodzą w grę. Poszczególne zadania w ramach projektu są już znane na początku, nie ma opcji, aby w trakcie jego trwania coś dołożono lub zabrano…słowo się rzekło. Projekty prowadzane są w sposób linearny, dzieli się je na etapy, które następują kolejno po sobie. Budżet również zakłada się już na początku, co akurat sprzyja optymalizacji wydatków, trudniej o wydanie więcej, niż pozwalają na to możliwości finansowe. Cały koncept jest przejrzysty, wszyscy wiedzą, co i kiedy mają robić. To taka uporządkowana struktura. Co więcej, data zakończenia projektu również jest znana, chociaż w teorii oczywiście nie zawsze jest tą ostateczną.
W podejściu zwinnym jest zupełnie inaczej. Tutaj brak jest ustrukturyzowanego, z góry zdefiniowanego planu wdrożenia. Prace są prowadzone w cyklach i dzieli się je na lepiej mierzalne i zarządzalne. W trakcie trwania projektu możliwe jest wprowadzanie zmian i modyfikacji, co jest całkowicie normalne – w ten sposób dąży się do usprawnienia nie tylko procesu twórczego, ale też samego oprogramowania. W Agile stosuje się ponadto priorytetyzację, ustala się listę priorytetów, zgodnie z którą wykonywane są zadania. Zespół ma pozostawioną przestrzeń na manewry związane ze zmianami. Chodzi o znalezienie optymalnej drogi do celu i najskuteczniejszych rozwiązań projektowych.
Czy zatem podejście kaskadowe jest złe? Nie do końca, ale dla niektórych projektów jest zwyczajnie nieopłacalne i nie sprawdza się przy nich najlepiej. Stawia dużo ograniczeń, przez co nie można modyfikować całego procesu w trakcie jego trwania, nawet jeśli jest taka konieczność. Są sztywne ramy, których trzeba się trzymać, co jednak może okazać się dobre w bardziej rozbudowanych i skomplikowanych projektach, kiedy przy ciągłych modyfikacjach można się pogubić i zboczyć z właściwego toru.
Realizacja zadań projektowych w IT zgodnie z zasadami Agile
To, że w Agile plan działań nie jest sztywno ustalony, nie oznacza, że nie ma go wcale. W przeciwnym razie o chaos nie byłoby trudno. Cykl zwinny zarządzania podzielony jest na etapy. Jakie?
Planowanie – uzgadniamy i omawiamy założenia i cele klienta Projektowanie – opracowujemy sposoby realizacji poszczególnych etapów projektu, dzięki czemu wiemy, ile i jakich zasobów potrzebujemy Rozwijanie – wdrażamy projekt zgodnie z założeniami w konkretnym etapie projektowania Testowanie – sprawdzamy, czy wdrożone usprawnienia pozwalają realizować założone cele i sprawdzają się przy konkretnych działaniach Implementacja – kończymy dany etap, po wcześniejszej akceptacji od klientaAgile w polskich organizacjach. Pozytywne zaskoczenie?
Raport Deloitte udowadnia, że w polskich organizacjach zwinne zarządzanie projektami ma się całkiem dobrze. 80% badanych potwierdza, że są one stosowane w ich organizacjach. Najczęściej, ponieważ w 64%, podejście zwinne jest wykorzystywane w obszarze tworzenia produktów i współpracy zespołowej. Niewiele mniej respondentów – 63% deklaruje, że zwinne podejście u nich w organizacji pojawia się przy zarządzaniu portfolio i podejmowaniu decyzji. 52% przedstawicieli organizacji przyznało, że Agile jest u nich charakterystyczne dla komunikacji wewnątrz organizacji.
Jeśli chodzi o korzyści, jakie zyskała firma po wdrożeniu zwinnego modelu pracy, to najczęściej wskazywanymi były: zacieśnienie współpracy pomiędzy biznesem i IT, lepsze dostosowanie produktów do potrzeb klienta i skrócenie czasu dostarczania produktów i usług.
Respondenci zostali zapytani również m.in. o to, jak wdrażany jest w ich organizacjach zwinny model pracy. 83% z nich przyznało, że odbywa się to w sposób ewolucyjny, czyli stopniowo w wybranych obszarach. 37% odpowiedziało, że menadżerowie wysokiego szczebla w ich firmach aktywnie angażują się w pracę nad wprowadzanymi zmianami. Oczywiście nie brakuje wyzwań. 68% badanych jako największe wyzwanie podczas wdrażania zwinnego modelu pracy wskazało zdefiniowanie adekwatnych miar pozwalających na ocenę postępu wdrożenia.
Dzisiaj możemy podziękować grupie praktyków, którzy postanowili sprzeciwić się pozostawiającemu dużo do życzenia podejściu kaskadowym. Nie jest to całkowicie zła strategia zarządzania oprogramowaniem, ale na pewno nie pozwala w pełni wykorzystać potencjału ludzi i zasobów. Ponadto stawia dużo ograniczeń, podczas gdy specjaliści potrzebują swobody w działaniach, są otwarci na zmiany i mają pomysły, jak je wdrażać. W IT to ważne, dlatego mamy Agile.