- Lavorate anche su codice senza test?
- Sì, ed è il caso più frequente. Si parte dai test di caratterizzazione, che descrivono il comportamento attuale del sistema anche dove è scorretto e diventano la rete di sicurezza per modificare il codice senza doverne capire subito ogni dettaglio. I test crescono insieme al refactoring, a partire dalle aree che si toccano più spesso.
- Scrivete codice o fate formazione?
- Scriviamo codice. Lavoriamo nel vostro repository, in coppia con i vostri developer, su funzionalità e refactoring veri, e le tecniche passano al team mentre si lavora. Quando serve un momento di formazione dedicato lo affianchiamo al lavoro sul codice, senza sostituirlo.
- Come convive il refactoring con lo sviluppo delle funzionalità?
- Il refactoring si fa dentro la delivery, non al posto suo. Con il refactoring opportunistico si migliora il codice che la prossima funzionalità deve toccare; con il team di scopo si sblocca un'area mentre il resto del team continua a rilasciare. In nessuno dei due casi la roadmap si ferma.
- Lavorate anche sui monoliti?
- Sì. Spesso un monolite non va spezzato ma reso modulare, con confini chiari al suo interno. Dove una parte va davvero sostituita usiamo lo Strangler Fig: il nuovo codice cresce accanto al vecchio e prende in carico una funzione alla volta, mentre il monolite continua a funzionare.
- Quanto dura un percorso di refactoring del codice legacy?
- I primi progressi misurabili arrivano dopo almeno tre-sei mesi. La durata complessiva dipende da quanto debito c'è e da dove si trova, e il piano di uscita, con le condizioni per chiudere, si definisce all'inizio.
- Da dove si parte?
- Dall'assessment del debito tecnico, che produce una mappa del debito con priorità e un piano d'intervento e indica anche quale modalità di refactoring serve. Se il team preferisce procedere da solo con quel piano, può farlo.