W dobie Agile projekty informatyczne są często traktowane jako wiele następujących zaraz po sobie sprintów. Można się spotkać z głosami, że taki projekt to raczej maraton, gdzie powinniśmy się skupiać na celu w dłuższej perspektywie. Jednak indywidualny bieg nie oddaje dobrze wielu niuansów związanych z współpracą w zespole, dużo lepszym porównaniem jest wyścig kolarski.

O sprintach i długach

James Grenning pisze na swoim blogu,  że sprint w programowaniu, tak jak w sporcie, prowadzi do wyczerpania. Jest to krótki, bardzo intensywny wysiłek i po jego zakończeniu potrzeba trochę czasu, żeby złapać oddech. Nikt nie każe Usainowi Boltowi po zakończonym biegu pokonać 100 metrów jeszcze raz w tym samym czasie. Programiści jednak zaraz po jednym sprincie zaczynają kolejny.

Podczas krótkiego intensywnego wysiłku organizm zaciąga dług tlenowy, czyli zużywa więcej tlenu potrzebnego do pracy mięśni, niż jest w stanie pobrać oddychając. Wykorzystuje wtedy zmagazynowane rezerwy, które wystarczą na krótkotrwały wysiłek. Kiedy się skończą – odcina nam prąd. Po takim wysiłku musimy złapać oddech, czyli uzupełnić rezerwy. Alternatywą jest stan równowagi tlenowej, kiedy przy mniej intensywnym wysiłku zużywamy tyle samo tlenu, ile dostarczają nam płuca. Taki wysiłek może trwać dużo dłużej.

W programowaniu, kiedy staramy się wykonać zadanie bardzo szybko, również zaciągamy dług. Jest to dług technologiczny. Zostawiamy na później takie rzeczy jak przemyślany design, testowanie, czy dokumentacja. Aby się wyrobić na czas, stosujemy szybkie, brzydkie fixy. Niestety z takimi fixami zwykle jest tak, że szybkie są tylko przez chwilę, a brzydkie pozostają na długo. W końcu zaniedbania są tak znaczące, że uniemożliwiają dalszy rozwój projektu. Aby utrzymać tempo przez dłuższy czas, lepiej jest więc dodawać zmiany wolniej, ale większy nacisk kłaść na ich jakość.

Praca zespołowa

Kolarstwo szosowe jest sportem zespołowym, a w drużynie panuje podział zadań. Są sprinterzy, górale, specjaliści od ucieczek, bruków, czy pomocnicy. Wszyscy pracują na wspólny cel, a w jego osiągnięciu poza formą fizyczną pomaga także wiedza techniczna i doświadczenie.

Kolarze zwykle podczas etapu mają do przejechania około 200 kilometrów. Wiedzą, że aby wygrać, trzeba dobrze rozłożyć siły i współpracować. Dlatego jechanie na maksa od startu zwykle nie przynosi rezultatu i uciekinierzy zwykle są łapani przed metą.

Jako, że zawodnicy w drużynie mają różne zadania, każdy może dać z siebie wszystko w innym momencie. Taka praca na maksa może się skończyć odcięciem prądu. Jednak po wykonanym zadaniu kolarz musi już tylko dojechać do mety najmniejszym nakładem sił i zregenerować się przed kolejnym etapem.

Możemy z tego wyciągnąć wiele nauki. Dobrze mieć w zespole ludzi o różnorodnych kompetencjach, które mogą być przydatne w różnych etapach realizowania projektu. Nie warto zarzynać się od samego początku licząc na to, że dobrniemy do końca przed wyczerpaniem. Zamiast tego lepiej trzymać równe, solidne tempo, które jesteśmy w stanie utrzymać przez cały czas. W krytycznych momentach sytuacja może wymagać od poszczególnych osób poświęcenia, ale potem powinny one dostać możliwość regeneracji.

Planowanie i zmiany

Zarówno na całe wyścigi, jak i na poszczególne etapy grupy kolarskie tworzą odpowiednie plany uwzględniające sytuację w klasyfikacji, profil etapu i specjalizację kolarzy oraz ich aktualną dyspozycję. Plany zakładają kto ma się zabrać w ucieczkę, kto ma zostać do pomocy liderowi, kto ma oszczędzać siły na inny etap, czy kiedy należy podkręcić tempo. Jednak te plany trzeba na bieżąco dostosowywać, bo w końcu jak zapanować nad takim chaosem:

Niezależnie co się stanie na trasie, gwarancją sukcesu jest zgrany zespół potrafiący szybko adaptować się do zmieniających się warunków.

Ważnym aspektem jest tutaj komunikacja. Cały zespół razem z dyrektorem technicznym są cały czas w łączności radiowej. Dzięki temu zawodnicy wiedzą, co się dzieje na trasie i jakie mają zadania.

Możemy więc nauczyć się od kolarzy, że plany są czymś dobrym. Pozwalają członkom zespołu lepiej zrozumieć cele projektu i swój wkład w jego wykonanie. Jednak ten plan musi być na bieżąco korygowany w odpowiedzi na zmieniającą się sytuację. Nie da się na wszystko przygotować, dlatego należy się pogodzić ze zmianami i mieć zaufanie, że zespół wspólnymi siłami sobie poradzi.

Podsumowanie

Na porównanie projektu informatycznego do wyścigu kolarskiego wpadłem niedawno przygotowując się do wystąpienia na grupie Agile w mojej firmie i byłem bardzo z siebie zadowolony. Po pierwsze dlatego, że moim zdaniem fajnie pasuje, a po drugie dlatego, że lubię kolarstwo i każdy pretekst, żeby o nim pogadać jest dobry 😀

Jakie było moje zaskoczenie, kiedy wczoraj podczas spotkania zespołu dla pokazania wagi współpracy puszczono taki oto filmik:

Widocznie nie tylko ja dostrzegłem tę analogię.