Sono sorpreso che nessuno abbia menzionato la tecnica di stima in stile PERT descritta in The Clean Coder . In questo metodo, stimerai quanto tempo ci vorrà per 3 scenari: ottimista ( O
), nominale ( N
) e pessimista ( P
). Quindi la durata prevista = (O+4N+P)/6
e ottieni una deviazione standard di (P-O)/6
.
Questo sembra funzionare piuttosto bene, e l'ho usato un po 'di volte quando la gestione si preoccupa veramente di quanto tempo ci vorrà probabilmente qualcosa.
Come altri hanno commentato, ho anche fatto delle stime esaminando i dati storici ("Quanto tempo ci è voluto per fare questa cosa simile?").
Ma il mio metodo preferito è di non fare stime temporali, e solo fare stime puntuali e ottenere una velocità su iterazioni. Se una squadra è abbastanza coerente nel dimensionamento e nel completamento del lavoro (storie degli utenti), risparmierai un sacco di tempo non chiedendo nemmeno per quanto tempo ogni cosa prenderà.
Le stime dell'ora sono diabolicamente difficili da correggere e richiedono molto lavoro per suddividere le cose in pezzi abbastanza piccoli da poter essere misurati in modo efficace. E anche allora raramente sono corretti perché ci sono troppe variabili e ci dimentichiamo di spiegare cose come malattie, ferie o anche distrazioni.
Se devo fare delle stime delle ore, cerco di farle solo per compiti piccoli all'interno di un'iterazione. Misuro tutto in stime di mezza giornata (4, 8, 12 ore) a meno che non sappia che potrebbe essere inferiore. Ma raramente stimolo qualcosa in meno di 1 ora.