Legacy code (código heredado), refactoring y zero legacy

Legacy code (código heredado), refactoring y zero legacy

Abordamos el código heredado (conocido en inglés como legacy code) para entender qué es y porque gusta tan poco a los programadores (especialmente a los CTOs y Tech Leaders). Sin olvidarnos del zero legacy.

Qué es el legacy code o código heredado.

El código heredado o legacy code es todo aquel código fuente que ya no tiene soporte técnico, es decir, código que se va quedando obsoleto porque se implementan nuevas versiones o tecnologías. Por ejemplo, en Visual Basic.

Aunque originalmente solo hacía referencia a código fuente, se aplica también el legacy code a código ejecutable que ya no puede ejecutarse en versiones más modernas. Por ejemplo, no poder actualizar a la versión next.js 14, por qué utilizaste features de Next.js 12, que no son soportadas en Next.js 14. O no poder actualizar Laravel porque no puedes aumentar la versión de PHP porque alguna librería solo funciona en PHP 6. 

Problemas del código heredado.

Podríamos entender el código heredado como un problema minúsculo cuando comienza y que poco a poco va haciéndose más grande hasta ser un problema real, ¿por qué ocurre esto? Por regla general ocurre cuando en los equipos no se hace un mantenimiento adecuado y/o se pasa el código de un compañero a otro hasta que llega un momento en el que el nuevo miembro del equipo que lo recibe no es capaz de leer, ni comprender. Esto implica que no se pueda corregir, pero tampoco actualizar.

También destaca el problema del talento tech preparado para enfrentarse a la herencia y es que se hace cada vez más complicado encontrar programadores que conozcan las tecnologías, lenguajes y librerías de nuestro código fuente. Y en caso de encontrar este talento tech, es motivo de desgaste para el programador.

Soluciones al legacy code

Lo óptimo para solucionar los problemas que acarrea el código heredado sería un nuevo desarrollo. Sin embargo, por tiempo y costes no es la opción óptima, por lo que podemos recurrir al refactoring.

Refactorizar supone cambiar la estructura interna sin tocar el comportamiento externo, es decir, limpiar el código. Estos cambios no arreglan errores, ni añaden nuevas funcionalidades. Se limita a facilitar la mejora del código.

Qué es zero legacy

Hablamos de zero legacy para referirnos al objetivo de conseguir que no haya código heredado, es decir, que sea cero. Precisamente, esta práctica es una de las más defendidas en el sector, como expone Jose Manuel de la Chica, CTO de Santander Universidades y de Universia Holding (Grupo Santander) desde 2019 y Director de Tecnología en IA del Grupo Santander, en la entrevista que más abajo te dejamos al medio MCPro.

Código heredado versus deuda técnica

Puede dar a confusión el código heredado y la deuda técnica, pero existen diferencias entre ambas. Utilizaremos el término deuda técnica para referirnos a la elección de una decisión respecto a otra y lo que ello conlleva. Por lo tanto, hace referencia al trabajo adicional que genera una solución (la fácil) en lugar de una que nos supone más tiempo de desarrollo e implementación.

🎙️ «No tiene sentido una estrategia tecnológica que no encaje al 100% con el CEO» Entrevista José Manuel de la Chica >

⛏️ Introducción a las APIs: Cómo Trabajar con Datos en la Web >

🔄 Cómo utilizar Git para el control de versiones: Un tutorial paso a paso >