Es viernes, el cambio debería estar funcionando el lunes por la mañana y este finde semana sale la nueva temporada de esa serie que tenías tantas ganas. Tu cabeza piensa en lo buena que fue la primera temporada y que no quieres quedarte el sábado programando para acabar aquello que te prometiste acabar pero que al final resultó un lío. Y al final subiste algo sin probar porque “dudo que falle esto que es muy sencillo” y la liaste, el código no funcionó, tú estabas en casa y te llama el jefe en mitad del sábado, no de muy buen humor.
Algo parecido tuvo que suceder al programador que trabajó en el cohete Ariane 5, que el 4 de junio de 1996 despegaba para su primera prueba y, tras 37 segundos, viró en el aire bruscamente estallando por los aires debido a una repentina fricción.
El accidente costó aproximadamente 370 millones de dólares, minó la opinión pública, destruyó toda la carga del cohete y atrasó otros 4 años la carrera espacial europea mientras construían el Ariane 6.
¿Qué ocurrió? Se creó un equipo de investigación sólo para descubrir lo que había pasado, investigaron los restos, buscaron detalles en los tanques de combustible y analizaron cada gota de combustible y al final encontraron el culpable.
Una sola línea de código causó un problema en el cálculo en el sistema de trayectoria haciendo pensar al programa que estaba mucho más alto de lo que estaba. Una sola línea de código escrita deprisa y corriendo. Una sola línea de código no probada lo suficiente. Una sola línea de código que contenía un error muy básico de programación.
El error de código consistía en asignar una variable de 64 bits a una de 16 bits. Es un error de programación muy común que causó un desbarate enorme en el sistema.
16-bit integer a = 64-bit float BH
Un ingeniero que trabajó en el caso dijo lo siguiente: “La línea de código era una bomba haciendo tic tac. El talón de Aquiles”. Esta asignación funciona siempre que la variable BH esté por debajo del valor de 62k. En los segundos iniciales del lanzamiento, la aceleración del cohete fue baja, por lo que la operación de asignación funcionó a la perfección.”
No obstante, en cuanto el cohete superó una altura que no entraba en una variable de 16 bits causó un error de compilación y todo el sistema dejó de funcionar. El error fue tan simple como que se probó el código simulando lanzamientos “de baja altura” en vez de un escenario real. El director de desarrollo del MIT hablando sobre este problema dijo que “una cantidad colosal de tiempo se invierte en hacer que el código funcione en vez de pensar y anticiparse a los escenarios de la vida real”.
Si el código se hubiese probado un poco más o se hubiese pensado qué pasaría cuando la prueba real ocurriese se hubiese evitado la catástrofe. Como programadores a veces tenemos mucha presión encima. Pero jamás debemos permitir que esto nos supere. Siempre hay que pensar las cosas a fondo y probar el código en todos los escenarios posibles, los actuales y los futuros.