Iteration

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.