Bug: qué es, historia y cómo manejarlo

Texto con la leyenda Keep Calm and debug on

Bug o Bugs es un término familiar en la vida de todo programador. Día a día, la existencia de este profesional podría resumirse así: escribir código, intentar ejecutarlo, fracasar.

Así que la mayor parte del trabajo o al menos una parte importante del tiempo de los desarrolladores, consiste en averiguar qué diablos pasó y qué diablos hicieron mal.

El manejo de está dinámica marca el perfil de quienes se dedican al desarrollo de software. De hecho, la tolerancia a la frustración es uno de lo pilares de quienes eligen este camino de vida:

“Aquellos que pueden manejar esa aflicción diaria prosperan. Los que no pueden, huyen”, dice Clive Thompson en su libro Coders.

En esta nota te contaremos qué es un bug en informática, la raíz histórica del término y cuatro de nuestros informáticos compartirán su experiencia y darán consejos para sobrevivir a los bugs.

Qué es un Bug

La palabra bug (insecto) puede hacerte pensar en un proceso orgánico, en algo que simplemente le sucede a la máquina como si fuera un accidente de la naturaleza. Pero la realidad está lejos de esa perspectiva.

¿Qué es exactamente un bug? La traducción literal de la palabra es insecto o bicho. En informática y sistemas, un bug es un error en el código, algo mal escrito o mal creado, que arruina el flujo de un programa.

A menudo son detalles increíblemente pequeños y delicados que pueden provocar catástrofes.

Historia del concepto Bug

Uno de los primeros usos del término fue en 1876, cuando Thomas Edison se quejó del mal funcionamiento del equipo telegráfico que estaba desarrollando.

«Todavía hay una gran cantidad de bugs», escribió en su cuaderno más tarde mientras trabajaba bajo luces incandescentes llena de bugs (bichos).

La frase entró en la tradición de la programación después de 1947, cuando los ingenieros de Harvard descubrieron que su Mark II estaba estropeada porque una polilla había volado dentro de la enorme máquina evitando su correcto cierre.

Ellos documentaron el error en el libro de registro, pegando el bicho real escribiendo: «primer caso real de bug encontrado”.

Edison un poco fastidiado de debuggear.

Tipos de bugs

Los errores rara vez tienen que ver con bichos, insectos reales o accidentes fortuitos. Siempre son culpa de los propios programadores.

Las máquinas hacen exactamente lo que le dices y, cuando las instrucciones de un programador son equivocadas, la máquina cometerá el error.

Al escribir código hay muchas formas de equivocarse. Un simple error tipográfico, instrucciones de algoritmo poco claras, tal vez escribiste la variable NumeroBicho_ como numeroBichi_ y una sola letra (mayúscula) arruinó todo…

Tal vez la librería que incluiste en tu código venía malograda y, al incorporarla en tu software, el defecto oculto quedó en evidencia…

Son incontables las posibilidades de Bugs, especialmente a medida que el código crece cada vez más y tiene fragmentos escritos remotamente por decenas de personas diferentes.

En situaciones como estas, los bugs pueden multiplicarse como en las plagas bíblicas.

 “A nadie le gusta tener bichos en sus cosas, ¿no?», parte señalando José Estévez, jefe de proyectos en Fusiona.

Este ingeniero informático nos ayuda a identificar dos tipos de bugs:

“Errores de compilación: Es la primera brecha detectable de bugs, son básicamente errores producto de malas configuraciones ( falta de librerías, errores de sintaxis). En mi opinión son los bugs más bonitos porque son detectados por ti…

Errores lógicos:  La peor clase de bugs, pero los más comunes. Son producidos por reglas que no se consideraron que causan un mal comportamiento sobre lo esperado. Requieren mayor análisis para su reproducción y a veces su solución”, dice José.

Debug y Debuggear

Detectar y arreglar errores es fundamental en la vida de un programador. Sentados al teclado, lo que hacen realmente la mayor parte del tiempo es encontrar bugs.

A veces en el código escrito hace 4 años por un ex compañero que se fue de la empresa rumbo a China sin dejar documentación ni comentarios.

Ahí entra el concepto Debug y su conjugación debuggear, anglicismo cuya correcta traducción sería depurar, que según la RAE es: limpiar, purificar, rehabilitar…

Al depurar, a veces los programadores parecen Sherlock Holmes examinando pistas esparcidas por una escena del crimen.

Consejos para manejar un bug informático

Aunque antes marca una división señalando que este tema de los bugs es más propio de desarrollo de software, Jesús Henao, ingeniero de soporte en Fusiona, da el siguiente consejo para lidiar con bichos:

“Mantener actualizado tanto sistema operativo como aplicativo a utilizar. Es muy importante recalcar que por más pruebas que se le hagan a un sistema o aplicativo, siempre existe la posibilidad que se genere un error de software (bug)… Si bien puede ser un error que no ocasione ninguna complicación, dependiendo de su magnitud, puede ser un gran dolor de cabeza”.

José Estevéz sugiere: “Lo mejor para lidiar con bugs es hacer lo posible para que no ocurran , pero como no somos dioses, siempre estarán…

Recomendaría siempre hacer lo siguiente al materializar una idea: diagramarla, dibujarla, conversar… Mientras más depures la idea antes de materializarla, mejor. Es más fácil corregir algo en papel que después de codificarlo…

En cuanto a cómo lidiar con ellos, es igual que con cualquier bicho: identificarlo, buscarlo y aniquilarlo ( aquí ayuda tenerlo diagramado)”.

Luis Monroy, ingeniero informático especialista en desarrollo móvil, dice: “Lo principal para poder empezar a resolverlo es poder replicarlo, sin eso se hace muy difícil poder corregirlo…

Parece obvio, pero a veces es bastante complicado poder reproducir el error cuando se trata de problemas aleatorios y dependen del entorno o de variables externas.

Luego de replicar el error toca entrar a picar “o entrar en modo debug” de ese trozo de código para ver su comportamiento.

Finalmente realizar la o las correcciones pertinentes y probar la corrección y verificar que no se haya dañado nada más…

El programador Víctor Morales complementa las recomendaciones con el siguiente consejo clave:

“Estar tranquilo si no se encuentra el bug y buscarlo por partes”.

Del fail a ser Sherlock

En 1949, el informático Maurice Wilkes dijo: «una buena parte del resto de mi vida la iba a dedicar a encontrar errores en mis propios programas». Décadas después, todos los programadores conviven con esa experiencia.   

Como señaló Michael Lopp, vicepresidente de ingeniería de Slack: “Codificar se trata, de una manera profunda, menos de hacer cosas que de arreglarlas”.

Pero no todo es sufrimiento por supuesto. No todo es lidiar con la agonizante precisión del código y la rutina de fallas constantes plagadas de bugs.

Cuando finalmente se descubre y elimina un bug, la sensación es eléctrica, tal vez parecida al momento de capturar una ola luego de cientos de intentos fallidos en el surf.

Como plantea Thompson en su libro Coders, cuando eso pasa eres: “Sherlock Holmes en su momento de triunfo cerebral, rastreando pacientemente la evidencia y descubriendo al asesino, iluminando la escena del crimen usando nada más que el arco de luz de tu mente incandescente”.

Fusiona Avatar

Si quieres saber cómo podemos ayudarte

Contactanos

Artículos Relacionados