TL; DR
Le scadenze [a] gile? ... [D] eadline sono considerate andare di pari passo con lo sviluppo di [a] gile.
Molte risposte qui probabilmente si concentreranno sugli aspetti ingegneristici della domanda. Invece, affronterò questo aspetto dal punto di vista della gestione del progetto.
Una scadenza implica una grande pianificazione iniziale che non è in linea con i principi agili. Invece, i modelli di sviluppo iterativo si basano su intervalli temporali, cadenza e cicli di rilascio che includono la pianificazione just-in-time, ma non la "pianificazione anticipata" che è generalmente associata alle scadenze tradizionali di gestione dei progetti.
È ancora possibile eseguire la pianificazione del rilascio con metodologie agili, ma i piani si basano generalmente su una stima del numero di iterazioni richieste per raggiungere un obiettivo piuttosto che su obiettivi di gestione stabiliti da Fiat. Ciò non significa che le date di spedizione non possano essere stabilite o che gli obiettivi non possano essere raggiunti, ma il modo in cui sono definiti e raggiunti è molto diverso rispetto alle tradizionali metodologie di gestione del progetto.
Pensa a caselle temporali, non scadenze
Tuttavia, ogni progetto a cui abbia mai partecipato ha insistito nel fissare una scadenza. Dato che Agile tenta di concentrarsi su pianificazione adattiva, flessibilità e cambiamento; le scadenze sono agili?
Questo è un malinteso comune sui principi agili. I framework agili come Scrum e Kanban non si concentrano sulle scadenze, ma piuttosto sul time-boxing e su una cadenza di consegna sostenibile.
In Scrum, ad esempio, lo Sprint non è una "scadenza". Si tratta di una casella temporale che viene riempita con la quantità di lavoro che il team stima si adatterà all'interno della finestra temporale senza traboccare, e viene quindi "fatto" o "non fatto" alla scadenza della finestra temporale. Una volta sparito, il time-box è andato per sempre; qualsiasi lavoro che non viene svolto deve essere riprogrammato e rivalutato in una nuova finestra temporale altrettanto effimera basata sulle esigenze attuali (piuttosto che storiche) del progetto.
L'importanza del time-box è che crea sia una cadenza prevedibile per le parti interessate per rivedere i progressi, sia un ritmo sostenibile per il team in cui fornire incrementi di valore potenzialmente shippable . Il lavoro è incrementale e segue la cadenza; il concetto di una grande scadenza anticipata non è pertanto in linea con i principi agili.
Pianificazione del rilascio basata su time-box
Forse l'area in cui le persone hanno più difficoltà a mappare i processi agili con i framework tradizionali è la pianificazione del rilascio. La pianificazione del rilascio comporta spesso risultati a portata fissa o a data fissa. In framework agili, la pianificazione del rilascio viene generalmente eseguita attraverso un processo di stima in cui l' ambito viene esplicitamente definito come variabile mutabile, mentre le date di rilascio sono stimate in iterazioni.
Ad esempio, un progetto può essere impegnato a rilasciare v1.0 di un progetto al termine di 20 iterazioni; l'ambito di ciò che viene rilasciato può cambiare nel corso della vita del progetto (poiché l'ambito, le caratteristiche e le priorità possono cambiare all'inizio di ogni Sprint), ma le date target per ciascuna versione sono fissate nel piano del progetto. Il team si impegna a fornire un incremento potenzialmente shippable ogni Sprint e la Definizione di Fine include controlli di qualità come l'integrazione continua per garantire che il progetto sia in uno stato rilasciabile alla fine di ogni Sprint.
Occasionalmente, vedrai progetti agili in cui l'ambito è fisso, ma poiché l'ambito è la variabile mutabile in progetti agili, la data di rilascio può cambiare nel tempo man mano che l'ambito di ciascuna iterazione si adegua, cambia o si adatta alle esigenze in evoluzione del progetto . Certamente non raccomando l'approccio a portata fissa ai team agili, in particolare i team inesperti, ma ci sono momenti in cui è l'approccio giusto.
Guarda anche