Ad un certo punto un programma è in fase di sviluppo. Le funzioni vengono aggiunte o rimosse o modificate continuamente. Ogni versione non è altro che un prototipo. Quindi non spreco molto tempo a scrivere codice super pulito a quel punto perché non so mai per quanto tempo duri qualcosa. Certo che 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 dire / e "è così". A questo punto ho un prototipo funzionante, ma il codice all'interno è un po 'disordinato da tutto il back and forth durante la fase di sviluppo. Dovrei iniziare a testare / eseguire il debug finale ma il mio istinto dice che ora dovrei pulire e / o riscrivere le cose per dargli un'architettura corretta che faciliti la manutenzione ecc.
Una volta che le cose sono state testate e approvate, allora non ha senso riscriverle. Mi trovo regolarmente con un prototipo "finito" funzionante e ottengo 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 bel mezzo dei test e il bugfix sarebbe una riscrittura ... è un casino!
Ci sono modi migliori / da manuale, ne sono sicuro. Ma devo lavorare in un ambiente di lavoro reale dove non tutto è un libro di testo.
Quindi, come faccio a passare 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 effetti lo vedo come la fase di pulizia ... Non lo so, ho bisogno di aiuto qui.
Modifica
Voglio chiarire alcune cose.
-
Sono al 100% dalla parte di farlo subito prima e non dopo, 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à è in realtà solo qualcosa che vogliamo provare e vedere se ha senso implementare qualcosa di simile. (specialmente nelle app mobili, per avere 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 pago questo tech.debt? Ecco di cosa tratta questa domanda.
Se so che metà delle funzionalità verrà eliminata un giorno dopo (abbastanza esperienza nella nostra azienda ormai), trovo davvero difficile credere che il modo migliore per affrontare il mio problema sia quello di investire ancora tempo in più per scrivere tutto pulito anche se la maggior parte di essa verrà eliminata poco dopo. Mi sembra di risparmiare tempo se faccio una grande pulizia una volta che la cosa è solida, quindi la mia domanda.