Ad un certo punto è in fase di sviluppo un programma. Le funzioni vengono aggiunte o rimosse o modificate continuamente. Ogni versione non è altro che un prototipo. Quindi non perdo molto tempo a scrivere codice super pulito a quel punto perché non so mai quanto dura qualcosa. Certo, cerco di mantenere la qualità del codice su determinati standard, ma il tempo è sempre un problema.
Poi arriva il punto in cui il programma è finito e il / i decisore / i dicono "questo è tutto". Ho un prototipo funzionante a questo punto, ma il codice all'interno è un po 'disordinato da tutto il avanti e indietro durante la fase di sviluppo. Mi aspetto di iniziare il test / debug finale, ma il mio istinto dice che ora dovrei in qualche modo ripulire e riscrivere le cose per dargli un'architettura adeguata che renda più facile la manutenzione, ecc.
Una volta che le cose sono state testate e approvate, non ha senso riscrivere allora. Su base regolare mi trovo lì con un prototipo "finito" funzionante e ricevo un bug durante i test e vedo che è il risultato di una codifica non intelligente che è il risultato dell'intero processo di sviluppo. Sono nel mezzo del test e la correzione di bug sarebbe una riscrittura ... è un casino!
Ci sono modi migliori / da manuale, ne sono sicuro. Ma devo lavorare in un vero ambiente di lavoro dove non tutto è un libro di testo.
Quindi, come posso trasferire il mio prototipo funzionante a una versione di rilascio con una base di codice stabile? Forse non dovrei considerare lo sviluppo finito una volta che lo faccio e in realtà vederlo come la fase di pulizia ... Non lo so, ho bisogno di aiuto qui.
MODIFICARE
Voglio chiarire alcune cose.
Sono al 100% dalla parte del farlo prima e non dopo, il codice è pulito e leggibile. Ma devo anche fare le cose e non posso sognare la bellezza del codice tutto pulito e brillante. Devo trovare un compromesso.
spesso una nuova funzionalità è davvero solo qualcosa che vogliamo provare e vedere se ha senso implementare qualcosa del genere. (specialmente nelle app mobili, per ottenere un aspetto reale su un dispositivo reale) Quindi è qualcosa di piccolo che (imho) non giustifica troppo lavoro in una prima iterazione "vediamo". Tuttavia a volte sorge la domanda QUANDO devo pagare questo tech.debt? Ecco di cosa tratta questa domanda.
Se so che la metà delle funzionalità verrà abbandonata il giorno dopo (esperienza sufficiente nella nostra azienda ormai) trovo davvero difficile credere che il modo migliore per affrontare il mio problema sia comunque investire tempo extra per scrivere tutto pulito anche se la maggior parte verrà abbandonata poco dopo. Mi sembra che risparmierò tempo se faccio una grande pulizia una volta che la cosa è solida, quindi la mia domanda.