Lettura richiesta: link
Detto questo, per lo sviluppo di software professionale, è raro che un completo partendo da zero sia sempre una buona idea. Circa l'unico scenario in cui una completa riscrittura ha senso è quando è necessario creare un software antico, dipendente da una vecchia piattaforma dismessa, lavorare su software moderni. Anche all'interno di questo scenario, una riscrittura totale non è ancora necessaria.
Una riscrittura completa è una buona idea, significa che il 100% del tuo lavoro di prima è spazzatura completa, con niente che valga la pena tenere. Scrivere una spazzatura completa al 100% non è mai qualcosa che vuoi fare regolarmente.
Quando fai bene il tuo lavoro, la maggior parte del vero coraggio del valore aggiunto di parti del tuo lavoro dovrebbe essere in gruppi ragionevolmente modulari, pacchettizzati: classi, librerie, qualunque cosa. Di solito, gran parte del cruft iniziale di un progetto e fonte di confusione è il modo in cui tutto è agganciato. Sostituendo tutto il codice della colla e riorganizzando e rifattando la base di codice, puoi lasciare il 90% della carne e delle patate del tuo codice, ma riorganizzato in un progetto più sensato.
But I feel most projects are more exploratory than anything. In addition to moving requirements, we are constantly learning new methodologies, patterns and "tricks".
Le tue percezioni non riflettono la realtà del mondo del lavoro. Pochi progetti sono completamente esplorativi. Io lavoro facendo R & D per dispositivi medici, lavorando su software per fare cose che non sono mai state fatte prima, e solo un frammento di un dato progetto è in realtà esplorativo. La maggior parte, come qualsiasi altra applicazione, è più banale come il salvataggio e il caricamento di file / database di dati, la comunicazione con l'hardware, la creazione di grafici e la creazione di report PDF. Qualcuno che lavora su un carrello della spesa o su un'applicazione CRM avrà ancora meno lavoro esplorativo da fare.
Nuove metodologie, trame e trucchi non si muovono rapidamente come alcuni blogger javascript potrebbero sembrare, e nuovi trucchi o modelli non invalidano anni di codice funzionante.
Quindi, in breve, una riscrittura completa è quasi sempre una cattiva idea. Identifica cosa è buono e cattivo, mantieni il buono, il refactoring e riorganizza il cattivo, e continua a muoverti verso un buon prodotto.