Agile czyli zwinne podejście do wytwarzania oprogramowania, które stało się najpopularniejszą metodą prowadzenia projektów informatycznych od początku XXI wieku. Podstawowymi czynnikami, które sprawiły, że konieczne było odejście od dotychczasowego sposobu prowadzenia projektów było przede wszystkim to, że świat zaczął zmieniać się coraz szybciej. Dotychczasowe podejście – „waterfall” – nie pozwalało na odpowiednio szybkie reagowanie na zmiany w wymaganiach – Agile natomiast zakłada, że wymagania oraz zakres projektu mogą się zmieniać w czasie.

Podstawowe zalety Agile

Jedną z najważniejszych cech metod Agile jest możliwość szybkiego dostosowania się do zmian wymagań. W przypadku dużych projektów informatycznych, często nie możliwe jest ustalenie na początku zakresu prac, ciężko jest przewidzieć wszystkie trudności. Co równie ważne oczekiwania po prostu zmieniają się w czasie ze względu na szybko zmieniające się otoczenie – nowe technologie czy innowacje wprowadzenie przez konkurencję.

Ważna cechą projektów prowadzonych w Agile jest także to, że prace mogą rozpocząć się bardzo szybko. Projekty „waterfall” wymagały wstępnej, długotrwałej analizy oraz wyceny. Agile pozwala na rozpoczęcie prac w zasadzie od razu nawet na podstawie bardzo ogólnego zarysu pomysłu na cały projekt.

Istotną zaletą projektów Agile jest także dostarczanie i pokazywanie przyrostów w regularnych, krótkich odstępach czasu – zwanych w wielu metodykach sprintami. Podejście takie daje wiele korzyści. Przede wszystkim pozwala na regularne uzyskiwanie feedbacków do tworzonych funkcjonalności. Z jednej strony pozwala to na uzyskiwanie lepszych efektów pracy, z drugiej zaś jest to realna możliwość by szybko korygować ewentualne błędy i minimalizować ich koszty. Praca w sprintach jest także odpowiedzią na tak zwany syndrom studenta – czyli odkładanie wszystkiego na ostatnią chwilę. Regularne zakończenia sprintów to dodatkowe deadliny w projekcie, które zwykle powodują, że zespół pracuje znacznie bardziej intensywnie odczuwając presję kończącego się czasu.

Wady zwinnych metod wytwarzania oprogramowania

Niestety zwinne metody wytwarzania oprogramowania to nie tylko zalety – mają one także swoje wady.

Istotnym punktem z pewnością jest to, że w optymalnym scenariuszu Agile powinien być stosowany z podejściem „time and material” na co nie zawsze jest zgoda po stronie klienta. Rozliczanie się za faktycznie przepracowany czas zamiast za efekty to spore ryzyko dla klienta, który często ma niewielką kontrolę nad zespołem i nie jest w stanie określić i zweryfikować pracochłonności zadań. Z drugiej zaś strony podejście „fixed price” bardzo redukuje zalety stosowania Scrum-a. Gdy chcemy określić cenę na początku nie będziemy mogli zrezygnować z długiej i nieefektywnej fazy analizy, która jest konieczna by móc spróbować wycenić projekt. Konieczność podania ceny i dokonania analizy zmniejsza także naszą elastyczność. Każda wprowadzana w trakcie projektu zmiana wymaga dokonania ponownej wyceny oraz zakwalifikowania jej jako „change request”.

Inną wadą często zauważaną przez zespół deweloperski jest także duży stopień sformalizowania Scruma czy innych metod zwinnych. Choć zgodnie z manifestem Agile mamy w tego typu projektach zwykle znacznie mniej dokumentacji to jednak nadal dużym kłopotem dla wielu są tak zwane „artefakty” Scruma. To spotkania czy wydarzenia, które regularnie pojawiają się przy tworzeniu projektów w tej metodyce – należą do nich: codzienne stand up’y, planningi, retrospektywy czy backlog refinement. Trzeba przyznać, że spotkania te pozwalają zgodnie z założeniami na monitorowanie postępów czy odpowiednie ustawienie priorytetów zadań – nie są jednak ciekawe i lubiane przez znaczną część programistów. Są też po prostu dość czasochłonne, potrafią zabierać nawet 20% czasu pracy.

Wadą Scruma (choć wspomnianą także jako zaleta) są także krótkie (2-4 tygodniowe) sprinty. Dla zespołu developerskiego – choć są one z pewnością dodatkową motywacją są także dodatkową presją, która nie zawsze jest mile widziana przez pracowników. Konieczność pokazywania tworzonej aplikacji na każdym etapie powoduje także, że tracimy dodatkowy czas na tworzenie zaślepek czy po prostu przygotowywanie się do demo.

