Iteracja to zamknięty, ograniczony czasowo cykl pracy, w którym zespół planuje zakres, realizuje go, testuje rezultaty i ocenia gotowy przyrost produktu. Słowo pochodzi od łacińskiego iteratio, czyli powtarzanie. Wnioski z jednego cyklu zasilają kolejny, więc każda runda bazuje na doświadczeniach poprzedniej. Kiedy mówisz, że pracujesz iteracyjnie, opisujesz powtarzalny rytm, w którym produkt powstaje stopniowo, a kierunek prac korygujesz na bieżąco.
Słownik PWN definiuje iterację jako metodę polegającą na wielokrotnym stosowaniu tego samego przekształcenia lub procedury. W tym sensie synonimami są cykliczne powtarzanie, sprint i timebox. Pełne znaczenie znajdziesz w haśle iteracja – Słownik PWN.
Iteracyjny co to znaczy w praktyce
Pojedyncza iteracja to timebox, czyli przedział czasu o z góry ustalonej długości. W jego ramach mieści się pełny zestaw działań: planowanie, wdrożenie i testowanie. Gdy cykl się kończy, zespół rozpoczyna następny z uwzględnieniem tego, czego się nauczył. Dzięki temu produkt rośnie kawałek po kawałku, a nie w jednym wielkim rzucie na koniec.
Podejście iteracyjne rozpoznasz po kilku cechach:
- każdy cykl ma określony czas trwania i jeden jasny cel;
- iteracja kończy się działającym przyrostem, który możesz zaprezentować i ocenić;
- informacje zwrotne od interesariuszy realnie zmieniają kształt kolejnych cykli;
- błędy ujawniają się wcześnie, bo rezultaty weryfikujesz regularnie.
Agile Alliance opisuje iterację jako timebox, w którym odbywa się wytwarzanie oprogramowania, a jego długość jest zwykle stała i wynosi od jednego do czterech tygodni. Szczegóły znajdziesz w haśle What is an Iteration? – Agile Alliance Glossary.
Iteracja w Scrumie i metodykach zwinnych
W Scrumie iteracje noszą nazwę sprintów i trwają zazwyczaj od jednego do czterech tygodni. Sprint to podstawowa jednostka organizacji pracy zespołu. W jego trakcie deweloperzy realizują wybrane elementy z Product Backlogu i dostarczają działający przyrost produktu. Każdy sprint zamyka Sprint Review oraz Retrospektywa, które dają zespołowi dwa mechanizmy: inspekcję dotychczasowej pracy i adaptację procesów na przyszłość.
Rozróżnij dwa pojęcia, które w Scrumie działają razem. Podejście iteracyjne to wielokrotne doskonalenie tego samego elementu w kolejnych cyklach. Podejście przyrostowe oznacza stopniowe dodawanie nowych funkcjonalności do rosnącego produktu. Scrum łączy oba wymiary, więc produkt jednocześnie się rozrasta i jest ulepszany.
Sama długość sprintu opiera się na zasadzie timeboxingu, czyli ustalonego z góry limitu czasu na dany blok pracy. Jak stosować timeboxing w praktyce, pokazuje artykuł What is Timeboxing in Scrum? – Scrum Alliance.
Iteracja a rekurencja w programowaniu
W programowaniu iteracja oznacza wielokrotne wykonywanie tej samej operacji w pętli, aż do spełnienia określonego warunku lub osiągnięcia z góry ustalonej liczby powtórzeń. Łatwo pomylić ją z rekurencją, choć działają inaczej.
- iteracja wykonuje ciąg instrukcji w pętli, bez wywołania funkcji przez samą siebie;
- rekurencja polega na tym, że funkcja wywołuje samą siebie;
- algorytmy iteracyjne są na ogół wydajniejsze pamięciowo.
Porównanie obu technik z przykładami kodu opisuje materiał Rekurencja a iteracja – Zintegrowana Platforma Edukacyjna.
Podejście iteracyjne kontra model kaskadowy
Główna różnica między iteracjami a liniowym modelem kaskadowym (Waterfall) dotyczy momentu weryfikacji. W Waterfallu fazy następują po sobie, a ocena rezultatów przychodzi dopiero po zakończeniu całego projektu. W podejściu iteracyjnym każda runda dostarcza działający przyrost, który od razu podlega ocenie interesariuszy. Dzięki temu błędy i nietrafione założenia wychodzą na jaw znacznie wcześniej, co skraca czas wykrycia problemów i ogranicza koszty poprawek.
Iteracje sprawdzają się szczególnie w kilku sytuacjach:
- wymagania mogą się zmieniać w trakcie prac;
- opinie użytkowników realnie wpływają na kształt produktu;
- chcesz przetestować rozwiązanie w mniejszej skali przed pełnym wdrożeniem.
W takich warunkach możliwość korekty kierunku po każdym cyklu staje się przewagą.
Ryzyka i dobre praktyki iteracji
Najpoważniejszym zagrożeniem w pracy iteracyjnej jest pełzanie zakresu, czyli scope creep. Pojawia się, gdy w trakcie cyklu dokładasz kolejne, nieplanowane zadania, przez co cel się rozmywa, a dokończenie przyrostu robi się trudne. Zabezpieczasz się przed tym, definiując przed startem każdej iteracji trzy elementy: cel, zakres i kryteria sukcesu. Wtedy zespół wie, kiedy pracę można uznać za zakończoną.
Retrospektywa po każdym cyklu utrzymuje dyscyplinę i doskonali sposób pracy. Zespół sprawdza, co poszło dobrze, co poprawić i jaką zmianę wprowadzić w następnej iteracji. Ten powtarzalny rytm planowania, działania i refleksji dostarcza wartość biznesową częściej niż jednorazowe planowanie całego projektu z góry.
FAQ
Co to jest iteracja
Iteracja to ograniczony czasowo cykl pracy, w którym zespół planuje zakres, realizuje go, testuje i ocenia gotowy przyrost, a wnioski przenosi do kolejnego cyklu.
Ile trwa jedna iteracja
W metodykach zwinnych iteracja ma zwykle stałą długość od jednego do czterech tygodni. W Scrumie ten cykl nazywa się sprintem.
Czym iteracja różni się od rekurencji
Iteracja wykonuje instrukcje w pętli bez wywołania funkcji przez samą siebie, a rekurencja polega na tym, że funkcja wywołuje samą siebie. Algorytmy iteracyjne są na ogół wydajniejsze pamięciowo.
