Doresc să prezint o metodă simplă de a calcula capacitatea de lucru a unei echipe în cadrul unui sprint și velocitatea proiectului pentru sprintul următor, în condițiile în care deja există un backlog cu sarcini de lucru (work items), toate estimate în story points. Am inclus un spreadsheet template (fișă de calcul șablon) ce se poate consulta sau folosi ca sursă de inspirație.
Lucrez cu SCRUM de câțiva ani, iar pe parcursul timpului am dezvoltat o metodă pentru a monitoriza capacitatea echipei și a estima corect velocitatea sprinturilor următoare. A funcționat destul de bine pentru mine, motiv pentru care fac această metodă publică în speranța că va ușura planificarea sprinturilor voastre.
Notă: Acest articol presupune că echipa voastră are deja un backlog cu sarcini de lucru, toate estimate în story points.
Sunteți Scrum Master și trebuie să gestionați primul vostru sprint. Ce tooluri puteți folosi? Cel mai probabil, compania pentru care lucrați are astfel de tooluri și puteți apela la colegii voștri pentru ajutor. Dacă nu, vă puteți crea propriile tooluri. Din moment ce planificarea sprinturilor presupune niște calcule, cele mai folosite produse software sunt fișele de calcul (spreadsheets).
Ce trebuie să includeți?
Datele de început și final de sprint;
Lista cu toți membrii echipei;
Lista cu zilele de lucru din cadrul sprintului (0.5 pentru zilele cu jumătate de normă, 0 pentru zilele libere);
Asta e tot! Acestea sunt ingredientele pentru a aplica o matematică simplă care vă va ajuta să vă planificați sprintul.
Pentru a avea o imagine clară, de ansamblu a tuturor sprinturilor trebuie să vă concentrați sprinturile într-un tabel sumativ (Overview Sheet). Pentru a realiza acest lucru, trebuie să enumerați pe o coloană toate sprinturile, iar apoi, pentru fiecare sprint trebuie să menționați capacitatea calculată (în fiecare fișă de calcul).
Pentru a estima velocitatea aveți nevoie de date istorice. În primul sprint, nu aveți date istorice, deci nu puteți folosi formula. Ceea ce puteți face este să introduceți un număr rezonabil, realist, precum numărul de zile lucrătoare din cadrul sprintului: capacitatea.
Sprint 1. Velocitate estimată = Capacitatea sprintului (doar pentru Sprintul 1)
La finalul sprintului 1, veți obține velocitatea reală (numărul exact de story points livrate). Folosiți această valoare pentru a estima velocitatea sprintului 2:
Velocitatea estimată a sprintului 2 = (Capacitatea sprintului 2) * (Story Points per zi în sprintul 1)
Notă: Story Points per zi = (Velocitatea livrată / Capacitatea sprintului)
Pentru următoarele sprinturi, velocitatea estimată va fi egală cu capacitatea sprintului înmulțită cu media Story Points per zi din sprinturile anterioare.
Sprintul 4. (Velocitatea estimată) = Capacitatea sprintului * (Media Story Points per zi din sprinturile anterioare)
După cinci sprinturi velocitatea estimată va fi foarte realistă. De asemenea, procentul de finalizare a sarcinilor de lucru va fi foarte aproape de 100%.
Procentul de finalizare a sarcinilor de lucru (Completion Rate). Pe măsură ce parcurgeți din ce în ce mai multe sprinturi, procentul mediu de finalizare a sarcinilor de lucru va tinde spre 100%.
Apoi, trebuie (1) să introduceți disponibilitatea echipei și zilele libere în cadrul ședinței de planificare, (2) să introduceți velocitatea asumată a sprintului (Committed Velocity) dacă aceasta este diferită de cea estimată (Projected Velocity), iar ultimul pas, (3) să introduceți velocitatea livrată (Completed Velocity) la finalul sprintului în Overview sheet. Sunt doar trei pași manuali și câteva formule! Apropo, nu vă îngrijorați, toate formulele se regăsesc în Google Spreadsheet template de la finalul articolului.
Tabelul sumativ (Overview table) de mai sus are o serie de coloane ce au nevoie de o descriere succintă.
Sprint (Sprint) # reprezintă numărul sprintului sau numele sprintului.
Data de început (Sprint Start) reprezintă prima zi din sprint.
Capacitatea sprintului (Sprint Capacity) reprezintă numărul total de zile lucrătoare ale membrilor echipei: programatori sau programatori și QA, dacă doriți să includeți QA în calcularea capacității.
Velocitatea estimată (Projected Velocity) reprezintă numărul estimat de story points pe care echipa îl va livra la finalul unui sprint. Aceasta este o valoare ideală. Valoarea reală (completed velocity) va fi mai mare sau mai mică.
Velocitatea asumată (Committed Velocity) reprezintă numărul de story points pe care echipa și-l asumă ca obiectiv de livrare la final de sprint. Numărul poate fi identic cu velocitatea estimată (Projected Velocity) sau diferit. Echipa poate decide să își asume un număr mai mic, astfel încât să poată introduce sarcini de lucru pe parcursul sprintului. De exemplu, puteți decide ca velocitatea asumată (committed velocity) să fie 80% din velocitatea estimată (projected velocity), pentru a avea o flexibilitate de 20%, pentru a putea adăuga sarcini de lucru în timpul sprintului, datorită naturii proiectului la care lucrați.
Velocitatea livrată (Completed Velocity) reprezintă numărul de story points pe care echipa l-a livrat la finalul sprintului.
Procentul de finalizare a sarcinilor de lucru (Completion Rate) reprezintă procentual cât de mult a livrat echipa comparativ cu velocitatea estimată, ideală. Procent de finalizare = Velocitate livrată / Velocitate estimată.
Echipa voastră nu este o entitate fixă. Unii membri pot să nu fie 100% disponibili în cadrul unei echipe. Dacă un membru lucrează cu jumătate de normă, 4 ore din 8, puteți evidenția acest lucru foarte simplu: capacitatea voastră zilnică nu este 1, ci (e.g.) ½., sau pot lucra în cadrul echipei de luni până miercuri, iar săptămâna următoare de joi până vineri etc.
Când aveți un membru nou, această persoană va livra în primul sprint între 0-10%. Rezultatele sale măsurabile vor fi mai aproape de zero, din moment ce persoana încă învață și se acomodează. Fiecare sprint va crește acest procent cu aproximativ 10%, după 10 sprinturi noul venit fiind complet integrat. Acest aspect trebuie monitorizat, de la sprint la sprint creșterea fiind mai mult sau mai puțin de 10%.
Capacitatea per membru = (Zile lucrătoare * Senioritate)
Gata. Planificarea sprintului va merge lin pe baza unor date de intrare și a unor formule simple. Toate datele rezultate din sprint vor fi salvate, iar firma le poate folosi în diverse moduri.
După cum am promis, iată Sprint Planning Template (șablonul de planificare a unui sprint):
Vizualizați șablonul: https://bit.ly/SprintPlanTemplate
Copiați șablonul: https://bit.ly/CopySprintPlanTemplate