Scrum a Agile

Popularnym pytaniem osób, dla których podejścia zwinne są nowością jest to czym się różni Agile i Scrum. Najprościej można wyjaśnić, że Scrum jest metodą opartą na założeniach Agile. Manifest Agile ogłoszony na początku XXI przedstawiał szereg założeń, które zostały później zaimplementowane w postaci konkretnych metod wytwarzania oprogramowania takich jak na przykład Scrum, który stał się jednym z najbardziej popularnych podejść do stosowania zasad Agile.

Praca w Scrum (Agile) w praktyce

Warte podkreślenia jest również to, że praca w Scrumie czy innych zwinnych metodach, często trochę różni się od tego jak została opisana w książkach czy podręcznikach uczących jak korzystać z tych metod. Wiele z tych „przewodników” wprost pozwala na stosowanie swoich adaptacji i ulepszeń by pracować jak najbardziej efektywnie.

W codziennej praktyce trudno jednak wyobrazić sobie pracę w Scrum bez najbardziej rozpoznawalnego elementu jakim są codzienne spotkania zespołowe – stand up’y. Pozwalają one na zapoznania się z tym co planują robić inni członkowie zespołu. Są również doskonałym miejscem na identyfikowanie ewentualnych zależności ale także na rozwiązywanie problemów. W praktyce (choć to niezgodne z założeniami) są też metodą na analizę pracę zespołu i kontrolę czy przyrost jest odpowiednio szybki.

https://asana.com/product

Innym bardzo rozpoznawalnym „artefaktem Scruma” spotykanym też w innych metodykach zwinnych są sprinty. Te krótkie okresy, po których pokazujemy stworzoną przez zespół funkcjonalność. Dają one możliwość otrzymywania szybkiego feedbacku, reagowania na błędy oraz minimalizowania kosztów błędnych implementacji wymagań. Jednocześnie sprinty jako cykliczne i częste deadliny są narzędziem, który pozwala na utrzymywanie wysokiej, odpowiedniej motywacji do pracy.

Scrum to także szereg innych spotkań, które są dość charakterystyczne. Jednym z ważniejszych z nich jest planowanie, które odbywa się przed każdym sprintem. Pozwala one na poznanie priorytetów i zadań na kolejny sprint. Inne cykliczne spotkanie to retrospektywa, na której odpowiadamy sobie jak przebiegał poprzedni sprint co było w nim udane a co można by jeszcze udoskonalić. To doskonały sposób by szybko identyfikować problemy, które ma zespół i spróbować je w miarę możliwości rozwiązywać. Regularnie odbywa się także backlog refinement czyli spotkanie, na którym sprawdzamy zadania, które będą realizowane w kolejnych sprintach – oceniamy ich priorytet a także definiujemy wymagania.

Korzyści dla naszych klientów

Klienci, który korzystają z usług zespołów developerskich coraz częściej i chętnie korzystają ze Scruma. Choć zwykle Scrum wymaga także wprowadzenia podejścia „time and material”, które nie jest bardzo mile widziane – ostatecznie w nowoczesnych projektach mimo wszystko coraz bardziej dostrzegane są benefity jakie potrafi nam dać Scrum. Niezwykle istotna jest przede wszystkim możliwość znacznie łatwiejszego i tańszego wprowadzania zmian do dotychczasowych wymagań. Jest to niezbędne w XXI wieku – w okresie kiedy wszystko – a szczególnie technologia zmienia się niezwykle szybko. Niestety metody typu „waterfall” choć pozwalają na ustalenie „fixed price” znacznie ograniczają tę elastyczność. Scrum to także znaczne ograniczenie kosztów błędnych implementacji. W przypadku metod typu „waterfall” docelowy klient widział swój produkt często po kilku miesiącach a nawet latach. Po tym czasie wytworzone oprogramowanie mogło okazać się niezgodne z wyobrażeniami klienta czy z różnych względów niepotrzebne po takim upływie czasu. Scrum to regularne spotkania z docelowym klientem, który ma szanse interweniować gdy coś odbiega od jego wyobrażeń. Dzięki temu ograniczamy zwykle straty do maksymalnie jednego sprintu.

Podsumowanie

Podsumowując metody Agile to nowoczesne podejście do zarządzania projektów informatycznych (i nie tylko), które w spektakularny sposób wypierają w ostatnich latach dotychczasowe podejścia. Ich najważniejsze zalety takie jak duża elastyczność i zmniejszenie ryzyka projektowego to cechy bardzo cenione w nowoczesnych korporacjach, co jeszcze bardziej przyczynia się do zwiększenia ich popularności.