Lavoro con una base di codice di oltre 500.000 righe di codice. Ha un serio bisogno di refactoring. Sono stati identificati sforzi di refactoring che richiederanno più tempo del normale sprint di due settimane. Questi non possono essere suddivisi in compiti più piccoli, come ho visto suggerito in altre risposte su questo sito. Il prodotto deve funzionare al termine dell'iterazione e il refactoring parziale lascerà il sistema in uno stato inutilizzabile poiché la dipendenza tra gli articoli è orribile. Quindi quale sarebbe il modo migliore per affrontare questo ostacolo? Ancora una volta menziono, scomporlo in pezzi più piccoli non è un'opzione, che è già stato fatto.
Aggiornamento: le persone sembrano aver bisogno di una spiegazione del perché questo non può essere inserito in uno sprint di 2 settimane. In uno sprint c'è di più oltre alla semplice scrittura di codice. Abbiamo una politica senza codice senza test. Quella politica non esisteva sempre 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 piccole modifiche hanno effetto su molte parti del sistema e dobbiamo assicurarci che quelle parti continuino a funzionare 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 che l'altro lavoro venga aggiunto 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 garantisce di rinominarlo in una riprogettazione. Vorrei credere che in futuro potremmo svolgere esattamente lo stesso compito in un ciclo di due settimane man mano che il nostro processo migliora. Il codice in questione non ha dovuto cambiare da molto tempo ed è abbastanza stabile. Ora, man mano che la direzione dell'azienda sta diventando più adattabile al cambiamento, vogliamo che questa parte della base di codice sia adattabile come il resto. Il che richiede il refactoring. Sulla base delle risposte qui, sta diventando evidente che mancano le impalcature necessarie per far funzionare questo refactoring nel lasso di tempo degli sprint normali.
Risposta:
Ho intenzione di seguire l'approccio di diramazione e fusione 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 adottare l'approccio suggerito da Buhb per identificare le aree in cui mancano i test e implementarli prima, quindi eseguire il refactoring. Ci permetterà di mantenere il nostro normale ciclo di sprint di due settimane, proprio come molti hanno affermato che dovrebbe essere sempre il caso del refactoring.