Agile Softwareentwicklung

Agile — wprowadzenie do zwinnego zarządzania projektami

/ 20.04.2023 Zarządzanie projektem

„Inteligencja to umiejętność przystosowania się do zmian” – Stephen Hawking 

Powyższy cytat podkreśla sedno zwinnego podejścia Agile. Jego istotą jest umiejętność elastycznego dostosowania się do zmieniających się warunków. Ma to wpływ na zarządzanie całym cyklem tworzenia oprogramowania, gdzie umiejętność adaptacji jest kluczowym czynnikiem determinującym sukces projektu. 

W tym artykule skupimy się na podstawach zwinnego zarządzania, jakie są jego główne założenia oraz jaki ma wpływ na projekty przeprowadzane w wielu firmach.  

Co to jest Agile i gdzie się je stosuje? 

Agile to zestaw wartości i zasad, a nie jedna metodologia.  Przede wszystkim zasady te określają pragmatyczny sposób myślenia i zapewniają elastyczne podejście do spełniania oczekiwań klientów. 

Agile został pierwotnie zaprojektowany do zarządzania procesem tworzenia oprogramowania.  Umożliwił zespołom szybkie modelowanie rozwiązań, uwzględnianie informacji zwrotnych i dostosowywanie zakresu zgodnie z potrzebami w całym cyklu życia projektu. Obecnie Agile funkcjonuje świetnie w wielu środowiskach, branżach i projektach, może być używany w prawie każdym dużym projekcie w dowolnej branży, które wymagają sprawnego i elastycznego zarządzania. 

Kiedy i dlaczego powstało Agile? 

W 2001 roku grupa doświadczonych programistów zebrała się w ośrodku narciarskim, aby podzielić się swoimi doświadczeniami i dowiedzieć się, dlaczego tak wiele projektów programistycznych kończyło się niepowodzeniem. Nie chodziło tylko o udokumentowanie najlepszych praktyk, które znali, ale znalezieniu innego podejścia projektowego. 

W związku z tym, że branża wymagała fundamentalnej zmiany wartości, stworzono Manifest Agile jako deklarację wartości, które stały się podstawą nowego podejścia do dostarczania oprogramowania i współpracy z klientami.  Zawiera on zestaw 4 wartości i 12 zasad dostarczających wskazówek, jak tworzyć zmiany i reagować na nie oraz jak radzić sobie z niepewnością w cyklu dostarczania oprogramowania.  

Cztery najważniejsze założenia Agile w tworzeniu oprogramowania  

Manifest Agile mówi, że odkrywamy lepsze sposoby tworzenia oprogramowania poprzez pomaganie innym. Kluczową sprawą, o której należy wspomnieć, jest fakt, że wszystkie wymienione poniżej informacje są ważne, jednak niektóre z nich muszą mieć wyższy priorytet. Wynika to z faktu, że manifest Agile podkreśla w większej mierze wartość jednostek i interakcji międzyludzkich ponad dokumentację i formalność procesów. 

Oznacza to, że cenimy bardziej 

1. Osoby i interakcje ponad procesy i narzędzia  

Chociaż dobry i jasny proces w firmie stanowi wartość, nie można pozwolić na to, aby sztywne przepływy pracy, czy bezosobowe formami komunikacji stanęły na przeszkodzie dobrej komunikacji. Uznajemy również fakt, że jeśli utalentowani ludzie mają być kreatywni i odnosić sukcesy, trzeba nauczyć się akceptować ich indywidualne potrzeby. 

"Moja rada to przestać podkreślać ramy procesu, a zacząć skupiać się na kulturze i mentalności firmy.  Wyraźnie określ wartości, zgodnie z którymi chcesz działać i faktycznie ucieleśnij je w każdym obszarze firmy."- Selena Delesie, agile coach i trener 

2. Działające oprogramowanie ponad obszerną dokumentację  

Tradycyjny rozwój oprogramowania często tworzył obszerną dokumentację, zanim program został wypuszczony do wstępnych testów, spowalniało to wyraźnie proces tworzenia oprogramowania. I choć dokumentacja jest ważna, to jednak zespół powinien skupić się przede wszystkim na działającym rozwiązaniu. 

"Pamiętaj: to nie dokumentacja musi być zsynchronizowana, ale ludzie". – George Dinwiddie, konsultant i trener w dziedzinie rozwoju oprogramowania

3. Współpracę z klientem ponad negocjowanie kontraktów 

Choć z pewnością warto pracę nad projektem zacząć od wstępnych wytycznych, jednak, zamiast zamykać klientów w ściśle zdefiniowanych ramach projektu, określając każdy detal produktu przed rozpoczęciem prac, lepiej jest postawić na aktywną współpracę. Regularna współpraca z menedżerem produktu lub właścicielem produktu i wprowadzanie niezbędnych zmian prowadzi do dostarczenia oczekiwanej wartości. 

"Nie koncentruj się na dostarczaniu całej listy rzeczy  […] – skup się na dostarczaniu tego, co jest wartościowe, czego ludzie faktycznie chcą lub potrzebują".– Jeff Sutherland w książce "Scrum: The Art of Doing Twice the Work in Half the Time"

4. Reagowanie na zmiany zamiast podążania za planem 

Zespół programistów powinien mieć plan swojej pracy, ale wiadomo, że nie zawsze wszystko idzie z pierwotnie założonym planem. Zatem, zamiast trzymać się czegoś, co nie działa, o wiele lepiej jest go zmienić i wprowadzać poprawki dostosowane do zmieniającej się sytuacji. 

12 zasad według Manifestu Agile 

1. Najwyższym priorytetem jest zadowolenie klienta poprzez wczesne i ciągłe dostarczanie wartościowego oprogramowania. 

2. Potrafimy radzić sobie ze zmieniającymi się wymaganiami, tak, by szybko i skutecznie dostosowywać produkt do potrzeb klienta i rynku. 

3. W każdym sprincie (iteracji) dostarczamy działające oprogramowanie.  

4. Ścisła współpraca między klientami i programistami musi trwać przez cały czas trwania projektu. 

5. Budujemy projekty wokół zmotywowanych osób, zapewniając im środowisko i wsparcie, którego potrzebują oraz mając pełne zaufanie, że wykonają dane zadanie. 

6. Najbardziej wydajną i skuteczną metodą przekazywania informacji w obrębie zespołu projektowego jest rozmowa twarzą w twarz

7. Podstawową miarą postępu jest działające oprogramowanie.  

8. Procesy zwinne promują zrównoważony rozwój, co oznacza, że nie należy organizować zbyt obszernych obowiązków wokół pojedynczych projektów. 

9. Większa zwinność jest możliwa dzięki stałą troskę o wysoką jakość techniczną projektu

10. Niezbędna jest prostota, czyli sztuka wykonania maksymalnej ilości pracy w przejrzysty sposób. 

11. Najlepsze architektury, wymagania i projekty wyłaniają się z samoorganizujących się zespołów, czyli takich, które są odpowiedzialne za swoją pracę. 

12. Zespół regularnie analizuje swoją efektywność i odpowiednio dostosowuje się do powziętych ustaleń. 

Powyższe zasady Agile są znajome praktycznie dla każdego członka zespołu projektowego pracującego w systemie takim jak Scrum. Chociaż niekiedy dostosowanie się do zmian, które są sednem Agile, może stanowić wyzwanie dla organizacji w trakcie wdrażania, mimo wszystko procesy te prowadzą do poprawy jakości tworzonego oprogramowania.  

Jakie metodyki wykorzystuje się w Agile? 

Zwinne zarządzanie projektami rozwinęło się przede wszystkim w branży rozwoju oprogramowania, ale może używane jako ogólny termin obejmujący wiele różnych ram. Może odnosić się do takich terminów jak Scrum, Kanban, Extreme Programming (XP) . 

Scrum — Jest to sposób działania, w którym decyzje podejmowane są na podstawie obserwacji, doświadczenia i eksperymentów. Praca jest wykonywana równolegle w iteracjach, czyli mniejszych etapach, z ciągłym eksperymentowaniem i uzyskiwaniem informacji zwrotnych, aby ulepszać stopniowo produkt. Jako zwinny framework, Scrum jest strukturą, umożliwiającą swobodną współpracę i integrację między ludźmi i zespołami ułatwiając optymalizację pod kątem konkretnych potrzeb klienta. 

Kanban — Metoda Kanban to zwinne podejście do zarządzania przepływem pracy. Koncentruje się na wizualizacji zadań do wykonania i dzielenia pracy na mniejsze etapy po to, by łatwiej nadawać właściwe priorytety. W tej metodzie wizualizuje się zadania do wykonania z wykorzystaniem przeróżnych narzędzi (np.JIRA/Azure). Polega to na wizualizacji pracy w toku pracy w zaległościach i pracy, która została zakończona.  Umożliwia optymalizację pracy i ciągłe doskonalenie procesów na podstawie analiz i raportów. 

Kanban - product delivery process

XP Extreme Programming — jedna ze zwinnych metodyk tworzenia oprogramowania, która podkreśla prostotę, odwagę, informację zwrotną i komunikację. Uznaje zmianę za rzecz nieuniknioną, wręcz naturalną w procesie tworzenia oprogramowania, dlatego powinna być dobrze zaplanowana. Ma na celu obniżenie kosztów zmiany wymagań, poprzez zastosowanie krótkich cykli iteracyjnych.  

Extreme Programming-planning feedback loops

Jak Agile wpływa na zarządzanie projektami? 

Zwinne zarządzanie projektami jest sposobem, w jaki wdrażamy Manifest i 12 zasad. Założeniem metodyki zwinnej jest to, że projekt może być stale ulepszany przez cały cykl życia (SDLC — Software Development Life Cycle), a zmiany są wprowadzane szybko i odpowiednio do sytuacji.  

Oznacza to stałą współpracę i pracę w iteracjach, czyli powtarzalnych cyklach mających na celu tworzenie, testowanie i wprowadzanie poprawek, aż do osiągnięcia oczekiwanego rezultatu. Zwinne zarządzanie projektem z założenia zawsze jest pragmatyczne. Innymi słowy, uznajemy, że czegoś nie wiemy, rozumiemy, że zmiany nie będą przewidywalne ani kontrolowane. Dlatego musimy być elastyczni, musimy brać rzeczy, których się uczymy i patrzeć, jak można je zastosować do tego, co robimy i jak to robimy.   

Celem tej elastyczności i zdolności do adaptacji jest zawsze upewnienie się, że zadowolimy naszego klienta. W odróżnieniu od metodyki kaskadowej (waterfall), Agile jest obecnie jednym z najpopularniejszych podejść do zarządzania projektami ze względu na swoją elastyczność, zdolność dostosowywania się do zmian i wysoki poziom zaangażowania klienta.   

Jak firmy adoptowały Agile w swoich organizacjach? 

Firmy zmierzają w kierunku metodologii Agile ze względu na jej elastyczność i zalety w porównaniu z tradycyjnymi systemami. Przyjmując Agile dla swojego interaktywnego środowiska, Sony zauważyło istotną różnicę, gdzie nastąpiło skrócenie czasu planowania o 28%, a przestoje zostały zredukowane do maksimum, co sprawiło, że firma oszczędza 30 milionów dolarów rocznie.  

Z kolei Cisco, jeden z popularnych liderów w branży informatycznej i sieciowej na świecie, stosuje metodologię zwinną w odniesieniu do swojej platformy rozliczeniowej SBP, która została pierwotnie opracowana w modelu wodospadowym. Po przyjęciu metodologii Agile produkt Cisco poprawił swoją ogólną wydajność, gdzie defekty zostały zredukowane o 40 procent w porównaniu z poprzednimi wydaniami, a wydajność usuwania błędów wzrosła o 16 procent

Również w VM osiągnęliśmy sukces dzięki wprowadzeniu Agile.  Od rozpoczęcia zmian urośliśmy 450% w ciągu 3 lat. Jak stwierdza Łukasz Borzęcki, CEO firmy:

"Filozofia Agile pomogła nam również w obecnym kryzysie, gdy niezbędne było, aby ważne decyzje zapadały szybko. Umożliwienie naszym pracownikom wypowiedzenia się i wzięcia udziału w ich podejmowaniu, przyczyniło się do wspólnego opracowania strategii i dało znaczne lepsze rezultaty."

Więcej na temat tego jak Agile pomogło nam osiągnąć biznesowy wzrost, obejrzysz tutaj

Podsumowanie 

Podążanie za zwinnymi wartościami nie zawsze jest łatwe, ale kiedy stają się częścią procesów zespołu, klienci zauważają znacznie wyższą jakość pracy. Można ją osiągnąć poprzez dostosowanie wymagań i skupienie się ulepszaniu produktywności, usuwając te przeszkody, które zakłócają wysiłek zespołu i zmniejszają wydajność działań. Pragmatyczne i elastyczne podejście jest kluczem w zwinnym dostosowaniu się do zmian w trakcie trwania projektu. Wtedy zarówno zespół, jak i klient uczą się z czasem coraz więcej i odnoszą korzyść. 

 



Design, Development, DevOps czy Cloud – jakiego zespołu potrzebujesz, aby przyspieszyć pracę nad swoimi projektami?
Porozmawiaj o swoich potrzebach z naszymi specjalistami.

Jakub Orczyk

Członek zarządu / Dyrektor sprzedaży
VM.PL

Zamów bezpłatną konsultację
kuba (1)