Cultura

Indiana Jones cumple años: arqueología de código heredado

Mi héroe de pequeño ganaba porque sabía cosas. Jugué La última cruzada en EGA y Maniac Mansion en CGA con pantalla verde, resolviendo puzles sin internet, y de ahí salió mi método de depuración. Indy es un arqueólogo de sistemas heredados: respeta las trampas, su padre documentaba todo y eligió la copa de barro.

Hoy, 1 de julio, cumple años Henry Walton Jones Jr. Nació en 1899 en Princeton, Nueva Jersey, hijo del profesor Henry Jones y de Anna. La fecha no sale de las películas: la fijó Las aventuras del joven Indiana Jones, la serie de los noventa, que es donde se puso por escrito la cronología del personaje.

Indiana Jones fue mi héroe de pequeño. No un héroe cualquiera: el héroe correcto. Porque no volaba, no tenía superpoderes y no era especialmente fuerte. Era un señor con estudios, un problema y muy pocas ganas de morirse. Ganaba porque sabía cosas.

Y luego, además, jugué las aventuras gráficas.

Empecé con Indiana Jones y la última cruzada en EGA, dieciséis colores, y antes de eso había estado con Maniac Mansion en CGA, pantalla verde —de aquello escribí en su aniversario—. Me pasé una parte de la infancia intentando resolver esos puzles sin internet. Sin guías, sin foros, sin vídeos en los que buscar la solución.

Eso último merece una sección propia, porque me marcó más que la película.

Resolver puzles sin internet

Hoy te atascas noventa segundos y ya hay alguien explicándotelo en vídeo. Entonces te atascabas semanas.

Y no había alternativa: solo podías pensar. Volver a la habitación anterior. Probar el objeto raro con la otra cosa rara. Apuntar en un cuaderno qué habías intentado ya. Preguntarle a un compañero de clase que tampoco sabía, pero que había probado cosas distintas.

Lo que aprendí ahí no fue paciencia. Fue método:

  • Que un problema que no cede se ataca cambiando lo que observas, no repitiendo lo mismo con más fuerza.
  • Que conviene anotar lo descartado, porque a la tercera sesión ya no te acuerdas de qué habías probado.
  • Que cuando estás totalmente bloqueado, lo más productivo es irte a otra parte del problema y volver luego con la cabeza fría.
  • Y que a veces la solución no está en la habitación en la que buscas, sino en algo que viste hace dos horas y no registraste.

Es, literalmente, cómo depuro hoy. Todo mi método de diagnóstico viene de aquellas tardes con la pantalla verde. No lo aprendí en la carrera ni en ningún curso: lo aprendí porque no había YouTube.

No estoy diciendo que aquello fuera mejor. Yo también busco la respuesta en dos minutos cuando tengo un cliente esperando, y hago bien. Pero sé lo que me estoy ahorrando, y sé que lo que te ahorras también te lo pierdes. El rato incómodo era el rato en el que estaba aprendiendo.

Si tienes gente joven en el equipo: dales problemas donde atascarse un poco. No mucho. Un poco.

Indiana Jones es arqueólogo de código heredado

Ahora el paralelismo que llevo años queriendo escribir.

Piensa en qué consiste el trabajo de Indy, quitando látigo y sombrero:

  • Entra en sistemas construidos hace siglos por gente que ya no está para preguntarle nada.
  • Sin documentación, o con documentación parcial y en un idioma muerto.
  • Con trampas puestas a propósito por los constructores originales.
  • Y con el encargo de extraer algo valioso sin que se derrumbe todo.

Eso es una migración de un sistema heredado. Con más serpientes, pero es eso.

Y el detalle que lo hace perfecto: Indy no desactiva las trampas. Las respeta. Cuando ve un mecanismo que no entiende, no lo fuerza. Observa, prueba con poco peso, mete el ídolo y saca la bolsa de arena. A veces se equivoca —normalmente porque tenía prisa o porque alguien le presionaba— y entonces echa a correr delante de una bola de piedra.

La bola de piedra es, y esto es lo bonito, la consecuencia de su propia extracción. Nadie le persigue. El sistema simplemente está haciendo lo que se diseñó para hacer cuando alguien coge la pieza.

Cada vez que un equipo toca un sistema antiguo «porque total, esto ya no lo usa nadie» y a la semana explota facturación, yo veo la bola.

El diario del padre

En La última cruzada el objeto crítico no es el Grial: es el diario de Henry Jones padre. Un cuaderno con treinta años de anotaciones, dibujos, referencias cruzadas y avisos.

Toda la película depende de ese cuaderno. Los nazis lo quieren más que a Indy. Y hay una escena entera dedicada a que su padre lo había enviado por correo para ponerlo a salvo, que es una copia de seguridad fuera de sitio hecha en 1938.

Henry padre es el compañero pesado que documenta todo. El que en cada reunión dice «esto ya lo intentamos en 2019 y falló por esto». El que tiene una carpeta con las decisiones y sus motivos.

Y como en la película, en la empresa ese señor cae mal hasta el día exacto en que salva el proyecto. Entonces todo el mundo descubre que era imprescindible.

La lección concreta, y me da igual repetirme: lo valioso no es documentar cómo funciona algo. Eso se deduce leyendo el código. Lo valioso es documentar por qué se decidió así y qué se descartó, porque eso no se deduce de nada y se pierde en cuanto la persona se va. Un registro de decisiones de cinco líneas por decisión vale más que doscientas páginas de manual.

«Elige sabiamente»

El final de La última cruzada es la mejor clase de ingeniería que he visto en una película.

Hay decenas de copas. El malo tiene que elegir la del Grial. Y escoge la más espectacular: oro macizo, joyas, evidentemente la de un rey. Bebe y muere.

Indy mira, piensa qué clase de persona fue el propietario y elige una copa de barro sin decorar. La de un carpintero.

Llevo esta escena a todas las conversaciones de arquitectura, porque el sesgo que retrata es universal: confundir la apariencia de solvencia con la solvencia.

Lo he visto tantas veces que ya lo reconozco por el olor:

  • La empresa de cuatro personas montando la infraestructura para millones de usuarios que no tiene, porque «así escala».
  • La arquitectura de microservicios para un catálogo que cabría en una hoja de cálculo.
  • La reescritura completa en el marco de moda para no arreglar tres consultas lentas.
  • El panel con quince gráficas que nadie mira, en lugar de una alerta que avise.

La copa de oro parece la respuesta porque es la respuesta a un problema más grande y más glamuroso que el tuyo. Y elegirla no es gratis: pagas complejidad todos los días, mientras tu problema real seguía siendo de barro.

La pregunta de Indy es la correcta y sirve para cualquier decisión técnica: ¿qué clase de sistema es este realmente? No qué te gustaría que fuera.

La letra equivocada

Y el detalle que me hizo levantarme del sofá cuando entendí de qué iba, ya de mayor y ya programando.

En una de las pruebas hay que atravesar un suelo con letras y pisar solo las que forman el nombre de Dios. Indy empieza a caminar, pisa la J, y el suelo se hunde. Porque en latín, se dice en la película, ese nombre empieza por I.

Eso es un error de transliteración. Un fallo de codificación de caracteres. En 1938 y con consecuencias mortales, pero es exactamente el bug que llevo veinte años viendo:

  • El nombre con tilde que llega al PDF convertido en un rombo con un signo de interrogación.
  • La eñe que se convierte en dos símbolos raros porque en algún punto de la cadena alguien supuso que todo era Latin-1.
  • El apellido con apóstrofo que rompe el buscador.
  • La comparación de cadenas que falla porque un lado normaliza los acentos y el otro no.
  • El emoji que trunca un campo entero porque ocupa cuatro bytes y la columna contaba caracteres. De eso hablé el Día del Emoji.

Y el mecanismo es el mismo que en la película: el sistema esperaba una representación y tú le diste otra igual de válida. La J y la I eran la misma letra en momentos distintos de la historia. Nadie mintió. Simplemente había dos convenciones y solo una estaba escrita en el suelo.

Por eso la respuesta correcta a los problemas de texto no es un str_replace con los cinco casos que has visto. Es decidir una codificación y una forma de normalización, ponerlas en cada extremo de la cadena y no volver a suponer nada. Si dudas: UTF-8 en todo, del navegador a la columna de la base de datos.

Indy, por cierto, se salva porque su padre lo había apuntado en el diario. Otra vez el diario.

«Esto pertenece a un museo»

La frase de Indy es también la mejor defensa de la preservación digital que se ha escrito.

