Ho lavorato su diversi progetti che hanno agito con successo come mezzo per migliorare continuamente un software già maturo. Ma ho scoperto che è molto più difficile essere "agili" quando si pianifica qualcosa. Un elemento di cascata è necessario per produrre specifiche funzionali iniziali e un'architettura sensibile, come da questa domanda: Come spieghi a un team" agile "che hanno ancora bisogno di pianificare il software che scrivono?
Tuttavia, vuoi essere sempre il più veloce, leggero e soprattutto il più flessibile possibile. Uno dei maggiori pericoli nella progettazione del software tradizionale è l'incomprensione, che porta a importanti cambiamenti architettonici che vengono catturati solo in ritardo nel processo.
Recentemente ho aderito a un progetto che ha avuto una pianificazione terribilmente insufficiente ed è nel caos più orrendo. Mentre sto recuperando ciò che posso, mi chiedo cosa avrebbero potuto fare gli sviluppatori precedenti (oltre a qualche pianificazione) per cogliere gli enormi problemi architettonici nel sistema in una fase iniziale.
Se ipotizziamo una quantità moderata di pianificazione preliminare del progetto, come posso allocare meglio il lavoro negli sprint iniziali per cogliere i problemi di architettura (probabilmente inevitabili) nella soluzione il prima possibile?
EDIT: dopo aver letto le risposte e alcuni articoli suggeriti, sento di aver bisogno di un po 'di chiarezza nella domanda. Capisco che Agile richiede un design in anticipo, ma che dovrebbe essere ridotto al minimo, e deve essere fatto con un occhio alla flessibilità.
Quello che sto cercando di scoprire sono se ci sono trucchi, suggerimenti o tecniche per assicurare che identifichiamo correttamente le parti del progetto che hanno bisogno della maggior rigidità, prototipo e iterarle prima, e raccogliere i problemi lì già possibile?