Questo è un argomento complesso e ci sono frequenti dibattiti sull'argomento. Non mi piace il concetto di opinione "canonica" su questo: ci sono varie opinioni con valore. Ma ci sono valori, principi e pratiche di supporto che dovrebbero guidare l'approccio.
Quanto segue si basa sulle mie opinioni personali che lavorano con i team di scrum da oltre 10 anni. Ma è solo la MIA opinione.
Punti della storia come metodo di previsione L'intento originale dei punti della storia era di trovare un metodo rapido per stimare lo sforzo con lo scopo di prevedere ciò che una squadra può completare durante un periodo di tempo. Alcuni dei "luminari" affermano che i punti vengono utilizzati solo per prevedere l'ambito a lungo termine (ad esempio in un rilascio) e non per determinare la capacità a livello di sprint. Inoltre, il concetto è che i team stanno applicando il "dimensionamento relativo" basato su valori storici (lo sforzo X è simile allo sforzo B, che era di 3 punti). Questo accelera il processo di stima in modo che i team non debbano suddividere il lavoro futuro in pacchetti di lavoro dettagliati e applicare ore a tutte le attività. I team ad alte prestazioni si sforzano di far crescere tutti i tecnici in membri molto competenti con livelli di abilità simili. (Questo concetto verrà esplorato più nel punto 4). Quando questo viene raggiunto, il livello di abilità individuale non è realmente una variabile nel dimensionamento. MA: di solito ci vuole molto tempo e sforzi concertati per raggiungere questo obiettivo. Quindi ... cosa facciamo prima di arrivarci?
Le ore delle attività determinano la capacità dello sprint: secondo gli stessi "luminari" che affermano che i punti vengono utilizzati per le previsioni a lungo termine, propongono anche di utilizzare le ore delle attività per determinare la capacità dello sprint, anziché i punti. A mio avviso, va bene, ma dirò che quando ho aiutato i team a "Prestazioni elevate", le loro abilità livellate sono state mediate su dove potevano determinare con precisione cosa potevano completare in uno sprint usando solo i punti Storia . Ancora una volta, questo può essere un obiettivo verso il quale ci impegniamo, ma i team più recenti non sono pronti per questo. Pertanto, potresti trovare in un singolo sprint una storia con 2 punti che ha 12 ore di lavoro e un'altra con 25 ore di sforzo. Allora cosa fai? Alcune persone che chiamo "puristi agili" affermeranno che la dimensione della Storia (in punti) dovrebbe essere agnostica per la durata. Altri non sono d'accordo. Leggi la logica dell'articolo 3 e vedi cosa ne pensi.
- Puntamento della storia per consenso: applicazione di volume, incognite, complessità, conoscenza
Quindi i team guardano un pezzo di lavoro e devono concordare i punti che saranno una delega per il livello di sforzo. Giusto? Supponendo che tutte le abilità siano uguali, allora è facile raggiungere il consenso. Ma spesso le squadre hanno un ragazzo che è un guru di Java, un altro che non è così grande in Java (forse era una persona C # o .Net o Cobol e sta imparando Java). Quindi l'attività X per Bob è molto semplice. Per Jane, è più difficile.
I team agili cercano di promuovere la proprietà del codice collettivo e la crescente / crescente competenza. Quindi di solito non assegniamo storie alle persone in base alla loro esperienza: preferiamo che i team lavorino collettivamente su storie e imparino insieme. Ciò è in linea con il concetto di "rallentare per accelerare": se ci prendiamo il tempo di offrire a Jane esperienza con Java, mentre questo potrebbe rallentarci all'inizio, in seguito avremo sviluppatori Java più competenti. In effetti, se abbiamo un solo esperto Java e ognuno lavora sulle proprie aree di competenza, stiamo creando una situazione con potenziali "punti di errore". Cosa succede nello sprint quando il 90% del lavoro è Java, ma Bob (il nostro esperto Java) è malato o in vacanza? Espandendo le competenze, eliminiamo i potenziali colli di bottiglia e riduciamo il rischio. Con quello in mente: Quando il team guarda una storia, dovrebbero avere in mente diversi concetti durante il dimensionamento. Puoi pensare all'acronimo VUCK per ricordare questo.
Volume: alcuni sforzi sono abbastanza semplici, ma richiedono un grande volume di compiti ripetuti. (Avevo un ragazzo che doveva copiare e riformattare oltre 50 tavoli che dicevano che era 1 punto perché era semplice. Ma riflettendo, il team si è reso conto che mentre era facile, richiedeva tempo e c'era un grande volume di tavoli da essere spostati e ottimizzati. Quindi abbiamo dovuto regolare nuovamente i punti a causa del volume di lavoro)
Incognite: a volte PENSIAMO di sapere cosa fare, ma identifichiamo anche alcune incognite: queste rappresentano RISCHI . Ciò implica che potremmo imbatterci in problemi imprevisti che dobbiamo risolvere, riprogettare o provare una soluzione diversa.
Complessità: questo è abbastanza ovvio. Alcune soluzioni sono tecnicamente complesse. Sappiamo esattamente cosa fare, ma richiede competenza tecnica. La complessità implica anche qualche rischio, no? Quindi, anche se tutti abbiamo pari competenze, la complessità tecnica implica che potremmo imbatterci in sfide impreviste. Quindi potremmo allargare questa storia.
Conoscenza: conosciamo davvero ciò che stiamo risolvendo? A volte i clienti non sono del tutto chiari sulla soluzione che desiderano e stiamo sperimentando un po '. O forse nessuno ha mai implementato questa soluzione (nuova tecnologia mai usata prima) e quindi non sappiamo cosa non sappiamo.
A mio avviso, ognuna di queste considerazioni è in realtà un proxy per una durata prolungata. Storia facile, molto volume? Ci vorrà più tempo, o dobbiamo dividere la storia. Incognite? Aggiunto rischio, ricerca, sperimentazione, potrebbe richiedere più tempo o dobbiamo dividere la storia. Complesso? Rischio aggiunto, necessità di correggere bug, riprogettazione ecc., Quindi potrebbe richiedere più tempo. Non sai se abbiamo le conoscenze richieste? Abbiamo ulteriori rischi, potrebbe essere necessario sperimentare, ecc., Quindi potrebbe richiedere più tempo ...
Vedi dove sta andando? Quindi, mentre il concetto di punti della storia ci scoraggia dal pensare alla durata durante la stima, d'altra parte sarebbe illogico avere una storia in 1 punto che possiamo completare in 4 ore e un'altra storia in 1 punto che è semplice ma che richiederà 2 settimane.
- I team ad alte prestazioni eliminano i silos e i colli di bottiglia: poiché i team cercano di far salire di livello tutti i membri, a volte hanno membri meno esperti che affrontano nuove sfide o accoppiano il codice per condividere le conoscenze al fine di migliorare come team. Come accennato in precedenza, questo è un requisito se la squadra raggiungerà mai livelli di prestazione elevati reali.
Quindi, se Jane si offre volontaria per intraprendere quello sforzo Java e questo farebbe lo sforzo 2x o 3x la durata dello stesso sforzo se Bob lo facesse, che cosa fai? Nel tempo, i miei team hanno deciso di ridimensionare le storie in base al livello di sforzo (LOE) / VUCK per le persone che lavorano allo sforzo. Non ha senso per Bob, il team Guru, dire "è un 1" quando per Jane non sarà facile e ci vorrà una settimana per completarlo, oltre a richiedere un po 'del tempo di Bob per la codifica delle coppie e la revisione del codice. Pertanto, abbiamo aumentato questi punti per riflettere il vero LOE. La prossima volta che è arrivata una storia simile, quello che era un 8 per Jane in precedenza è diventato un 5. Alla fine, tutti hanno convenuto che fosse un facile 3. A quel punto, sapevamo che stavamo crescendo come una squadra.