Hace unas semanas conté aquí que la IA, cuando le pides algo dejando huecos de especificación, no se para a preguntar: los rellena con lo que estadísticamente le parece más normal. La pregunta que me llegó mil veces fue la lógica: vale, ¿y entonces escribo mejor las peticiones y listo? La respuesta es claramente sí, pero si nosotros como humanos dejamos huecos no es porque queramos poner a prueba a la IA, sino porque es muy difícil traer a cada petición de cambio todo el contexto necesario para que la IA haga su trabajo de forma eficiente. Cualquiera que diga que especificar mejor es la solución tendría que explicar cómo se plantea hacerlo: no es nada sencillo.
Escribir bien una petición significa darle al modelo todas las reglas: las de seguridad, los invariantes de negocio, las convenciones del proyecto, el rendimiento. Hacerlo una vez es posible, aunque arduo. Hacerlo en cada cambio, por personas distintas, sobre un sistema con quince años encima donde la mitad de esas reglas no están escritas en ningún sitio… eso no escala. Y hay otra película que lo explica mejor que yo.
En Memento, el protagonista no puede formar recuerdos nuevos. Cada vez que duerme lo olvida todo y despierta en blanco. Para sobrevivir se monta un sistema de persistencia: notas, fotos con anotaciones al margen y, lo que no puede permitirse perder, tatuado directamente en el cuerpo. Su vida entera funciona a base de pistas que se deja a un yo futuro que no recordará haberlas escrito.
Y funciona a medias. Leonard tiene el qué, “este tipo es peligroso”, “no te fíes de fulano”, pero ha perdido el porqué: el contexto que generó cada nota, lo que de verdad pasó, qué quería decirse a sí mismo. Como solo le quedan los datos sueltos sin la historia detrás, es fácil de dirigir. Quien conoce su sistema le deja la nota adecuada, y Leonard, de buena fe, hace exactamente lo que la nota dice. Rellena los huecos de su pasado con lo que tiene a mano y reconstruye una versión que parece coherente, aunque no tenga por qué ser la real.
Esta película, oscura y de culto para los de mi generación, es perfecta para ilustrar la situación del desarrollo de código con IA.
Un sistema heredado es exactamente esto. El código son los tatuajes de Leonard: te dicen qué hace el sistema, nunca por qué se hizo así. Ese if que valida dos veces es un tatuaje sin contexto. La regla rara que protege un caso límite es una nota cuya historia se fue de la empresa con quien la escribió. Y cada regla se afirma como una verdad al mismo nivel que las demás, sin jerarquía explícita en ningún sitio, aunque en la práctica unas pesen más que otras.
Y cuando pones a una IA a trabajar sobre ese código, tienes a Leonard cada mañana: alguien competente y rápido que se despierta sin memoria y reconstruye a ciegas a partir de las pistas que encuentra. Si las pistas están incompletas o sin contexto, y en legacy casi siempre lo están, rellena los huecos con lo más plausible. El resultado parece coherente. Compila, pasa el linter. Hasta que en producción hace algo que nadie pidió, igual que Leonard acaba donde nadie lo mandó.
Lo inquietante de la película no es que Leonard olvide, él ya sabe que lo hace y se prepara para ello de la mejor manera posible. Es que tiene un sistema y aun así falla, porque sus notas están incompletas, descontextualizadas y, a veces, son sencillamente falsas. La moraleja no va de tener memoria; va de algo más complicado: tener algo escrito no basta. Si lo que conservas son datos sueltos sin el porqué, no es que olvides. Es que cualquiera, o cualquier prompt, puede llevarte a donde quiera.
Aquí es donde la analogía deja de dar miedo, porque a diferencia de Leonard, esto no es una condena. El problema nunca fue la falta de memoria del modelo. Fue que el contexto correcto —las reglas, las decisiones, el porqué— no vivía en ningún sitio del que se pudiera recuperar. Estaba en tatuajes incompletos o en la cabeza del que se fue.
Y ahí está la diferencia. Un Leonard con notas buenas —completas, fiables, con su porqué— deja de ser un hombre condenado a empezar de cero cada mañana. Pasa a ser alguien que arranca el día exactamente donde lo necesita. La pregunta, entonces, no es si el modelo recuerda. Es si tu sistema es capaz de ponerle delante el contexto correcto justo cuando va a tocar algo, y si tienes los mecanismos para que ese contexto evolucione con cada cambio.
Cómo se construye eso es la parte interesante —y es en lo que llevamos un año—, pero da para una conversación entera que tendremos otro día. El primer paso, en todo caso, no es técnico: es dejar de dar por hecho que tu código se explica solo. No lo hace. Te dice lo que hace y se calla el porqué, igual que Leonard.
Algo sabemos de eso.