La stima è una valutazione quantitativa dello sforzo necessario per completare un'attività, sviluppare una funzionalità o consegnare un progetto nel suo complesso. Nello sviluppo mobile, le stime vengono utilizzate per la pianificazione degli sprint, la determinazione dei costi e la gestione delle aspettative del cliente. Secondo il Project Management Institute, 2024, l'errore di stima nelle fasi iniziali del progetto può raggiungere il 100%, rendendo la stima una delle discipline più difficili nello sviluppo.
Punti chiave
Stima (dall'inglese estimate — valutazione) è una previsione della quantità di tempo o sforzo necessaria per completare un'attività. Nello sviluppo mobile, le stime possono essere espresse in ore, giorni, story points o in termini monetari. Lo scopo di una stima non è una previsione esatta, ma ridurre l'incertezza per il processo decisionale.
Stima è una previsione con margine d'errore. Impegno è una promessa di completare un'attività entro una data specifica. La differenza è critica: una stima dice “probabilmente 5 giorni”, un impegno dice “lo faremo in 5 giorni”. I manager spesso confondono questi concetti, trasformando una stima in una scadenza senza margine d'errore.
Il processo di stima non è meno importante del suo risultato. Quando il team discute la stima di un'attività, emergono requisiti nascosti, dipendenze e rischi. Anche se il numero finale è impreciso, la discussione dà a tutti i partecipanti una comprensione dell'attività. Ecco perché i metodi di stima collettiva (Planning Poker) sono più efficaci di quelli individuali.
Esistono diversi metodi di stima, ciascuno adatto a diverse fasi del progetto e livelli di dettaglio. La scelta del metodo dipende dai dati disponibili e dalla precisione richiesta.
| Metodo | Tipo | Precisione | Quando usarlo |
|---|---|---|---|
| Planning Poker | Esperto, collettivo | Alta (nello sprint) | Stima delle attività di sprint |
| T-Shirt sizing | Esperto, rapido | Media | Stima preliminare degli epic |
| Stima analogica | Basata sulla storia | Media | Attività simili del passato |
| Tre punti (PERT) | Probabilistica | Superiore alla media | Attività con alta incertezza |
| Parametrica | Basata su formule | Dipende dai dati | Attività ripetitive misurabili |
Planning Poker è il metodo di stima più popolare in Agile. Ogni sviluppatore riceve un mazzo di carte con i numeri di Fibonacci (1, 2, 3, 5, 8, 13, 21). Dopo aver discusso l'attività, tutti mostrano la loro carta simultaneamente. Se le stime divergono, gli sviluppatori con la stima minima e massima spiegano la loro logica, quindi si procede a una nuova votazione. Questo metodo elimina il bias di autorità e produce una stima più accurata.
T-Shirt sizing è una stima approssimativa per taglia di maglietta: XS, S, M, L, XL, XXL. Questo metodo viene utilizzato per la stima rapida di attività grandi (epic) nelle fasi iniziali quando i dettagli sono sconosciuti. Successivamente, ciascuna di queste attività viene scomposta e stimata in Planning Poker. T-Shirt sizing richiede 5-10 minuti per attività, ma fornisce solo un ordine di grandezza.
PERT utilizza tre stime: ottimistica (O), pessimistica (P) e più probabile (M). La stima finale viene calcolata con la formula: (O + 4M + P) / 6. Questo metodo tiene conto dell'incertezza e fornisce un risultato più realistico di una stima singola. PERT è particolarmente utile per attività con rischi elevati o nuove tecnologie.
La precisione della stima dipende dalla fase del progetto e dalla quantità di informazioni note. Prima viene effettuata la stima, maggiore è il margine d'errore — questo è normale e deve essere considerato nella pianificazione.
Il Cono dell'incertezza (Cone of Uncertainty) è un modello che descrive come l'errore di stima diminuisce con l'avanzare del progetto. Nella fase di concept, il margine d'errore è del 400% (un'attività potrebbe richiedere da 1 a 4 mesi). Nella fase di sprint, è del 20% (1-1,2 mesi). Comprendere questo modello aiuta a non richiedere stime precise nelle fasi iniziali.
La stima relativa (in story points) è più precisa di quella assoluta (in ore) perché le persone sono più brave a confrontare attività che a stimare il tempo. “Questa attività è due volte più complessa di quella” è un giudizio più affidabile di “questa attività richiederà 8 ore”. Le stime relative non dipendono da uno sviluppatore specifico e mantengono la precisione quando il responsabile cambia.
La precisione della stima può essere migliorata attraverso un approccio sistematico, la discussione collettiva e l'analisi degli errori passati. Esistono diverse pratiche comprovate.
Qualsiasi attività stimata in più di 2 giorni deve essere scomposta in sotto-attività. Il principio: se un'attività non può essere stimata con più del 50% di precisione, è troppo grande. Suddividetela in passaggi, ciascuno comprensibile e stimabile. Dopo la scomposizione, la stima totale è spesso 1,5-2 volte maggiore di quella iniziale.
Mantenete una cronologia delle stime e confrontatela con lo sforzo effettivo. Ad esempio: “le attività stimate in 3 story points richiedono in media 4 giorni, non 2”. Utilizzate la velocity del team per le previsioni: se il team completa 20 story points per sprint, non pianificate 30. Analizzare la precisione delle stime passate è il miglior allenamento per l'abilità di stima.
Ancoraggio è un effetto psicologico per cui la prima stima espressa influenza tutti i partecipanti. Per evitare l'ancoraggio in Planning Poker, tutti mostrano le loro carte simultaneamente, non a turno. Calibrazione è il confronto regolare delle stime con i risultati effettivi: dopo 10-20 sprint, il team impara a stimare con maggiore precisione grazie al feedback.
Ogni attività contiene rischi nascosti: malattia dello sviluppatore, problemi con API, modifiche dei requisiti. Aggiungete un fattore di adeguamento al rischio alla vostra stima: per attività ad alto rischio, un moltiplicatore di 1,5-2; per basso rischio, 1,1-1,2. Mostrate in modo trasparente al cliente quali rischi sono stati considerati e come influenzano le tempistiche.
Gli errori di stima si ripetono nella maggior parte dei team, indipendentemente dalla loro maturità. Conoscere questi errori è il primo passo per correggerli.
L'errore più comune è stimare secondo lo scenario migliore: “se tutto va perfettamente, lo faremo in 3 giorni”. In realtà, nulla va perfettamente: bug, domande sui requisiti, attività dipendenti. Soluzione: stimate secondo lo scenario più probabile, non quello ottimistico. Utilizzate PERT per considerare la variabilità.
Quando un manager dice “serve per venerdì”, lo sviluppatore adatta inconsciamente la stima a quella scadenza. La stima sotto pressione è sempre sottostimata e porta a superare le scadenze. Soluzione: la stima deve precedere la scadenza, non il contrario. Prima il team stima, poi le parti concordano le tempistiche.
La complessità dell'attività (quanto pensare) e il tempo (quanto fare) sono metriche diverse. Un'attività può essere semplice ma lunga (creare 10 schermate) o complessa ma rapida (trovare un bug in codice legacy). Gli story points tipicamente stimano la complessità, mentre il tempo viene derivato dalla velocity del team.
Uno sviluppatore non lavora 8 ore consecutive su una singola attività: riunioni, revisioni del codice, aiuto ai colleghi e attività amministrative consumano il 30-50% del tempo lavorativo. I cambi di contesto devono essere considerati nella stima: in realtà, uno sviluppatore scrive codice per 3-4 ore al giorno.
Domande frequenti
Lo sviluppo è un processo creativo con alta incertezza. A differenza dell'edilizia o della produzione, dove ogni passaggio è noto, in IT ogni attività è unica. Le incognite sconosciute (unknown unknowns) sono la principale causa di imprecisione. Anche un team esperto sbaglia nel 30-50% delle stime. Questo è normale e deve essere considerato nella pianificazione.
Gli story points sono migliori per la pianificazione degli sprint perché sono relativi e non dipendono dall'esecutore. Le ore sono necessarie per contratti e reportistica esterna, ma sono meno precise. La combinazione ottimale: le attività vengono stimate in story points e le scadenze vengono convertite tramite la velocity del team in giorni di calendario.
Per attività con tecnologie sconosciute, utilizzate prima uno Spike (ricerca a tempo limitato). Dopo la ricerca, il team comprende la complessità e può fornire una stima realistica. Applicate un moltiplicatore di 2-3 alla stima abituale e aggiungete un buffer del 50% per difficoltà impreviste.
Mostrate la scomposizione — suddividete l'attività in sotto-attività con stime individuali. Spiegate in cosa consiste il tempo: sviluppo, test, revisione del codice, documentazione. Proponete alternative: ridurre l'ambito, semplificare la funzionalità o suddividere in fasi. Non riducete mai una stima senza modificare i requisiti.
La ristima è necessaria quando emergono nuove informazioni su un'attività: scoperta di requisiti aggiuntivi, vincoli tecnici trovati o cambiamento delle priorità. All'interno di uno sprint, le attività non vengono ristimate — l'attenzione è sul completamento. Tra gli sprint, il backlog viene ristimato durante il grooming.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche