Ile iteracji jesteś w stanie wytrzymać?

January 24th, 2008 Marcin Niebudek

No właśnie… W metodyce Scrum używamy określenia sprint dla, zwykle trzydziestodniowej, iteracji. I tak sobie myślę, że to bardzo trafne określenie. Tylko czy sprinter jest w stanie być długodystansowcem? Ideą iteracyjnego podejścia do tworzenia oprogramowania jest zachowanie stałego rytmu i dyscypliny pracy oraz skupienie się na ciągłym dostarczaniu działającego produktu.

Rytm. Iteracje z założenia są równe. Czasem robi się odstępstwo dla tych początkowych, ale później staramy się utrzymać już jednakową długość, bo tylko wtedy można coś sensownego wyczytać z liczonych po drodze metryk takich jak np. velocity (czyli wydajność zespołu) i obserwować jakieś trendy. Rytm dodatkowo pomagają utrzymać spotkania na początku i końcu iteracji, kiedy planujemy i podsumowujemy efekty naszej pracy.

Dyscyplina. Wymaganie dostarczania co iterację nowej, działającej wersji produktu powoduje, że czas jest lepiej wykorzystywany. Dobrze znany z podejścia kaskadowego efekt wypoczywających na początku projektu programistów, którzy potem nadrabiają przez ostatni tydzień braki w projekcie nie powinien zdarzyć się w podejściu iteracyjnym. Iteracje są na tyle krótkie, że nie można sobie pozwolić na zbyt długie rozluźnienie i bujanie w obłokach, albo na prywatne wycieczki programistów w rejony, które ich szczególnie kuszą, ale niekoniecznie muszą być związane z kluczowymi funkcjami systemu i wymaganiami klienta. Tutaj trzeba zamknąć kolejną wersję w 2-3 tyg. i ma ona działać. Opowiadanie klientowi, jaki to fantastyczny schemat bazy danych udało nam się w tym czasie zaprojektować nie pomoże, jeśli nie pokażemy systemu w działaniu. Liczą się zaimplementowane funkcjonalności.

Skupienie. Chodzi przede wszystkim o skupieniu się na głównym celu i kluczowych funkcjach. Czasu w iteracji jest stanowczo za mało, żeby pozwolić sobie na implementację funkcji o niskim priorytecie, bo nie zdążymy z rzeczami dla klienta najważniejszymi. I on szybko się o tym dowie - w najgorszym wypadku pod koniec iteracji.

Ten tryb pracy przynosi naprawdę dobre efekty. Ale ile takich iteracji jest w stanie wytrzymać programista? Czy stojąc właśnie u progu 30-tej iteracji nadal jest taki skupiony i zdyscyplinowany? Przyjęło się, że velocity powinno się w zespole ustabilizować po 2-3 pierwszych iteracjach i potem można już zacząć przewidywać kiedy zespół jest w stanie skończyć kolejne zaplanowane i oszacowane funkcje oraz ile ich wejdzie w każdą kolejną iterację. Jednak pracując iteracyjnie jesteśmy jak sprinter - wiemy, że mamy przebiec krótki dystans i wkładamy w to całą swoją energię. Nie jesteśmy tak jednak w stanie przebiec maratonu.

Utrata wydajności

Rys. Utrata wydajności zespołu agile.

Wydaje mi się, że ta ustabilizowana z czasem wydajność zespołu agile musi prędzej czy później się załamać. Tylko kiedy jest ten moment? Ciekaw jestem jakie wy macie doświadczenia z tego typu projektami? Jaki był wasz najdłuższy projekt prowadzony wg. agile? Jaką długość iteracji uznajecie za idealną? Ja osobiście chyba najbardziej lubię iteracje dwutygodniowe a pojedynczy projekt nie przekroczył jeszcze w moim przypadku 7-8 miesięcy. Obawiam się jednak, że blisko już jestem maksymalnego pułapu.


Kategorie: Agile dla managerów, Agile dla programistów, Agile dla klientów

 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 (No Ratings Yet)
Loading ... Loading ...

4 komentarzy Dodaj komentarz

  • 1. szeryf  |  January 24th, 2008 at 09:35

    Zmęczenie materiału (ludzkiego) może rzeczywiście być przyczyną obniżenia wydajności, ale przede wszystkim wynika to ze zwiększającego się rozmiaru projektu. Powoduje to, że dodawanie nowych funkcji wymaga coraz więcej wysiłku. Coraz więcej pracy potrzebne jest, aby zapewnić, że nowo dodawana funkcja nie psuje czegoś w już istniejącym kodzie. Zjawisko to nie dotyczy oczywiście tylko agile, ale wszystkich projektów programistycznych.

  • 2. kuba  |  March 4th, 2008 at 07:25

    Znam projekty, ktore realizowane iteracyjnie i trwaja juz od ponad roku. Istnieja tez takie, ktorych ludzie maja dosc po pierwszym miesiacu. Mysle, ze bardzo wazna jest tu rola PMa, ktory swiadomie nie pozwoli by zespol “wypruwal sobie zyly” od pierwszej iteracji. Bo takiego tempa nie da sie utrzymac. Od czasu do czasu musza pojawic sie w projekcie rzeczy przyjemniejsze niz kolejne code review i marudzacy klient.

    Co do przewidywania czasu zakonczenia projektu - predkosc chwilowa bedzie sie zmieniac (urlop, choroba lub firmowa impreza), ale srednia predkosc pozwala przewidywac z przyzwoita dokladnoscia. Rowniez dlatego potrzebne jest tych kilka iteracji rozruchowych, zeby zebrac dane statystyczne.

  • 3. Piotr Gabryanczyk  |  March 12th, 2008 at 21:06

    Nasze iteracje sa 2-tygodniowe. Zauwazylem ze drugi tydzien jest zawsze intensywny i wymaga duzo energii. Pierwszy natomiast jest spokojny i wywazony. W pierwszym tygodniu ludzie sa w trybie “do it right’, w drugim natomiast w trybie “get it done”. To swietny podzial czasu, bo nie cierpi na tym architektura systemu. Jest czas na przemyslenie rozwiazan. Ludzie lapia oddech. W drugim tygodniu natomiast liczy sie dotrzymanie terminu, wiec ostatecznie projekt “wychodzi na swoje”.

    Nie wypalamy sie jeszcze… ;)

  • 4. piekielny  |  March 18th, 2008 at 14:09

    U nas mamy 2-tygodniowe iteracje i ok 12-14 iteracji na release. Przy założeniu prawie 100% automatyzacji testów nie odczuwa się tak bardzo zwiększania rozmiaru projektu przy kolejnych iteracjach. Jednak generuje to dosyć sporo pracy dla testerów.

Skomentuj wpis

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


Ostatnio dodane wpisy