Bill gates windows blue screen of death

A fines de los 1990 y principios de los 2000, este chiste/meme circulaba por internet:

Bill Gates, director de Microsoft, dijo que si la industria de los automóviles estuviera al par y ritmo de la de la informática, tendríamos coches que costarían $ 50 dólares y tendrían una autonomía de combustible de 1,000 km por litro de gasolina.

El director de General Motors le respondió, tiempo después: Si GM hubiera sido como Microsoft, su auto tendría dos accidentes cada día, sin que usted pudiera explicarse la causa; cada vez que las líneas de las rutas volvieran a pintarse, tendría que comprar otro coche que fuera compatible con el nuevo trazado; ocasionalmente, su auto se pararía en medio de una autopista sin ninguna razón y usted debería aceptar el hecho con resignación, volver a arrancar y seguir manejando esperando que la situación no se repita.

En aquel entonces, el sistema operativo Windows era usado por casi todas las computadoras personales y de negocios. Era tanta la necesidad de usar el software, que todos perdonaban, aunque a regañadientes, los fallos constantes, lo cual se ilustra en la broma.

Más de 20 años después, me asombra lo poco que han cambiado las cosas con respecto al software: sigue siendo ampliamente utilizado, sigue fallando constantemente y seguimos perdonando sus fallos.

¿Quiénes son responsables? Los desarrolladores de software, sin duda. Parece que la calidad es un tabú en el gremio o algo que se puede postergar e incluir después; basta ver la lista de actualizaciones de apps en tu teléfono móvil para darnos cuenta que, en su mayoría, se trata de “soluciones de errores (bug fixes)”.

Lista de actualizaciones de apps iOS con bug fixes

Un alto porcentaje de las actualizaciones de software son correcciones de errores; cosas que no deberían estar mal desde el principio.

Esto tiene varias causas; las que yo veo, como principales, son: que los desarrolladores creen que todo se soluciona con tecnología solamente y que la mayoría hacen a un lado la Ingeniería (se llama Ingeniería de Software, ¿recuerdan?).

¿Por qué ocurre así, qué es lo que ocasiona y qué podemos hacer? Vamos a explorar un poco.

El código representa solamente el 30 a 35% de toda la solución

Sí, leíste bien. Solamente un tercio de todo lo que involucra un producto de software es el código. Sin embargo, este elemento sigue colocándose en una posición central. Cada año, se anuncian varias herramientas y frameworks nuevos para escribir el código de las aplicaciones, los medios se desbordan en mensajes como “aprende a programar”, “aprende a usar x o y herramienta de programación e impulsa tu carrera”. Código, código, código. Los desarrolladores sienten picazón en los dedos y saltan a escribir el código antes de hacer el 70% del trabajo restante. Código, código, código.

Quizás me dirás: “Pero, Edgar, el software es el código. Es evidente que es lo más importante y lo que hay que dominar”.Esta vez, no tienes razón, pues es el equivalente a decir que hacer un automóvil solo consiste en ensamblar piezas de metal, plástico y otros polímeros, y que nunca se hizo un trabajo de diseño y validación ingenieril detrás.

Pretender que el software, el buen software, solamente requiere escribir código es como decir que si le damos una máquina de escribir a un mono, y una cantidad infinita de tiempo, será capaz de escribir las obras de Shakespeare.

Los simpson y los monos infinitos con máquinas de escribir

Hagamos que la Ingeniería sea Sexy otra vez

La mayoría de Ingenieros de Software hacen poca ingeniería:

  • No usan modelos (de ningún tipo) para analizar problemas.
  • Pocas actividades rutinarias son automatizadas.
  • Seleccionan las herramientas ANTES de entender el problema, y luego fuerzan la solución en circunstancias donde no funciona bien.
  • Pocos saben cómo probar bien las soluciones (ingresar datos al azar a la app con el teclado “a ver qué pasa” no es probar).
  • Pocos documentan las decisiones que tomaron y el razonamiento detrás de ellas.
  • Muy pocos crean manuales o diagramas técnicos que otros puedan seguir.

Como dije anteriormente, se enfocan en el código, pero el que producen es de mala calidad porque es el reflejo de la nula Ingeniería que lo sostiene.

Te lo cuento porque yo fui así en el pasado. Cuando entregábamos software, el cual fallaba todas las veces, siempre pedíamos “más capacitación en las herramientas”; pero aunque aprendíamos más del framework, nunca pudimos crear algo sin errores. Sin la Ingeniería todo se va a caer.

Me aterra aún más el saber que, en muchas Universidades de mi país y el mundo, las ofertas de Informática y Computación están suprimiendo varias asignaturas importantes: Matemáticas, Estadística, Probabilidad y temas de Negocios, para enfocarse en el dominio de herramientas. El software tiene que ver más con la Matemática que con las Herramientas, así que no es opcional el entenderlas bien.

Es por eso que hago un llamado a todos los que están involucrados, de alguna manera, en el desarrollo de software: Hagamos que la ingeniería sea sexy otra vez. Hagamos que todo el software sea hecho con bases sólidas de ingeniería.

El cómo te lo compartiré en una siguiente entrega.

¡Hasta entonces!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.