Lavoro con una base di codice che supera le linee di codice di 500K. Ha un serio bisogno di refactoring. Sono stati identificati sforzi di refactoring che impiegheranno più tempo del normale sprint di due settimane. Questi non possono essere suddivisi in attività più piccole, come ho visto suggerito in altre risposte su questo sito. Il prodotto deve funzionare alla fine dell'iterazione e il refactoring parziale lascerà il sistema in uno stato inutilizzabile poiché la dipendenza tra gli elementi è orribile. Quindi quale sarebbe il modo migliore per affrontare questo ostacolo? Ancora una volta cito, scomposizione in pezzi più piccoli non è un'opzione, che è già stata fatta.
Aggiornamento: Le persone sembrano aver bisogno di una spiegazione del perché questo non può essere inserito in uno sprint di 2 settimane. C'è più coinvolgimento in uno sprint che non solo scrivere codice. Abbiamo una politica di nessun codice senza test. Quella politica non è sempre esistita e gran parte della base di codice non li ha. Inoltre alcuni dei nostri test di integrazione sono ancora test manuali. Il problema non è che il refactoring stesso sia così grande. È con il fatto che piccoli cambiamenti hanno un effetto su molte parti del sistema, e dobbiamo assicurarci che quelle parti funzionino ancora correttamente.
Non possiamo rimandare o estendere uno sprint perché abbiamo aggiornamenti rapidi mensili. Quindi questa modifica che si estende oltre uno sprint non può impedire l'aggiunta dell'aggiornamento all'aggiornamento rapido.
Refactoring vs Redesign: Solo perché il nostro processo di sviluppo non è abbastanza efficace per gestire questo refactoring in un ciclo di due settimane, non è necessario rinominarlo in una riprogettazione. Mi piacerebbe credere che in futuro potremmo svolgere lo stesso identico compito entro un ciclo di due settimane man mano che il nostro processo migliorerà. Il codice in questione qui non ha dovuto cambiare molto a lungo ed è abbastanza stabile. Ora, poiché la direzione dell'azienda sta diventando più adattabile al cambiamento, vogliamo che questa porzione della base di codice sia adattabile come il resto. Che richiede il refactoring. Sulla base delle risposte qui, sta diventando evidente che mancano le impalcature necessarie per rendere questo lavoro di refactoring nel lasso di tempo dei normali sprint.
Risposta:
Ho intenzione di fare il ramo e unire l'approccio che Corbin March ha suggerito per la prima volta in modo da poter imparare di più su queste aree problematiche e su come identificare i test mancanti. Penso che andando avanti, dovremmo prendere l'approccio che Buhb ha suggerito di identificare le aree che mancano test e implementarle prima, quindi fare il refactoring. Ci consentirà di mantenere il nostro normale ciclo di sprint di due settimane, proprio come molti hanno detto che dovrebbe sempre essere il caso del refactoring.