Fondamentali di SCRUM

Transcript

Fondamentali di SCRUM
Agile Project Management - LC90.99B
Che Cosa è SCRUM
L’interesse verso il project management Agile è unanimemente condiviso. Anche chi non è direttamente
“committed” dovrà avvicinarsi alla nuova terminologia e la filosofia sottostante.
Per apprendere la terminologia Agile conviene studiare SCRUM - il tool Agile più diffuso.
Le definizioni e la terminologia che seguono sono condivise dai massimi guru della disciplina,
come Mike Cohn, autore di Agile Estimating and Planning che ha ispirato questo elaborato
a beneficio di coloro che intendono affrontare la certificazione Agile PMI-ACPsm.
Scrum, forse il processo Agile più diffuso nello sviluppo software, sta diventando un "general-purpose
project management framework” utilizzabile anche in altri settori su progetti urgenti, complessi e
innovativi. I progetti Scrum procedono con iterazioni dette sprint che durano da 2 a 4 settimane. Perciò,
qualsiasi progetto complesso, innovativo e urgente può essere affrontato con un approccio Agile-SCRUM.
Team Scrum (gruppo di progetto)
Un Team Scrum composto solitamente da 5 a 9 persone, può raggiungere anche le centinaia di addetti e
può essere anche di una sola persona. Con Scrum non ci sono più le figure tradizionali dello sviluppo
software come: programmatori, designer, tester o architetti, ma tutti lavorano insieme per realizzare il lavoro
promesso in ogni sprint, convinti di “essere tutti sulla stessa barca”.
Il Product Owner rappresenta gli utenti, i clienti e altri soggetti coinvolti nel processo.
Lo ScrumMaster è responsabile di garantire che il team utilizzi correttamente il processo
eliminando eventuali ostacoli e proteggendo il team dalla pressione del Product Owner.
Scrum,
Il Product Backlog è la lista di lavori desiderati o di modifiche necessarie al prodotto. All’inizio di ogni
sprint, in una riunione di pianificazione, il product owner illustra i primi elementi del backlog al team, il
quale decide quale lavoro eseguire durante lo sprint successivo, spostandolo dal product backlog allo sprint
backlog che costituisce la lista dei task che il team promette di realizzare nel prossimo sprint.
Ogni giorno tutto il team partecipa ad una riunione veloce detta Daily Sprint per contestualizzare il lavoro
del giorno e mantenersi allineati. Alla fine di ogni sprint, il team espone ciò che ha realizzato in una sprint
review meeting. Si tratta di una demo informale di ciò che è stato realizzato durante lo sprint. Non sono
ammesse slide PowerPoint, la riunione non deve diventare un task né una distrazione dal processo.
Sempre alla fine di ogni sprint il team esegue uno sprint retrospective per riflettere su come sta
funzionando il processo Scrum e cosa cambiare per lavorare meglio.
Il termine “backlog” viene utilizzato con due accezioni:


