Código legacy (código heredado)
El código legacy es código que sigue aportando valor en producción pero es difícil o riesgoso de cambiar, por falta de pruebas, tecnología desactualizada o conocimiento perdido.
La palabra legacy describe una relación entre un equipo y su código. El código funciona, el negocio depende de él, y quienes lo mantienen tienen miedo de tocarlo. Michael Feathers, en su libro sobre el tema, define el código legacy simplemente como código sin pruebas. Sin pruebas, nadie puede saber si un cambio rompió algo.
Señales típicas:
- El framework o las herramientas de build ya no reciben actualizaciones.
- Los autores originales se fueron y la documentación es escasa.
- Los cambios pequeños tardan mucho y causan regresiones inesperadas.
- Las personas nuevas necesitan meses antes de poder trabajar en él.
Ejemplo
Un back-office de facturación escrito en AngularJS procesa todas las facturas que emite la empresa. No tiene pruebas unitarias, su build solo corre en una versión antigua de Node, y dos personas entienden la pantalla de cálculo de impuestos. La aplicación funciona todos los días. Cambiarla es caro, y ese costo crece cada año.
Confusión frecuente
Legacy se usa mucho como sinónimo de viejo o mal escrito. La edad es una señal débil. Una aplicación de dos años sin pruebas y sin dueño es legacy. Una aplicación de diez años con buenas pruebas y un stack con soporte puede estar perfectamente sana.
La etiqueta también suele ocultar el valor del código. Ahí están codificados años de reglas de negocio y casos borde, y cualquier reemplazo tiene que reproducirlos. Por eso el primer paso de una migración suele ser agregar pruebas y monitoreo alrededor del comportamiento actual, antes de cambiar nada. La guía de opciones ante el fin de soporte de AngularJS lista lo que un equipo puede hacer con una aplicación en este estado.
Por qué importa. Una migración empieza por entender qué hace el código legacy y proteger ese comportamiento con pruebas. Qué tan riesgoso es cambiarlo define qué tan pequeño debe ser cada paso.
Términos relacionados
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn