Una delle mie esperienze è andata bene
Il sistema era morto e incapace di reagire ai cambiamenti del mercato, era rivolto ai clienti, aveva un aspetto datato e funzionato in modo obsoleto e aveva così tanti bug report, che il tempo stimato per risolverli era più che riscrivere l'intera faccenda. Alcune lezioni
- La stima del tempo era sbagliata MA
- Il nuovo sistema ha nuove funzionalità / migliori
- È stato davvero facile aggiungere funzionalità
- Quando viene rilevato un bug, è stato risolto per lo più entro un'ora
- L'esperienza utente è stata notevolmente migliorata, perché i progettisti hanno avuto la possibilità di aggiornare il design.
Non è una buona esperienza
Il sistema era molto buggato e aveva un orribile modello di dati e un livello di accesso ai dati. In realtà era la tecnologia usata che lo paralizzava. Ci sono state discussioni sull'uso dell'attuale modello di dati, ma sono stati abbandonati. Il nuovo design era necessario per rendere possibili nuove funzionalità.
- I problemi del primo sistema sono stati superati. Le ragioni per cui le cose erano un disastro sono perché i poteri che erano non erano sicuri di quello che volevano.
- I ritardi massicci derivanti dal costante cambiamento della mente hanno ucciso il progetto.
- Il software stesso funzionava abbastanza bene, ma la sensazione generale di tutti non era buona.
Un successo di refactoring
Ho ricevuto alcuni sistemi che alcuni avrebbero giustificato la riscrittura (alcune persone sono molto impazienti e talvolta vogliono semplicemente farlo perché il codice sembra diverso).
Il particolare sistema era un casino. Gli strati erano tutti mescolati con nessun livello di accesso ai dati distinguibile, i controlli sugli schermi erano denominati Button1, Button2 ... Le variabili venivano riutilizzate, i pezzi di codice venivano copiati all'ingrosso su classi diverse.
L'uso di strumenti di refactoring ha aiutato molto, ma in sostanza sono stati necessari circa 2 mesi di lavoro dedicato, intercalati da correzioni di bug e richieste di miglioramento. Essenzialmente il progetto potrebbe continuare a funzionare nonostante la massiccia revisione interna. Se inizi in piccolo e aggiusti presto le piccole cose, ti rendi conto che puoi stare tranquillo lavorando con qualcosa.
Lezioni che ho imparato
Cerca sempre di pensare a ogni singolo motivo per non riscrivere . Pensa il più strong possibile come puoi salvare un sistema morente. Saresti sorpreso di quanto meno lavori sia di quanto pensi. I Riscrivi sono un enorme gioco d'azzardo e in buona compagnia funzionerà bene. La gestione di solito cerca di giustificare una riscrittura aggiungendo funzionalità alla nuova versione. Questo potrebbe aprire un incubo di creep di portata costante, cosa-se-avessimo-stupido-caratteristica-x, paralisi dell'analisi e tutte le altre cose brutte che vengono con un nuovo progetto.
Se la tua azienda è brava in nuovi progetti e non c'è modo di salvarla, quindi segnala cosa c'è di male nel sistema. Mostralo ai tuoi manager, ottieni una terza opinione da un altro sviluppatore e prendila da lì.