Crea un piano di transizione incrementale . Ovvero, fai in modo che il progetto sia sempre in uno stato eseguibile, passando dal vecchio codice al nuovo codice senza entrare nella condizione di richiedere in modo efficace tutto il nuovo codice da scrivere prima che tutto funzioni.
Potrebbero esserci alcune cose ancora fatte "alla vecchia maniera", mentre altre funzionalità sono fatte "alla nuova maniera" e l'interfaccia utente potrebbe essere meno che desiderabile per un po '. Ma questo approccio ridurrà significativamente il tuo rischio, perché puoi sempre spedire qualcosa. (In realtà, se hai una transizione graduale all'interfaccia utente, questo potrebbe funzionare bene con la nozione di Joel l'Effetto Iceberg : la direzione / i clienti vedranno i progressi e avranno un'idea di ciò che resta da fare).
Questo dipende in qualche modo dalle circostanze della tua base di codice, ma guarda attentamente prima di decidere se questa base è l'eccezione alla regola o no, perché probabilmente non lo è.