Product backlog - lista di dispositivi (feature) che dovrà avere il prodotto.
Sprint backlog - lista di task da eseguire in uno sprint.
Mutuato dal Rugby,
il termine SCRUM indica un gruppo di persone che si spinge per agguantare la palla lanciata dall’arbitro.
Materiale utile per Prepararare la Certificazione Agile PMI-ACMsm
di
Vito Madaio
pag. 1
Agile Project Management - LC90.99B
Rappresentazione Visuale
Mike Cohn rappresenta l’intero processo Scrum con il seguente grafico:
Il grafico contiene gli elementi essenziali del processo Scrum. A sinistra vediamo la product backlog
con le relative priorità stabilite dal product owner , ciò che si conosce alla data.
All’inizio di ogni sprint, il team stabilisce il lavoro da eseguire durante lo sprint, creando lo sprint
backlog ossia la lista dei task dello sprint in corso con le rispettive stime delle durate.
Ogni giorno, il team discute l’avanzamento e gli ostacoli incontrati, nel Daily Scrum Meeting.
Alla fine di ogni sprint, il team produce un potenziale rilascio di prodotto.
Il Daily Scrum Meeting
E’ una riunione giornaliera, alla stessa ora, di massimo 15 minuti per condividere il lavoro da eseguire
durante il giorno con la discussione ridotta all’essenziale: “Daily Scrum”.
Ecco come sdrammatizza questo impegno giornaliero Mike Cohn:
“There is an old joke in which a chicken and a pig are talking and the chicken says, "Let's start a restaurant."
The pig replies, "Good idea, but what should we call it?" "How about 'Ham and Eggs'" says the chicken.
"No thanks," says the pig, "I'd be committed, you'd only be involved.” The joke is meant to point out
the difference between those who are committed on a project and those who are only involved.”
Solo chi è “committed” ha il diritto di parlare durante un Daily Scrum.
Al Daily Scrum partecipano tutti i membri del team, lo ScrumMaster ed il Product Owner. Altre figure
interessate possono partecipare solo se si limitano ad ascoltare. Aprire il Daily Scrum agli uditori è un modo
molto efficace per informare gli altri stakeholder sullo stato del progetto. Deve essere chiaro che non si
tratta di una riunione per risolvere problemi ed eventuali issue sollevate devono essere trattate offline dagli
interessati dopo la riunione.
Durante la riunione ogni partecipante risponde alle seguenti tre domande:
1. Cosa hai fatto ieri?
2. Cosa farai oggi?
3. Vedi ostacoli al lavoro da fare oggi?
Concentrandosi su quello che ognuno ha fatto ieri e cosa farà oggi, il team raggiunge una notevole
comprensione del lavoro fatto e di quello rimanente.
Il Daily Scrum Meeting non è una riunione di revisione dove il manager raccoglie informazioni sulle attività in
ritardo, invece, si tratta di un incontro dove i membri del team prendono impegni fra loro.
Se uno si alza e dice ”oggi finisco la definizione del database”, tutti sapranno che domani quel signore dirà
se ha finito di definire il database o meno. In pratica, le persone prendono impegni di fronte a tutto il
gruppo di lavoro. Se sorge un problema che impedisce di realizzare un’attività, lo ScrumMaster ha la
Materiale utile per Prepararare la Certificazione Agile PMI-ACMsm
di
Vito Madaio
pag. 2
Agile Project Management - LC90.99B
responsabilità di risolverlo il prima possibile. Se lo ScrumMaster non è in grado di risolvere una issue tecnica,
deve individuare chi lo potrà fare velocemente al posto suo.
Le tre domande del Daily Scrum possono riguardare le singola persona oppure singole storie, se le
persone hanno in carico più storie e non sono in grado di parlare di quelle non ancora in lavorazione.
Questo è un dilemma di tutti i team Scrum: task o story? Bisogna essere precisi.
Il Product Backlog
Il Product Backlog è la lista delle cose da fare con una breve descrizione delle funzionalità desiderate.
Non è necessario documentare in anticipo tutti i requisiti, ma il team ed il product owner iniziano a
scrivere ciò che risulta più facile ed evidente al momento. Meglio che niente come primo sprint!
Il backlog inizia a crescere man mano che l’utente racconta altri dettagli (della sua story),
aggiungendo: dispositivi, difetti da colmare, lavoro tecnico, conoscenze da acquisire, etc.
Le User Stories sono l’insieme di brevi descrizioni delle funzionalità desiderate raccontate dal punto di
vista e prospettiva dell’utente.
Una volta costituito il product backlog di progetto, il product owner stabilisce le priorità da applicare
durante lo sprint planning meeting. Il team valuta e determina quali componenti potrà realizzare nel
successivo sprint e sposta i componenti prescelti dal product backlog allo sprint backlog, come
illustrato nella figura precedente.
Così come un work package della WBS (work breakdown structure) viene scomposto in una o più
attività nel project management tradizionale, anche con Scrum una User Story inserita nel product
backlog diventa uno o più task dello sprint backlog.
Praticamene, il team parte dall’elemento del product backlog con priorità più alta e si ferma all’ultimo
che ritiene di poter inserire in quello sprint. Può accadere che selezioni anche degli elementi con
priorità più bassa, saltandone altri, se questi ultimi sono collegati a quelli con priorità più alta.
Il Product Owner
Il product owner
è uno stakeholder chiave del progetto che deve saper
trasmettere al team la visione di ciò che bisogna sviluppare: agisce sul product
backlog e la lista delle funzionalità da realizzare. Questa figura deve avere chiaro
le esigenze dell’utente, la situazione del mercato, cosa fa la concorrenza, il trend
futuro del tipo di applicazione che sta sviluppando.
Sebbene il product owner stabilisca le priorità degli elementi del product backlog,
il team decide, autonomamente, cosa realizzare in uno sprint.
Il product owner non ha il potere di dire cosa deve fare il team, ma può influenzarlo, ovviamente.
Il suo compito è motivare il team con propositi chiari.
I membri del team sanno cosa sono in grado di fare e scelgono su quali user stories impegnarsi,
partendo da quelle con priorità più alta. In cambio il product owner si impegna a non proporre nuovi
requisiti su quelle stories durante lo sprint.
Nuovi requisiti sono ammessi, anzi sono incoraggiate le richieste di modifiche, ma solo
fuori dallo sprint in corso.
Una volta che il team inizia uno sprint resta maniacalmente concentrato sul suo goal.
Release Burndown charts
In un progetto Scrum, il team traccia l’avanzamento di un piano di rilascio aggiornando il relaese
burndown chart alla fine di ogni sprint. L’asse orizzontale del grafico indica gli sprint, l’asse verticale il
lavoro rimanente all’inizio di ogni sprint. Il lavoro rimanente può essere espresso in qualsiasi unità di
misura: story points, ideal days, team days e così via.
Mike Cohn dichiara di preferire gli story points nel libro Agile Estimating and Planning.
Materiale utile per Prepararare la Certificazione Agile PMI-ACMsm
di
Vito Madaio
pag. 3
Agile Project Management - LC90.99B
In questo burndown chart, il team ha avviato un progetto di 11
sprint da 2 settimane l’uno con 200 story points.
Il primo sprint è andato bene, lasciando 180 story points in coda.
Nel secondo sprint il lavoro rimanente aumenta di nuovo. Forse è
stato aggiunto altro lavoro o il team ha cambiato qualche stima.
Dal terzo sprint in poi il progetto è andato bene. Il lavoro rimanente
decresce regolarmente.
Durane lo sprint 7 c’è stato un rallentamento subito recuperato.
Questo tipo di burndown chart funziona molto bene in molte
situazioni e con molti team, però, ci possono essere delle
complicazioni se il progetto riceve troppe richieste di modifiche.
Il tipico burndown chart mostra la stima del lavoro rimanente sempre
decrescente, ma nella realtà non è sempre così. Immaginiamo che il
team pensava di ridurre il lavoro di 40 ore nel primo sprint ed invece
lo ha ridotto solo di 10.
Il team è stato più lento del previsto oppure è stato aggiunto altro lavoro?
Bisogna chiarire queste situazioni per non perdere il controllo del progetto. Ecco un esempio:
Il fenomeno delle richieste di modifiche può essere evidenziato, utilizzando anche il quadrante sotto
l’asse X. Nell’esempio sopra vediamo un burndown chart con 175 story points iniziali, di cui 25
realizzati in sprint 1, scendendo a 150 story points a inizio sprint 2 e poi a 120 a inizio sprint 3.
Come si vede dal grafico, la parte superiore delle barre si riduce del numero di story points realizzati
ad ogni sprint. Però se viene aggiunto del lavoro, come a inizio sprint 4, il nuovo lavoro deve essere
rappresentato sotto l’asse X per evidenziare che sono intervenute delle richieste di modifiche e
migliorare la lettura dell’intero grafico.
A inizio sprint 4, in realtà rimangono 135 story points, dove, però, 40 story points sono stati appena
aggiunti e sono quelli sotto l’asse X, mentre sopra rimangono i 95 story points come stimato
inizialmente.
Prima dell’avvio di sprint 6 il product owner ha eliminato del lavoro. Anche le riduzioni di lavoro
vengono rappresentate sotto l’asse X come si vede da sprint 6.
Questo approccio consente di veder decrescere il lavoro iniziale di sprint in sprint e di evidenziare le
variazioni del carico di lavoro in corso d’opera, creando qualche difficoltà nel predire la data di
ultimazione del progetto.
Lo ScrumMaster
Lo ScrumMaster è responsabile del corretto utilizzo del processo Scrum da
parte del team. E’ un allenatore (coach) che aiuta il team a dare il meglio.
Spesso viene chiamato anche process owner in contrapposizione a product
owner.
Lo ScrumMaster aiuta il team a fornire la massima prestazione, rimuovendo
eventuali ostacoli, moderando le riunioni e lavorando sul product owner affinché
il product backlog sia sempre aggiornato e pronto per lo sprint successivo.
Materiale utile per Prepararare la Certificazione Agile PMI-ACMsm
di
Vito Madaio
pag. 4
Agile Project Management - LC90.99B
Questo ruolo viene ricoperto di solito da un project manager o un team leader, ma può essere
ricoperto da chiunque sia in grado di proteggere il team di lavoro. Per protezione si intende non fargli
subire le pressioni del product owner che li potrebbe sovraccaricare di lavoro. Il team va protetto dal
product owner, ma anche dalla propria compiacenza.
Il team potrebbe accontentarsi, ritenendosi soddisfatto, dei primi successi facili, per cui potrebbe
smettere di cercare altre opportunità di miglioramento. Lo ScrumMaster deve prevenire questo rischio,
da un lato, frenando la pressione del product owner quando il team è sovraccarico e dall’altro
chiedendogli più lavoro quando il team è meno impegnato.
Il ruolo di ScrumMaster può apparire contraddittorio perché pur curando gli interessi del team, non ha
nessuna autorità su di esso, invece ha molta autorità sui processi. In pratica non ha voce in
capitolo sulle persone, ma può determinare come deve essere organizzato uno sprint.
Lo ScrumMaster è simile ad un personal trainer che aiuta il team a seguire correttamente le regole
Scrum, lo motiva ed evita che si lamenti saltando i passi più pesanti, sebbene abbia poca autorità.
Lo ScrumMaster non ha autorità impositiva, ma ha il compito di ricordare al team gli obiettivi da
raggiungere e come il team stesso ha promesso di raggiungerli.
La poca autorità dello ScrumMaster è garantita dal comportamento del team di progetto.
Uno ScrumMaster non può assegnare del lavoro ai membri del team, ma può decidere di modificare
dei processi. Perciò con questa autorità limitata, lo ScrumMaster ha più difficoltà di un normale project
manager. Il project manager tradizionale può dire “fai questo, perché l’ho deciso io”, invece lo
ScrumMaster si limita a verificare che vengano seguiti i processi Scrum.
Secondo Mike Cohn un buon ScrumMaster deve avere questi sei attributi:
1.
2.
3.
4.
5.
Responsabile
Umile
Collaborativo
Impegnato
Influente
6. Competente
Il Team Scrum
I gruppi di lavoro Scrum non comprendono i tradizionali ruoli di ingegneri del
software come: programmatori, designer, tester o architetti. Ognuno lavora per
completare, entro la fine dello sprint, il lavoro che ha preso in carico.
In questo modo il team sviluppa un forte cameratismo ed il senso di “essere sulla
stessa barca”. Di solito, il team Scrum è composto da 5 a 9 persone e invece di
tendere a creare team numerosi, Scrum tende a creare team di team. Con la tecnica
“Scrum of Scrum” ogni team partecipa con una sua persona alla riunione che
coordina il lavoro di più team; riunioni analoghe al Daily Scrum Meeting, ma non
necessariamente con la stessa frequenza giornaliera.
Ecco come funziona la tecnica dello Scrum of Scrum, arrivando fino a 243 persone nel seguente
esempio.
Ogni cella della figura rappresenta 1 di 9 persone del team Scrum. Una persona di ogni team partecipa
allo Scrum of Scrum per coordinare il lavoro sopra il suo team. Poi da questo team di 9 persone
viene scelta un’altra persona per partecipare allo Scrum of Scrum of Scrum.
Sprint Backlog
Lo sprint backlog è la lista dei task identificati dal team Scrum durante un sprint planning.
Materiale utile per Prepararare la Certificazione Agile PMI-ACMsm
di
Vito Madaio
pag. 5
Agile Project Management - LC90.99B
Nel corso dello sprint planning il gruppo di lavoro discute alcuni elementi del product backlog detti
user stories per stabilire i task necessari al prossimo sprint e per stimarne le durate per realizzarli.
I membri del team decidono gli elementi e le dimensioni del backlog, essendo gli unici ad impegnarsi
a realizzare quelle attività.
Lo sprint backlog, di solito, è una tabella tipo foglio excel, ma si può utilizzare anche software più
sofisticato specifico dell’ambiente Scrum o del mondo Agile in genere. Eccone un esempio:
Durante lo sprint, i membri del team aggiornano lo sprint backlog man mano che assumono nuove
informazioni o almeno una volta al giorno. Alcuni lo fanno nel Daily Scrum in collaborazione con lo
ScrumMaster il quale ricalcola il lavoro rimanente e produce il burndown chart, come il seguente:
Il team fa del suo meglio per inserire la giusta quantità di lavoro in ogni sprint.
Nell’esempio di burndown chart appare che il team inizialmente ha inserito troppo lavoro, circa 600 ore
fino al 16/5/02. A quel punto, con il consenso del product owner, è stato rimosso del lavoro dallo
sprint, portando alla diminuzione del lavoro rimanente tra il 16 ed il 17/5. Da allora in poi il team ha
proceduto senza alcun impedimento fino alla fine.
Sprint Planning Meeting
Alla riunione di pianificazione dello sprint partecipano:
 il Product Owner,
 lo ScrumMaster e
Materiale utile per Prepararare la Certificazione Agile PMI-ACMsm
di
Vito Madaio
pag. 6
Agile Project Management - LC90.99B
 l’intero team di progetto.
Il product owner descrive i dispositivi con priorità più alta al team. Il team pone domande per
comprendere meglio le user stories del product backlog e disporre di sprint backlog più dettagliati.
Il product owner non descrive tutti gli argomenti nel product backlog; un buon metodo è prepararsi a
parlare di almeno due sprint.
In uno sprint planning meeting devono emergere due fatti:
 il proposito (goal) dello sprint
 il backlog dello sprint.
Lo sprint goal, scritto in collaborazione tra team e product owner, deve essere breve di una o due
frasi su ciò che il team pianifica di realizzare durante lo sprint.
Lo sprint goal viene utilizzato per informare gli stakeholder, fuori dallo sprint, che desiderano sapere
cosa sta realizzando quel team, ma non hanno bisogno di sentire tutti i dettagli.
Il successo dello sprint viene verificato durante lo Sprint Review Meeting, rispetto allo sprint goal e non
agli argomenti del product backlog.
Lo sprint backlog è l’altro output della pianificazione dello sprint.
Sprint Retrospective
Un team può sempre migliorare. Anche se il team è efficiente perché sfrutta tutte le opportunità per
migliorare, il team, alla fine di ogni sprint, impiega del tempo per riflettere su come sta andando il
progetto e come potrebbe migliorare.
Questo momento si chiama “Sprint retrospective” ed è l’ultimo evento di uno sprint.
Viene indetta una riunione della durata di un’ora circa, di solito, subito dopo lo sprint review.
Vi partecipano i soliti: ScrumMaster, Product Owner e intero team di progetto.
Il modo più semplice di condurre questa riunione è la così detta “start-stop continue meeting”
dove ogni partecipante è chiamato a indicare cosa avvierebbe, cosa fermerebbe e cosa continuerebbe.
Lo ScrumMaster modera la riunione chiedendo ad ognuno di esprimere la propria idea.
Una volta raccolte abbastanza idee vengono messe ai voti per decidere su quali idee concentrarsi
durante il prossimo sprint. Si tratta di una tecnica di bainstorming.
A fine sprint, la successiva riunione retrospettiva rivede gli argomenti della precedente retrospettiva.
Sprint Review Meeting
Alla fine di ogni sprint, il team presenta ciò che ha realizzato in una sprint review meeting. Si tratta di
una demo molto informale delle funzionalità realizzate durante lo sprint, appena concluso. Non sono
ammesse slide PowerPoint, né sono ammesse più di due ore per preparare la riunione, perché non deve
diventare un task né una distrazione dal processo, ma deve essere solo il risultato naturale dello sprint.
I partecipanti sono i soliti: Product Owner, ScrumMaster e intero Team dello Scrum; più manager,
clienti e sviluppatori di altri progetti come uditori.
Durante la riunione viene rivisto il progetto rispetto ai propositi fissati nello Sprint Planning Meeting.
Idealmente il team deve aver completato ogni argomento del product backlog trasferito nello sprint, ma è
più importante il proposito complessivo dello sprint.
Task Board
Si tratta di un tabellone sul quale esporre lo stato di ogni task delle stories del backlog e le eventuali
aggiunte, spostamenti, modifiche, etc. I membri del team in qualsiasi momento sono liberi di
modificare il tabellone per rappresentare la situazione di un componente da quell’istante in poi.
Materiale utile per Prepararare la Certificazione Agile PMI-ACMsm
di
Vito Madaio
pag. 7
Agile Project Management - LC90.99B
Questo è un tipico esempio di task board.
Ogni riga rappresenta una user story che è l’unità di lavoro suggerita per il product backlog.
Durante lo sprint planning meeting il team decide cosa realizzare durante lo sprint successivo.
Ogni product backlog si compone di più sprint backlog item che in pratica sono i task- attività,
rappresentati da una scheda collocata sul tabellone. Ogni scheda (task) nasce nella colonna To do e
viene spostata nelle altre colonne man mano che viene lavorata.
Le colonne tipiche del task board sono:
 Story - la descrizione di alto livello di cosa si deve fare
 To do - le schede di dettaglio delle attività da realizzare
 Work in Process - le schede in lavorazione
 To verify - schede che rappresentano momenti di test dipendenti da altri task
 Done - mucchio di schede lavorate da rimuovere a fine sprint.
Questo lavoro è stato possibile grazie al materiale pubblicato da Mike Cohn sul suo sito, oltre alla
presentazione: http://www.mountaingoatsoftware.com/scrum-a-presentation che ho ripreso e messo
a vostra disposizione su http://www.tenstep.it/Agile/Introduzione-SCRUM.pdf .
Se questo lavoro ti è piaciuto, raccontalo ad un amico che
sta pensando alla certificazione Agile e non sa a chi
rivolersi.
PASSAPAROLA
Materiale utile per Prepararare la Certificazione Agile PMI-ACMsm
di
Vito Madaio
pag. 8