Recentemente ho iniziato a lavorare su un progetto in cui una vecchia applicazione monolitica viene migrata in architettura basata su microservizi.
Il codebase legacy è molto disordinato ('spaghetti code') e spesso una funzione apparentemente semplice (ad esempio chiamata "multiplyValueByTen") si rivela in seguito come " migliaia di righe di codice di convalida che coinvolgono 10 tabelle in 3 schemi diversi ".
Ora il mio capo (giustamente) mi chiede di stimare quanto tempo occorrerebbe per scrivere la caratteristica X nella nuova architettura. Ma ho difficoltà a trovare una stima realistica; spesso estremamente sottovaluto il compito a causa di ragioni che ho affermato sopra e mi imbarazzo perché non posso terminare in tempo.
La cosa sensata potrebbe sembrare entrare veramente nel codice, annotare ogni ramo e chiamate ad altre funzioni e quindi stimare il costo del tempo. Ma c'è davvero una minuscola differenza tra la documentazione del vecchio codice e la scrittura della nuova versione.
Come devo affrontare uno scenario come questo?
Pur capendo perfettamente come funzioni il refactoring del codice legacy, la mia domanda non riguarda il "refactoring / rewrite?" ma per dare una risposta realistica a "quanto tempo ci vorrebbe per refactoring / riscrivere la parte X?"