Pasa más de lo que parece. El sistema lleva años funcionando, alguien pide un cambio pequeño, y al buscar el código resulta que no está. Ni en la empresa, ni en el repositorio, ni en el correo de nadie. El proveedor cerró, o no contesta, o dice que ya no lo tiene.
Lo primero: comprobar de verdad que no está
Antes de asumir lo peor conviene mirar en sitios donde suele aparecer:
- El propio servidor de producción. Si el sistema está hecho en un lenguaje interpretado —PHP, Python, algunas configuraciones de Java—, el código está ahí, desplegado. No es el repositorio con su historial, pero es el código que corre, que es lo que importa.
- Servidores de pruebas o preproducción olvidados.
- Portátiles de exempleados que siguen en un armario.
- Respaldos antiguos, incluidos los que nadie ha mirado en años.
Solo cuando esto se agota se puede decir que no está.
Si de verdad no está
Aquí la respuesta depende de cómo esté construido:
Lenguaje interpretado
Buenas noticias: el código está en el servidor. Lo que falta es el historial y, a veces, el proceso de compilación de la parte visual. Se puede poner bajo control de versiones desde hoy y seguir trabajando. Se pierde el pasado, no el futuro.
Compilado, sin ofuscar
Java o .NET compilados se pueden descompilar con resultados razonables: se recupera la estructura y la lógica, se pierden los nombres de variables y los comentarios. El resultado no es agradable, pero es mantenible.
Compilado y ofuscado, o nativo
El caso duro. Aquí no hay recuperación práctica del código. Lo que sí se puede hacer es recuperar el comportamiento: documentar exhaustivamente qué hace el sistema —entradas, salidas, reglas de cálculo— usándolo, mirando su base de datos y hablando con quien lo opera.
Eso convierte un problema imposible en uno caro pero acotado: reconstruir desde una especificación observada, en vez de adivinar.
Lo que sí se conserva siempre
Aunque el código se haya perdido del todo, los datos están. Y en la base de datos hay más de lo que parece: el esquema muestra cómo se modela el negocio, y los datos muestran qué reglas se aplicaron de verdad.
Un histórico bien leído responde preguntas que el código no responde: qué casos ocurren en la práctica, con qué frecuencia y desde cuándo.
Cómo no volver a estar aquí
- El repositorio, en una cuenta de la empresa. Nunca del proveedor.
- Una comprobación anual: que alguien de dentro levante el sistema desde el código guardado. Si no lo consigue, el código guardado no sirve.
- Que el contrato diga explícitamente que el código fuente es de la empresa, y en qué plazo se entrega al terminar.
La lista completa de lo que hay que exigir está en qué pedir cuando un proveedor entrega el sistema.