Recientemente comencé a trabajar en un proyecto donde una aplicación monolítica muy antigua se está migrando a una arquitectura basada en microservicios.
La base de código heredada es muy desordenada ('código de espagueti') y, a menudo, una función aparentemente simple (p. Ej., Denominada "multiplyValueByTen") luego se revela como "miles de líneas de código de validación que involucran 10 tablas en 3 esquemas diferentes".
Ahora mi jefe (correctamente) me pide que calcule cuánto tiempo tomaría escribir la característica X en la nueva arquitectura. Pero tengo dificultades para llegar a una estimación realista; a menudo subestimo enormemente la tarea debido a las razones que he mencionado anteriormente y me avergüenzo porque no puedo terminar a tiempo.
Lo sensato puede parecer que realmente se mete en el código, anota cada rama y llamadas a otras funciones y luego estima el costo del tiempo. Pero realmente hay una diferencia minúscula entre documentar el código antiguo y escribir la nueva versión.
¿Cómo debería abordar un escenario como este?
Si bien entiendo perfectamente cómo funciona la refactorización de código heredado, mi pregunta no es sobre "¿cómo refactorizar / reescribir?" pero sobre dar una respuesta realista a "¿cuánto tiempo llevaría refactorizar / reescribir la parte X?"