Metodyki zwinne, agile, framework, iteracje przyrostowe, metodyki produkcji oprogramowania… Każdy może zgubić się w gąszczu wciąż rosnącej liczby sformułowań, stosowanych w żargonie IT. Większość z nich, można jednak wytłumaczyć w bardzo prosty sposób. W tym wpisie odpowiemy sobie na pytanie „Co to jest agile?”
Agile, tłumacząc (w kontekście tworzenia oprogramowania) na język polski, to metodyka zwinna. By zrozumieć to skąd wziął się drugi człon tego określenia, należy wiedzieć czym jest sama metodyka.
Metodyka w pigułce
Sięgając do słownika języka polskiego PWN, znajdziemy następującą definicję:
Metodyka – zbiór zasad dotyczących sposobów wykonywania jakiejś pracy
Źródło: sjp.pwn.pl
Ta prosta formuła bardzo dobrze naprowadza nas na sedno znaczenia metodyki, które określić można w jednym pytaniu „Jak należy osiągnąć cel?”. W przełożeniu na pracę zespołu projektowego, metodyka oznacza nic więcej, jak sposób organizacji codziennej pracy, wyznaczania zadań oraz rozliczania się z nich. Co ważne metodyki, nie tyczą się jedynie produkcji oprogramowania. Stosuje się je w przypadkach wielu rodzajów prac zespołowych.
Metodyki w kontekście procesu produkcji oprogramowania, są najczęściej dzielone na dwie grupy – klasyczne i zwinne (agile). Przedstawicielem pierwszej grupy jest np. PRINCE2, a drugiej niezwykle popularny Scrum.
Mało zwinny książę
By krótko scharakteryzować metodyki klasyczne, zwane również tradycyjnymi możemy opisać, w mocnym uproszczeniu, sposób pracy z wykorzystaniem metodyk z tejże grupy.
Na początku projektu dokonujemy opisania, jak działać ma gotowy produkt. Następnie przygotowujemy plan jego wykonania i wdrażania. Później wykonujemy wszystkie założone kroki i dopiero gdy wszystkie są zakończone, przedstawiamy produkt. Dopiero po długim czasie pracy klient, lub też osoba odpowiedzialna za projekt, może stwierdzić czy produkt spełnia oczekiwania.
Co jeśli klient nie będzie zadowolony? Tu właśnie zaczynają się schody. Ten rodzaj metodyki, nie zakłada możliwości znacznej modyfikacji planów utworzonych na początku projektu. A gdyby osoba zamawiająca produkt mogłaby stale być informowana o przebiegach pracy? Jak jednak podzielić pracę w taki sposób, by kolejne jej gotowe elementy można było stale prezentować? Tu na scenę, wśród fanfar i oklasków, wkraczają metodyki zwinne.
Agile to zadowolenie
Czym charakteryzują się metodyki agile? Ich opis najlepiej zacząć od cytatu z Założeń Manifestu Programowania Zwinnego:
Najwyższy priorytet ma zadowolenie klienta, dzięki wczesnemu i ciągłemu wdrażaniu wartościowego oprogramowania
Źródło: https://agilemanifesto.org/iso/pl/principles.html
W celu zrealizowania tego założenia, cały proces produkcyjny podzielony jest na kilkutygodniowe, lub kilkumiesięczne iteracje przyrostowe. To nieco enigmatyczne określenie oznacza, że co zadany odstęp czasu zespół powinien dostarczyć działający element oprogramowania, zapewniający nową funkcjonalność. Dzięki takiemu podejściu klient, może stale obserwować rozwój produktu, nie czekając przysłowiowej „wieczności” na dostarczenie finalnego oprogramowania. Stale widzi on, jakie gotowe elementy się w nim pojawiają.
By zwizualizować sobie pracę w metodyce agile, weźmy na warsztat prosty przykład. Wyobraźmy sobie zespół, tworzący aplikację do zliczania przebytych kilometrów, pracujący w metodyce zwinnej. W danej iteracji, zespół postanawia zaimplementować asystenta motywującego do dalszego chodzenia. Po określonym czasie dostarczają oni tą funkcjonalność klientowi. Jeśli wszystko jest w porządku, to zajmują się oni kolejną funkcjonalnością. Jeśli klientowi nie przypadł do gustu nowo wdrożony element, do poprawy mają tylko jeden z elementów aplikacji, a nie cały produkt.
Stała adaptacja
Jak wiadomo, podczas trwania procesu produkcyjnego, rynek może się zmienić, klient przeformułować wymagania, lub potrzebować nowej funkcjonalności. Dlatego właśnie kolejne, z głównych założeń metodyk zwinnych, brzmi:
Bądźcie gotowi na zmiany wymagań nawet na późnym etapie jego rozwoju. Procesy zwinne wykorzystują zmiany dla zapewnienia klientowi konkurencyjności
Źródło: https://agilemanifesto.org/iso/pl/principles.html
Punkt ten, połączony nierozerwalnie z głównym założeniem priorytetyzacji zadowolenia klienta, realizowany jest przez stały kontakt z nim i modyfikowanie założeń projektu, korzystając z informacji zwrotnych.
Istotę metodyk zwinnych, można więc po krótce opisać dwoma określeniami: „podział pracy” i „adaptacja”.
Podsumowanie
Istnieje znacznie więcej założeń oraz zalet metodyk zwinnych, a przykłady podane powyżej to tylko czubek góry lodowej. Jeśli chcecie dowiedzieć się więcej na temat metodyk agile, zapraszam was do zapoznania się z tekstem omawiającym najpopularniejszego ich przedstawiciela – Scruma. Tekst ten, pojawi się już za tydzień, na łamach waszego ulubionego, programistycznego bloga binarnie.pl ;).
Scrum Master
says:Podoba mi się sformułowanie Agile to zadowolenie (klienta) 😉