Si desidera iniziare facendo una sorta di analisi costi-benefici. Non capirai davvero quanto sia importante ricominciare da capo senza essere in grado di dimostrare che questo è l'approccio migliore da seguire. Questo non vuol dire che l'istinto del tuo intestino sia necessariamente sbagliato, ma devi davvero determinare da solo se è un caso di riluttanza o di orgoglio professionale che ti trattiene dal lavorare su un prodotto esistente.
Per quanto possa sembrare una base di codice esistente, è necessario ricordare che probabilmente c'è già un notevole investimento in esso che il tuo datore di lavoro non vorrà che tu passi via senza una buona causa. La realtà è che anche se hai una buona ragione per voler buttare fuori il prodotto esistente, devi giustificare il tuo ragionamento, e per fare in modo che funzioni sia per il tuo team che per l'azienda, avrai bisogno di essere in grado di mostrare non solo quanto costa il prodotto e potrebbe salvare se fatto in un altro modo, sarà anche necessario dimostrare che esiste un percorso verso il tuo "ideale d'oro" che non sarà eccessivamente costoso, e puoi assicurati che questo costo extra per il percorso venga conteggiato rispetto a tutti i potenziali risparmi che potresti pensare di poter mostrare per la tua riscrittura.
Quello che sto dicendo è che ci sarà molto lavoro. Hai bisogno di mostrare che cosa costano i prodotti per mantenerli così come sono, quanto costerebbe migliorarli per renderlo di migliore qualità, cosa avrebbe voluto conservare per prepararsi a passare a un nuovo prodotto, quanto costerebbe a sviluppare un nuovo prodotto e ciò che il nuovo prodotto dovrebbe costare da mantenere.
La realtà è che nessun prodotto è effettivamente TROPPO difficile da mantenere. Tutti i prodotti possono essere migliorati con un approccio attento al refactoring e al miglioramento graduale nel tempo. Anche questo sarà molto lavoro, ma con meno probabilità di essere costoso o impegnativo rispetto al tentativo di giustificare il lancio dell'asciugamano semplicemente perché il codice attuale è difficile da mantenere. Quando sento qualcuno dire che il codice non è mantenibile, quello che sento è che è probabile che il codice non sia supportato da test unitari, probabilmente non supportati dall'automazione di test / build, probabilmente molta duplicazione del codice e probabilmente molte classi e metodi che stanno tutti cercando di fare troppo. Questi sono tutti problemi che possono essere risolti in larga misura se viene applicato un piccolo sforzo per affrontarli.
In alcuni casi molto rari, potresti avere un codice con dipendenze su cui non hai alcun controllo. Sto parlando di vecchi prodotti di terze parti che vengono utilizzati dalla tua base di codice, ma che sono stati dimenticati perché sono stati aggiunti anni fa e tutti gli esperti se ne sono andati senza documentare il motivo per cui questi prodotti erano in uso. In questi casi potresti essere giustificato a iniziare qualcosa di nuovo, tuttavia a seconda delle dimensioni del tuo prodotto è raro che ciò giustifichi la riscrittura di un intero prodotto da zero.
Non penso che tu possa davvero trovare una risposta definitiva alla tua domanda. Gran parte di questo genere di cose si riduce a te, alla tua squadra, alla cultura aziendale, al tempo, ai finanziamenti disponibili e ad un intero casino di altre cose. Questo è il tipo di cose che devi davvero sederti con il tuo manager per discutere e per lavorare come team per determinare il percorso migliore.