Porque de aquellas aventuras gráficas, la de la última cruzada y todas las demás, hoy se pueden jugar gracias a gente que reimplementó los motores por su cuenta y gratis. Sin ellos, aquello no existiría: no porque se perdiera el código, sino porque desapareció la máquina que lo ejecutaba.

Ya lo dejé escrito hablando de Maniac Mansion y lo repito porque es el punto que menos atención recibe en las empresas: la pregunta no es si tienes el código de la aplicación que encargaste en 2012. Es si podrías levantarla hoy. Con su versión de PHP, su base de datos, su sistema operativo y alguien que sepa arrancarla.

Si la respuesta es no, aquello ya no existe. Tienes el ídolo, pero el templo se cerró.

Feliz cumpleaños, doctor Jones

Ciento veintisiete años del arqueólogo que nos enseñó que el conocimiento es el arma.

Hoy:

  1. Ante un sistema heredado, respeta las trampas. No las fuerces: entiende para qué se pusieron. Alguien las puso por algo.
  2. Escribe el diario. No cómo funciona: por qué se decidió así y qué se descartó.
  3. Y elige la copa de barro. Pregúntate qué clase de sistema es el tuyo de verdad, no el que te gustaría contar en una conferencia.

Y si te atascas, no busques la solución en el primer minuto. Da una vuelta a la habitación. Sin internet se aprendía más despacio y se olvidaba mucho menos.

(Las serpientes las entiendo perfectamente. Todos tenemos nuestra tecnología con la que no queremos estar en la misma sala. La mía cambia según el trimestre.)

Preguntas frecuentes

¿Cuándo nació Indiana Jones?

El 1 de julio de 1899 en Princeton, Nueva Jersey, hijo del profesor de literatura medieval Henry Jones y de Anna Jones. Es un dato de ficción: la cronología del personaje quedó fijada en la serie de televisión Las aventuras del joven Indiana Jones, emitida a partir de 1992, y no en las películas.

¿Qué debe contener un registro de decisiones técnicas?

El motivo de la decisión, las alternativas que se valoraron y la razón por la que se descartaron, además del contexto y las restricciones vigentes en ese momento. El funcionamiento del sistema se deduce leyendo el código, pero la intención y las opciones rechazadas se pierden cuando las personas implicadas abandonan el proyecto. Cinco líneas por decisión resultan más útiles que un manual extenso.

¿Cómo se aborda una intervención sobre un sistema heredado?

Comprendiendo antes de modificar: identificar qué hace cada parte, por qué existen los mecanismos que parecen innecesarios y qué dependencias tiene con el resto. Los comportamientos aparentemente absurdos suelen responder a un requisito real que ya nadie recuerda, de modo que eliminarlos sin analizarlos provoca incidencias en áreas no relacionadas aparentemente con el cambio.

¿Cómo se evitan los errores de codificación de caracteres?

Fijando una única codificación, preferentemente UTF-8, en todos los extremos de la cadena: navegador, aplicación, conexión y columnas de la base de datos, y aplicando además una forma de normalización coherente al comparar cadenas. Las correcciones puntuales mediante sustitución de caracteres concretos solo resuelven los casos ya observados y dejan pasar el resto.

¿Qué significa preservar software y por qué importa a una empresa?

Significa conservar la capacidad de ejecutar un programa, no solo su código fuente. Requiere disponer también del entorno —versiones de lenguaje, base de datos y sistema operativo— y del conocimiento necesario para levantarlo. Una organización que conserva el repositorio de una aplicación de hace más de una década pero no puede ponerla en marcha ha perdido en la práctica ese activo.

Otras noticias

Cultura

La camisa hawaiana te regaló el viernes informal

La camisa aloha nació de sastres japoneses usando telas de kimono en Hawái, y en los sesenta la industria textil se inventó el Aloha Friday para vender más. De ahí salió el casual Friday y, en línea recta, tu sudadera. Y ya que estamos: el tono en los equipos técnicos.

Leer más →
Cultura

Los anillos de Sonic son un botón de deshacer

Sonic cumple años y con él la única guerra de patio que importaba. «Genesis does what Nintendon't» sigue siendo una lección de posicionamiento, los anillos son la mejor decisión de diseño de los noventa, y la velocidad era el anuncio, no el juego.

Leer más →

¿Te ha resultado útil o quieres comentar algo?

Hablemos →