Timeboxing significa che le iterazioni non si allungano
Chiedi come accorciare le iterazioni. Ma ciò implica che stanno impiegando più tempo, il che implica che non stai applicando il time boxing. In qualsiasi iterazione quando la complessità inizia a pesare di più (o si hanno altre battute d'arresto indesiderate), non si modifica la lunghezza dell'iterazione. Decopri invece l'aggiunta incrementale pianificata all'inizio dell'iterazione. Alcuni metodi iterativi suggeriscono di fare questa valutazione nel mezzo di un'iterazione (prima che sia troppo tardi). Maggiori informazioni su ciò che OpenUP suggerisce :
Gestire gli obiettivi
Quando un team è significativamente indietro, o si verificano problemi critici che impediscono al team di raggiungere gli obiettivi di iterazione, potrebbe essere necessario decifrare il lavoro per garantire che il team fornisca un utile incremento del prodotto entro la fine dell'iterazione, massimizzando valore degli stakeholder. Collaborare con il team e le parti interessate per rivedere il piano di iterazione e, se necessario, ridurre l'enfasi su compiti meno critici rimandandoli a una successiva iterazione. In rari casi, se gli obiettivi di iterazione sembrano ancora impossibili da raggiungere, il team potrebbe prendere in considerazione la possibilità di interrompere l'iterazione o riformulare l'iterazione verso un nuovo obiettivo.
Se si osserva il primo grafico, è possibile notare che il valore aggiunto è inferiore nelle iterazioni successive. Ciò significa che le iterazioni impiegano ancora più tempo di prima, ma forse ci sono meno nuove funzionalità (relativamente) all'interno di ogni iterazione.
Come dici tu, la forza dell'iterativo è di ridurre il rischio ottenendo feedback frequentemente. Sembra che tu stia parlando della complessità del progetto che ti sta attenuando nelle iterazioni successive? Non sono d'accordo che questa sia una debolezza dell'iterativo. È un punto debole della complessità mal gestita.
Teoricamente, si mettono in primo piano i maggiori rischi dei progetti. Ciò significa che hai un progetto molto instabile, ma mentre gestisci i grandi rischi, dovrebbe stabilizzarsi. La complessità, ovviamente, è uno dei rischi.
Linguaggi di scripting e processi automatizzati aiutano a ridurre il rischio di complessità, che può essere definita complessità "accidentale" (ed è discussa in un'altra risposta). I progetti altamente iterativi ma complessi (Chromium è un buon esempio, anche se non è un gioco) hanno molte infrastrutture per gestire la complessità. Dai un'occhiata a https://www.chromium.org/developers per molti esempi di cose come consigli sulla codifica per BuildBot .
Ciò che questa figura non mostra è la stabilità del progetto, che probabilmente assomiglia a questo:
Fino a quando i rischi tecnici non saranno ben compresi, hai a che fare con semplici prototipi