Stiamo lavorando su un nuovo firmware per il nostro nuovo dispositivo V2. La società ha un vecchio firmware V1 (e hardware). Gli hardware sono simili tra loro (ma ci sono alcune differenze) quindi in pratica potremmo usare il firmware V1 con "alcune" modifiche. Sfortunatamente il firmware V1 è un codice spaghetti. Dobbiamo supportare sia l'hardware che le nuove funzionalità, quindi il codice dovrebbe essere manutenibile.
Abbiamo cercato di creare un backlog con piccole storie. Ogni storia mostrerebbe una nuova funzione di lavoro all'utente mentre estrae una parte riutilizzabile del codice V1 in un progetto di libreria e la usa in V2. Sarebbe stato possibile mantenere entrambi i firmware V1 e V2 sempre rilasciabili e saremmo stati in grado di mostrare una demo funzionante in anticipo (con funzionalità limitate all'inizio).
Nel tempo si è scoperto che il management si aspetta che sia un progetto breve (dato che hws è simile) e suggerisce un altro approccio: spostare tutto nel progetto della libreria e modificare solo quelle parti che sono diverse. Questo approccio sembra più rischioso perché non saremo in grado di dimostrare alcun progresso (la prima demo sarà successiva, è piuttosto tutto o niente, ogni modulo deve lavorare più o meno per la prima demo) e immagino che potrebbe portare a imprevedibili correzione dei bug.
Che cosa dovrei prendere in considerazione prima di decidere tra i due approcci? C'è un terzo?