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.
Este sitio web utiliza cookies propias y de terceros para el correcto funcionamiento, análisis de la navegación y visualización por parte del usuario. Si continúa navegando, entenderemos que acepta su uso.
Se recomienda al usuario que lea atentamente esta Política de Cookies para informarse sobre el uso responsable que la página web hace de ellas y sobre las opciones que el usuario tiene para configurar su navegador y gestionarlas. Leer política de cookies
Cookies necesarias
Las cookies necesarias son absolutamente esenciales para que el sitio web funcione correctamente. Esta categoría solo incluye cookies que garantizan funcionalidades básicas y características de seguridad del sitio web. Estas cookies no almacenan ninguna información personal.
Las cookies necesarias que se utilizan en esta web son:
_PHPSESSID: Esta Cookie es usada por el lenguaje de encriptado PHP para permitir que las variables de sesión sean guardadas en el servidor web. Esta cookie es esencial para el funcionamiento del sitio web.
cmoove_gdpr_popup: Cookie técnica y necesaria que contiene el valor de si se ha aceptado la política de cookies.
mfn-builder: Esta cookie técnica y necesaria es usada por el tema de la web para cargar los contenidos de manera estructurada.
Cookies no necesarias
Cualquier cookie que no sea particularmente necesaria para que el sitio web funcione y se use específicamente para recopilar datos personales del usuario a través de análisis, anuncios y otros contenidos integrados se denominan cookies no necesarias. Es obligatorio obtener el consentimiento del usuario antes de ejecutar estas cookies en su sitio web.
Las cookies no necesarias que se utilizan en esta web son:
_ga: registra una identificación única que se utiliza para generar datos estadísticos acerca de cómo utiliza el usuario el sitio web.
_gat: es utilizada por Google Analytics para controlar la tasa de peticiones.
_gid: registra una identificación única que se utiliza para generar datos estadísticos acerca de cómo utiliza el usuario el sitio web.
¡Por favor, activa primero las cookies estrictamente necesarias para que podamos guardar tus preferencias!