Prima di andare troppo lontano, lasciami dire che Stima del software: Demistificare la Black Art è un'ottima risorsa per le persone che guardano e pensano alle stime. Entrambe le immagini sottostanti sono tratte da quel libro, così come lo sono le idee presentate di seguito.
Come hai notato, le stime sono una parte importante per essere in grado di prevedere e pianificare accuratamente il lavoro. Non avere stime rende il business cieco per quanto tempo ci vorrà qualcosa. Non è insolito per le imprese avere un'idea completamente sbagliata su quanto tempo ci vorrà: ciò che pensano sia facile da sei a otto settimane e quello che si pensa sia difficile è un hack del venerdì pomeriggio.
La prima cosa è dare una stima. Una stima in sé non è un numero singolo - questo è un impegno. "Quanto ci vorrà ABC" - > "Circa 5 giorni" significa che è di circa 5 giorni. Tuttavia, una buona stima è un intervallo in cui sei sicuro al 90% che lo avrai in tale intervallo. Se intendi dire "Sono sicuro al 90% che ci vorranno tra 1 e 5 giorni", allora dillo. Non funziona da "Penso che ci vorranno tra 1 e 10 giorni, quindi 5 giorni è probabilmente sulla media" - questo non è una stima e ti sbagli il 50% delle volte.
Bene, il 50% o più delle volte, i programmatori sono famosi sottostimanti per i tempi di attività.
Considera il cono dell'incertezza:
link
Immagine dal link - articolo completo su link
Renditi conto che la prima stima in quell'intervallo è 16x. È come dire "Penso che ci vorranno tra un pomeriggio e due settimane" - ma non lo sai ancora. Man mano che avanzi con il design, la gamma si restringe a 4x. Ciò significa che non significa che ci vorrà una settimana, significa che dovresti invece dire "dopo averlo guardato un po ', ci vorranno tra tre settimane" - sì, la stima è aumentata, ma anche l'intervallo della stima è andato giù.
Con ogni stima che fornisci, devi essere sicuro al 90% che la stima sia all'interno di tale intervallo. Puoi sbagliare: il 10% delle volte che cadrà fuori da questo intervallo.
Ci sono molti modi per stimare la dimensione dei progetti. Confrontandolo con progetti passati, usando un proxy (penso che ci vorrebbero 1000 righe di codice che richiederebbero così tanto tempo per scrivere), usando i punti funzione (per convertire in LOC ...), ottenendo stime da un numero di persone e poi perfezionandolo iterativamente ... alcuni funzionano per alcuni progetti, altri funzionano per altri progetti.
Un capitolo importante di molto in questo libro che ho menzionato all'inizio è il n. 23 che si occupa della politica di stima e gestione di manager e dirigenti.
La chiave per una stima è il processo iterativo di perfezionamento dopo averlo lavorato un po '.
L'attribuzione troppo precisa di una stima troppo presto nel processo può essere molto soggetta a errori. Se non ne sei sicuro, dai un preventivo ampio e poi torna con un'altra stima dopo un certo periodo di tempo per una maggiore introspezione nel problema e, possibilmente, delineare come lo farai, osservando quanto codice hai scritto per l'ultimo problema simile e altri fattori che incideranno sulla stima.
Le stime richiedono un po 'di riflessione - non dare stime del polsino. Questi hanno spesso enormi errori associati a loro rispetto a ciò che serve quando ci pensi un po '.
Da Come rispondere quando viene richiesto un preventivo?
What to Say When Asked for an Estimate
You say "I'll get back to you."
You almost always get better results if you slow the process down and spend some time going through the steps we describe in this section. Estimates given at the coffee machine will (like the coffee) come back to haunt you.
Dal capitolo 4 della stima del software:
Si noti che in questo caso, le stime dopo un po 'di revisione sono sistematicamente meno selvagge e soggette a errori rispetto alle stime a sorpresa. Non fare stime del polsino. Siediti e pensa al compito e stimalo dopo un po 'di riflessione su di esso.