Saturday, September 10, 2011

Smettere di stimare

Una presentazione interessante dell'ale2011 è stata quella di Angel Medinilla, sul modo piu' semplice per smettere di fare le stime.

L'argomento parte da un concetto semplice: fare delle stime è una attività complessa che occupa del tempo, e quindi, se non è necessaria è un waste da eliminare, come ebbe a suo tempo modo di dire anche David Anderson.

La tesi è appunto che le stime non sono necessarie.

Come fare a stabilire che non lo sono?
Una interpretazione che si da all'utilità delle stime è che queste consentirebbero di avere una "previsione" su cosa si riesce a rilasciare in un certo periodo.
In realtà più che un previsione quello che serve è una "proiezione": un piano di rilascio affidabile che possono per esempio dare i team che conoscono la velocità (come numero di story points per sprint).
Ma questa proiezione la si può ottenere anche senza fare le stime. Basta assumere che anziché misurare gli story point, si misurano le user story stesse rilasciate, come se avessero tutte peso unitario.

Non importa che le storie possono avere delle grandezze differenti. Lo statistico che è in me (ma vorrei avere una conferma più autorevole) su questo punto direbbe: il conteggio delle storie negli sprint passati è uno stimatore corretto (unbiased) della velocità degli sprint futuri, se la grandezza delle storie è distribuita allo stesso modo in tutti gli sprint e la velocità media è costante, rispetto agli sprint.

Poi, a livello pratico, diciamo che le storie già di per sé devono essere piccole, quindi, anche se fosse rilevante, l'errore potenziale tra una stima virtualmente costante (peso unitario) ed un valore (size) che è sempre piccolo, è comunque limitato.

Sotto questo aspetto, la tesi dello smettere di stimare è convincente, anche se...
che cosa diciamo del beneficio che si ha dalla conversazione che si fa stimando, per esempio attraverso "cerimonie" come il planning poker game?

Secondo il pensiero mainstream infatti tra i vantaggi dello stimare le storie c'è il fatto che risulta possibile ingaggiare una discussione proficua che riguarda lo scope, che può aiutare il Product Owner a chiarirle, modificarle, dividerle in più storie, o cambiarne la priorità.

Può darsi invece il rinunciare a fare delle stime sia effettivamente un'ottima cosa, per esempio per team ben rodati che lavorano su un prodotto già noto, ma qui è come se ci stessimo spostando su un qualcosa di più definito, dove la generare molte informazioni non è più necessario.

Ma le cose poi cominciano a cambiare: i componenti del team cambiano, cambiar il tipo di prodotto, e per questo potrebbe essere utile una discussione che coinvolga anche la grandezza delle storie, almeno come espediente per parlare anche del loro vero scope.

Comunque, niente si può dare per scontato. Ogni contesto è diverso, e quindi quello che va bene per uno magari non va bene per l'altro.
Quindi l'unica cosa è provare e... verificare.

No comments: