Bichos en todas partes

Los errores de software, comúnmente conocidos como “bugs” (bicho, en inglés), son una de las principales causas de insomnio y pérdida de cabello entre programadores de todos los niveles. En muchos casos son difíciles de detectar y logran escapar a todos los mecanismos de chequeo establecidos, llegando a manifestarse en los dispositivos de los clientes, muchas veces con resultados desastrosos.

Bugs en todas partes
Bugs en todas partes

Generalmente se asocia el uso del término “bug”, relacionado con un problema en un aparato o sistema, a la polilla incauta que quedó frita en un relé electromagnético de la computadora Mark II, el 9 de septiembre de 1947. Al detectar la causa del fallo, la física y matemática Grace Murray Hopper pegó al desafortunado y achicharrado bicho en la bitácora con el comentario: ‘Primer caso real de «bug» encontrado’. Aunque a partir de aquí el término comienza a formar parte de las ciencias de la computación, sus orígenes son más antiguos.

Primer bug
Primer bug

El término original no proviene de los pioneros de la informática, sino de ingenieros de una generación anterior. El primer ejemplo citado en el Oxford English Dictionary histórico de 20 volúmenes es de la Pall Mall Gazette del 11 de marzo de 1889: “El señor Edison, según me informaron, había estado despierto las dos noches anteriores descubriendo «un error» en su fonógrafo, una expresión para resolver una dificultad e implicando que algún insecto imaginario se ha ocultado en su interior y está causando todos los problemas”.

Este “…señor Edison…” se refiere a Thomas Alva Edison, el gran inventor. Probablemente algunos ingenieros y programadores, orgullosos del aparente cambio acelerado de su profesión, entren en shock al darse cuenta de que uno de sus términos preferidos (u odiados) se ha venido utilizando por más de 130 años, pareciera que al final no es tan caótico como parece. Podemos trazar nuestro linaje hasta los orígenes del tiempo.

Explicando un fallo a personal no técnico
Explicando un fallo a personal no técnico

Los “bugs” pueden aparecer por múltiples razones y de diferentes formas. Dentro de las metodologías de desarrollo de software se definen procesos para evitar que ocurran o detectarlos a tiempo. Pueden ser tan sencillos como un campo de texto que acepte caracteres no permitidos, lo que es simple de detectar durante las pruebas, o condiciones de carrera (race conditions), que pueden llegar a ser muy difíciles de identificar y requieren conocimientos avanzados para eliminar.

Cuando encuentras un bug en código viejo
Cuando encuentras un bug en código viejo

Los errores de software son costosos y su impacto crece en dependencia de la importancia del sistema que lo sufre. Graves pérdidas de vidas humanas y materiales han sido atribuidas a un software defectuoso, entre los que resalta: el problema del año 2000 (Y2K), Heartbleed, los accidentes del avión Boeing 737 MAX en 2018 y 2019, por solo mencionar algunos ejemplos.

Mucho se ha teorizado, filosofado, pensado… acerca de los “bugs” y cómo evitarlos, pero la única constante parece ser que: más código = más “bugs”. La tendencia apunta a una mayor complejidad de los sistemas, por lo tanto, más “bugs”. Estudios afirman que el ritmo de creación de “bugs”, a partir de nuevas funcionalidades y actualizaciones, es mayor a su detección.

Antoine de Saint-Exupery dijo una vez: “La perfección se logra, no cuando no hay nada más que agregar, sino cuando no queda nada para quitar”. Eliminar líneas de código superfluas es una buena manera de eliminar “bugs”, siempre y cuando no rompan el programa.

Comentarios