2012-02-20 4 views
72

Quando si stima la dimensione relativa delle storie utente nello sviluppo di software agile, i membri del team devono stimare le dimensioni di una storia utente come 1, 2, 3, 5, 8, 13, .... Quindi i valori stimati dovrebbero assomigliare alla serie di Fibonacci. Ma mi chiedo, perché?Perché la serie Fibonacci è utilizzata in un poker di pianificazione agile?

La descrizione di http://en.wikipedia.org/wiki/Planning_poker su Wikipedia detiene la misteriosa frase:

La ragione per usare la sequenza di Fibonacci è quello di riflettere l'intrinseca incertezza nella stima più grandi articoli.

Ma perché dovrebbe esserci incertezza intrinseca negli articoli più grandi? L'incertezza non è più alta se facciamo meno misure, cioè se meno persone stimano la stessa storia? E anche se l'incertezza è più alta nelle storie più grandi, perché questo implica l'uso della sequenza di Fibonacci? C'è una ragione matematica o statistica per questo? Altrimenti usare la serie di Fibonacci per la stima mi sembra una scienza CargoCult.

+8

Probabilmente solo perché la sequenza di Fibonacci è "cool". Qualsiasi sequenza esponenziale funzionerebbe. '2^n' potrebbe distanziare troppo i numeri, quindi perché non usare la sequenza di Fibonacci, che è circa' c * phi^n'? – interjay

+0

+1 per "è bello". Ho lavorato con i programmatori prima di chi ha sempre voluto spingere le stranezze in Fibonacci - era sempre il loro 'cosa' – KevinDTimm

+1

duplicato di http://pm.stackexchange.com/questions/4251/why-would-teams-use-the- fibonnacci-sequenza-per-story-points –

risposta

56

La serie di Fibonacci è solo un esempio di una scala di stima esponenziale. Il motivo per cui viene utilizzata una scala esponenziale proviene dalla teoria dell'informazione.

Le informazioni ottenute a titolo di stima aumentano molto più lentamente della precisione della stima. In realtà cresce come una funzione logaritmica. Questo è il motivo dell'incertezza maggiore per gli oggetti più grandi.

Determinare la base ottimale della scala esponenziale (normalizzazione) è difficile in pratica. La base corrispondente alla scala di Fibonacci può o non può essere ottimale.

Ecco una spiegazione più dettagliata della giustificazione matematica: http://www.yakyma.com/2012/05/why-progressive-estimation-scale-is-so.html

+2

Questa è una spiegazione più profonda che speravo. Grazie per questa risposta. – asmaier

+0

* "[un] piccolo sforzo di stima aiuta molto e [un] grande sforzo di stima aiuta poco" * ottimo articolo – ptim

14

Sicuramente vuoi qualcosa di esponenziale, in modo che tu possa esprimere qualsiasi quantità di tempo con un errore relativo costante. La precisione della tua stima è molto probabilmente proporzionale alla tua stima.

Così si desidera qualcosa: a) con gli interi b) esponenziale c) facile

Ora, perché invece di Fibonacci, 1 2 4 8? La mia ipotesi è che sia perché Fibonacci cresce più lentamente. È in goldratio^n, e goldratio = 1.61 ...

+3

"La precisione della tua stima è molto probabilmente proporzionale alla tua stima." È una regola nelle statistiche o è qualcosa che normalmente gli umani fanno? Se si utilizzano i numeri di Fibonacci, si assume che l'errore relativo di una stima è circa f (n-1)/f (n) = 1-goldenratio = 61%. Quindi, se si stima 5, si assume che ciò implichi un errore relativo di circa 3, quindi un aumento significativo della complessità sarebbe solo 8 o superiore. Tuttavia, perché l'errore relativo è ipotizzato pari a circa il 60%? È solo una regola empirica? – asmaier

+1

Per rispondere al mio commento: Mike Cohn (novembre 2005). "Agile Estimating and Planning" dice: "Gli studi hanno dimostrato che siamo più bravi a stimare cose che rientrano in un ordine di grandezza (Miranda 2001; Saaty 1996)". – asmaier

+1

