Stimare o non stimare, questo è il problema (parte #1) – Le stime con gli Story Point
Quando qualcuno (ad esempio un cliente oppure il nostro responsabile) ci affida un lavoro, solitamente ci chiede anche di stimare dei tempi (ore/giorni) di consegna.
E puntualmente (e direi anche inevitabilmente) il giorno della presunta consegna il nostro committente verrà a bussare alla porta e a chiedercene conto.
La situazione appena descritta, cioè di assegnare un compito e richiedere una misura del tempo impiegato per portarlo a termine è quella più comune.
Essa, però, presenta alcune anomalie e molti teorici della materia si sono chiesti quale può essere la maniera migliore di stimare. Addirittura si sono chiesti se ha veramente senso fornire un qualsiasi tipo di stima.
Come stimare: proviamo a fare un’analisi.
Quando forniamo una stima stiamo dando un valore che può essere più o meno preciso o accurato, ma non stiamo dando un valore esatto.
Nel fornire un valore numerico come effort (sforzo) necessario per completare il nostro lavoro, però, succede qualcosa. Creiamo inevitabilmente nel nostro committente delle aspettative perché quest’ultimo si formerà un’idea basata sul numero ricevuto (giorni oppure ore che siano).
Il problema è che il mondo in cui viviamo è tutt’altro che semplice. Ci sono degli ambiti, dei contesti, che sono influenzati pesantemente dalla complessità che ci circonda e, pur avendo una buona conoscenza del nostro lavoro, non siamo in grado di dare delle misure precise.
Inoltre, il nostro cervello ha dei limiti: non riesce a svolgere determinati tipi di elaborazioni.
Ad esempio, se vi chiedessi le dimensioni esatte in centimetri della stanza in cui vi trovate in questo momento non sareste in grado di fornirle con precisione: “La mia stanza è esattamente 427 cm di larghezza e 512 cm di lunghezza” è una risposta che difficilmente potreste dare senza una misurazione fisica.
E più sono grandi le dimensioni di ciò che vogliamo misurare, più sarà difficile per noi esseri umani dare delle risposte precise.
E allora, se è così complicato fare una previsione, cosa spinge un cliente a chiedere una stima dei tempi necessari per i nostri task, con il rischio di rimanere poi delusi se le aspettative sono disattese?
Perché un cliente chiede di stimare?
Le motivazioni sono fondamentalmente due:
- generare per sé stessi una sicurezza psicologica
- avere certezza del costo del lavoro che verrà svolto
La questione è che il risultato atteso non dipende dal modo in cui misuriamo, né dal metodo. Dipende semplicemente dalla complessità, dalle incognite che entrano in gioco e dall’incertezza dei valori che esse assumono. Inoltre, basarsi su una misurazione precisa lega il nostro lavoro alla quantità di cose che riusciamo a portare a termine piuttosto che alla qualità o al valore rilasciato. Abbiamo completato dieci funzionalità, siamo d’accordo, ma quanto valore abbiamo generato? Abbiamo veramente risolto i problemi principali del nostro cliente? Oppure per noi è importante rilasciare qualcosa senza tener conto se davvero quelle funzionalità saranno utilizzate?
Alcuni esperti già da qualche tempo hanno provato ad eliminare le stime dando vita al movimento #NoEstimates.
Chi, invece, continua ad utilizzare le stime, ritenendole utili, ha cercato altre vie per ottenere risultati che non si basassero sul tempo e che potessero ovviare ai limiti della nostra mente.
Proviamo ad analizzare le due filosofie e a confrontarle in qualche modo.
In questo articolo ci soffermeremo sulle stime fatte in Story Point, mentre in “Stimare o non stimare, questo è il problema (parte #2) – NoEstimates” vedremo come sia possibile lavorare efficacemente limitando le stime stesse.
Stime alternative: gli Story Point
Se le misure hanno portato i problemi che abbiamo menzionato poco fa, come possiamo rimediare?
Se è vero che il nostro cervello non riesce a fornire delle misure precise, cosa è invece in grado di fare bene? Quali sono le caratteristiche che dobbiamo sfruttare?
Se non siamo bravi a misurare, siamo senz’altro bravi a comparare.
Se tornassimo all’esempio precedente e vi chiedessi: “La vostra stanza è più larga o più lunga? Siete più vicini al monitor del vostro PC o alla parete che vi sta di fronte?”, questa volta la risposta sarebbe certa o comunque con pochi dubbi.
Cosa cambia fra “misurare” e “confrontare”?
La differenza è che ci siamo liberati dell’unità di misura concreta e siamo passati ad una unità di misura astratta. Questa misura va sempre bene indipendentemente dagli oggetti che dobbiamo confrontare: due lunghezze, due distanze, due dimensioni, due pesi….
Inoltre, ci consente di concentrarci sul valore piuttosto che sulla quantità e di svolgere un’attività più naturale per il nostro cervello che ci permette di essere più efficaci con meno sforzo.
Quindi su cosa dobbiamo basare le nostre considerazioni per poter dare una stima e non più una misura? E qual è l’unità base da utilizzare?
Uno degli elementi da prendere in considerazione per fare una stima accurata è la complessità, rispondere alle domande:
- quanto è complesso?
- quanta conoscenza ho del contesto?
- quali sono gli elementi di rischio?
- qual è l’influenza dei fattori esterni, fuori dal mio controllo (incertezza)?
ci permette di fare una serie di valutazioni che esulano da qualsiasi unità di misura concreta.
Per di più, prendere la complessità come punto di riferimento ha il vantaggio di astrarsi anche da chi eseguirà il lavoro, perché la complessità è intrinseca al lavoro stesso e non dipende da chi lo andrà ad eseguire.
Sicuramente la conoscenza ci consente di fare stime più accurate, ma non va a modificare la complessità dell’attività in esame.
Stimare: un esempio
Quando andiamo in montagna o da qualsiasi altra parte e vogliamo intraprendere un sentiero per fare una camminata, troveremo dei segnali che ci indicheranno il grado di difficoltà del percorso. Questo, però, non dipende da chi lo intraprenderà e non cambia se cambiano le persone; esso è determinato da:
- lunghezza
- pendenza delle salite/discese
- presenza di ostacoli
- se il pavimento è solido o sdrucciolevole
- altri fattori specifici del percorso
Ognuno di noi ha le sue caratteristiche e lo percorrerà più o meno facilmente, ma la natura del sentiero non cambierà.
La stessa cosa succede per il lavoro: esso sarà più o meno facile in base a chi lo eseguirà, ma la sua difficoltà intrinseca è oggettiva e non cambia.
In base a questi concetti sono state introdotte diverse modalità per stimare l’effort totale; una delle più diffuse è l’utilizzo degli Story Point.
Gli Story Point per Stimare
Gli Story Point sono un modo per stimare le User Story in base ai parametri che abbiamo appena visto: complessità ed effort totale necessario; non hanno una dipendenza da nessuna unità di misura (compreso il tempo) e sono determinati per confronto, cioè: dato un task che ho già lavorato e del quale conosco bene la complessità, il nuovo task che sto stimando è più o meno complesso di quello conosciuto? E di quanto lo è? Quali valori posso usare?
Ricordiamoci che le stime sono…STIME, non sono misure. Parliamo di ACCURATEZZA non di PRECISIONE.
Il grafico della Fig. 5 mostra che non serve essere troppo accurati nelle stime, non è il nostro scopo, né riusciremmo ad esserlo se pure ci sforzassimo di più.
Per i valori delle stime si usa la serie di Fibonacci (partendo da zero ed uno, ogni numero della serie è la somma dei due precedenti: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, etc. …).
Per i nostri scopi è sufficiente usare la serie modificata: 0, 1, 2, 3, 5, 8, 13, 20, 40, 100, ∞.
Perché Fibonacci? Due motivi:
- va bene per il concetto di accuratezza, soprattutto quando le dimensioni crescono (perdiamo la sensibilità di riconoscere le piccole differenze)
- siamo circondati da esempi in natura, quindi è presente nel nostro subconscio
–
Ultimo aspetto da considerare è che astrarsi dalle misure ci aiuta ad astrarci anche dal concetto di quantità (come già accennato). Se vogliamo davvero pensare “Agile”, dobbiamo cambiare il mindset e pensare in termini di valore rilasciato e non di quantità prodotta.
Ci dobbiamo far guidare dal valore (Value Driven) e non dai piani o dalla quantità di lavoro rilasciato (Plan Driven o Scope Driven).
Tutte queste caratteristiche fanno degli Story Point un ottimo strumento per stimare sia a breve sia a medio termine.
Stimare per la funzionalità
Se consideriamo le Funzionalità che dobbiamo sviluppare come un contenitore di User Story, allora con lo stesso principio possiamo dare delle stime più o meno grossolane per le Funzionalità (qualcuno le chiama anche Epiche). Una volta che sappiamo in media quanti Story Point il nostro team riesce a consegnare in una Iterazione, allora sappiamo anche in quante Iterazioni saranno rilasciate le Funzionalità, o al contrario, fissata una data X sul calendario, quante Funzionalità riusciamo a rilasciare per quella data.
Oggi non possiamo sapere quello che accadrà domani con precisione, men che meno cosa accadrà fra sei mesi; però man mano che il tempo passa e andiamo avanti con lo sviluppo avremo sempre più dati concreti su cui basarci e saremo sempre più accurati nelle previsioni: andremo a costruire quello che è chiamato il “Cono di Incertezza”.
L’utilizzo del cono di incertezza per determinare il periodo entro cui potremmo considerare il rilascio del lavoro atteso significa fare una previsione adattiva a medio o lungo termine dei tempi di consegna.
Conclusioni
In questa piccola trattazione abbiamo cercato di esplorare cosa sono gli Story Point, da cosa derivano e come utilizzarli per dare delle stime.
Nell’articolo “Stimare o non stimare, questo è il problema (parte #2) – NoEstimates” proveremo a spiegare se, oltre ad eliminare le misure concrete, si può fare a meno delle stime e fino a che punto si può.
Autore: Nicola Lobusto – Agile Coach