Sono sorpreso che nessuno abbia menzionato la tecnica di stima in stile PERT descritta in The Clean Coder di Robert Martin . In questo metodo, si stima il tempo necessario per 3 scenari: optimistic ( O
), nominal ( N
) e pessimistic ( P
). Quindi la durata prevista = (O+4N+P)/6
e si ottiene una deviazione standard di (P-O)/6
.
Questo sembra funzionare abbastanza bene, e l'ho usato un paio di volte in cui il management si preoccupa davvero di quanto tempo richiederà 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 è non fare affatto stime del tempo, e fare solo stime puntuali e ottenere una velocità sulle iterazioni. Se una squadra è abbastanza coerente nel dimensionare e completare il lavoro (storie degli utenti), allora risparmi un sacco di tempo senza nemmeno chiedere quanto tempo impiegherà ogni cosa.
Le stime delle ore sono diabolicamente difficili da ottenere, e richiedono molto lavoro per scomporre le cose in blocchi abbastanza piccoli da misurare efficacemente. E anche allora raramente sono corretti perché ci sono troppe variabili e ci dimentichiamo di tenere conto di cose come la malattia, le vacanze o persino le distrazioni.
Se devo fare delle stime delle ore, provo a eseguirle solo per compiti di piccole dimensioni all'interno di un'iterazione. Misuro tutto nelle stime di mezza giornata (4, 8, 12 ore) a meno che non sappia che potrebbe essere inferiore. Ma raramente stimo qualcosa a meno di 1 ora.