Miranda (2001): "Migliorare le stime soggettive usando i confronti accoppiati" dice: "Ho condotto un sondaggio informale tra colleghi, 30 persone provenienti da diversi paesi e dall'industria e dal mondo accademico hanno fornito input per la scala. e la descrizione verbale nel dominio del software è più vicina a quella mostrata nella Tabella 3 che a quella di Saaty."E in questo tavolo vediamo che qualcosa è chiamato" leggermente più grande "se è il 125% delle dimensioni di base e viene chiamato" più grande ", se è il 175% delle dimensioni di base. – asmaier

6

La sequenza di Fibonacci è solo una delle tante che vengono utilizzate nel poker di pianificazione del progetto.

È difficile stimare con precisione le unità di lavoro di grandi dimensioni ed è facile impantanarsi in ore vs giorni di discussione se i numeri sono troppo "realistici".

Mi piace la spiegazione allo http://www.agilelearninglabs.com/2009/06/story-sizing-a-better-start-than-planning-poker/, ovvero la serie di Fibonacci rappresenta un insieme di numeri che possiamo intuitivamente distinguere tra di loro come diverse grandezze.

35

Dei primi sei numeri della sequenza di Fibonacci, quattro sono primi. Ciò limita le possibilità di suddividere ugualmente un'attività in compiti più piccoli per far sì che più persone lavorino in parallelo. Ciò potrebbe portare a pensare erroneamente che la velocità di un'attività possa essere proporzionata al numero di persone che vi lavorano. La serie 2^n è più vulnerabile a un simile problema. La sequenza di Fibonacci, infatti, costringe a rivalutare i compiti più piccoli uno per uno.

+6

Questo è un punto di vista interessante. Ma perché allora non è la serie di numeri primi 1,2,3,5,7,11, ... usata per stimare invece della serie di Fibonacci? – asmaier

+1

È un'idea eccellente. In realtà, si verificano abbastanza spesso da selezionare solo quelli che generano approssimativamente una serie [1.5-2.0]^n. I numeri di Fibonacci sono certamente più facili da ricreare dalla testa, ma strumenti come JIRA consentono di specificare qualsiasi insieme di valori. – KillerInsect

+4

L'altro punto è la distanza tra le stime. Il tempo più grande che stai stimando è meno sicuro. Tra 3-5 e 5-7 è la stessa differenza, che implica la stessa certezza. Ma quando devi scegliere tra 8 e 13 (un divario più grande), ti costringe a esaminare davvero quanto sei sicuro. – Chris

3

Io uso di Fibonacci per un paio di motivi:

  • Come compito diventa più grande i dettagli diventano più difficili da afferrare
  • Task stima è il numero di ore per chiunque nella squadra per completare il compito
  • Non tutti i membri del team avranno la stessa esperienza per una particolare attività in modo da aumentare l'incertezza anche
  • L'uomo si affatica per attività più grandi e potenzialmente più complesse. Mentre un compito due volte più complesso viene risolto in doppio tempo per un computer , potrebbe richiedere un po 'di più per uno sviluppatore.

Man mano che sommiamo tutte le incertezze, siamo meno sicuri di ciò che le ore dovrebbero effettivamente essere. Risulta più facile se possiamo solo valutare se questo compito è più grande/più piccolo di un altro in cui abbiamo già fornito una stima. Man mano che aumentiamo la dimensione/complessità del compito, viene amplificato anche l'effetto dell'incertezza. Sarei felice di prendere una stima di 13 ore per un'attività che sembra il doppio di quella che ho stimato in precedenza in 5 ore.

16

Secondo this agile blog

"perché crescono a circa lo stesso tasso a cui noi esseri umani possono percepire cambiamenti significativi in ​​grandezza."

Sì, giusto. Penso che sia perché aggiungono un'aria di legittimità (Fibonacci! Math!) A quello che è in sostanza un esercizio di dimensionamento (non di scoping) di livello molto alto, all'inizio (che ha valore).

Ma è possibile ottenere gli stessi risultati utilizzando maglietta dimensionamento ...

+0

Questa risposta è quasi esattamente la stessa (fa riferimento allo stesso link e alla stessa citazione) della risposta [ da @kaj] (http://stackoverflow.com/a/9362523/327074) che era due mesi prima. – icc97

+0

mi è piaciuto molto il modo in cui questa persona lo citava. mi ha fatto capire all'istante. – nishantbhardwaj2002