Boeing pagó por debajo de nuestro SMI a programadores subcontratados para ahorrar costes... y terminó perdiendo miles de millones

Dos aviones se estrellaron entre 2018 y 2019 por un error de software

Avion
5 comentarios Facebook Twitter Flipboard E-mail

El 29 de octubre de 2018, el vuelo 610 de Lion Air, un Boeing 737 MAX 8, se estrelló en el mar poco después de despegar, causando la muerte de 189 personas. Tan sólo unos meses después, el 10 de marzo de 2019, el vuelo 302 de Ethiopian Airlines, con el mismo modelo de avión, sufrió un accidente similar, matando a otras 157 personas.

Esto no hizo más que confirmar los peores temores: algo fallaba en el mismo diseño de la aeronave. De hecho, a medida que se investigaban las causas, el foco se dirigió hacia un elemento específico del software del avión: el sistema MCAS (siglas en inglés de 'Sistema de Aumento de las Características de Maniobra').

Una de las misiones de este software es la de subir o bajar automáticamente el morro de la aeronave al detectar un peligro inminente, pero en estos casos, lo hizo de forma errónea, contribuyendo a los desastres.

Tras el segundo accidente, el Boeing 737 MAX fue inmovilizado a nivel mundial (cuando el modelo representaba una tercera parte de las ventas proyectadas de Boeing para los siguientes cinco años), y la empresa terminó perdiendo más de 6.000 millones de dólares en valor de mercado en cuestión de días.

A largo plazo, sin embargo, el impacto fue aún mayor: las aerolíneas comenzaron a cancelar órdenes de compra del 737 MAX, generando a Boeing unas pérdidas de hasta 30.000 millones de dólares (las ventas de dicho modelo no se recuperaron hasta 2022), y a eso se sumó una multa de 2.500 millones de dólares por mentir a las autoridades sobre lo ocurrido.

El software de sistemas críticos como el MCAS debe cumplir con los más altos estándares de calidad, ya que incluso pequeños errores pueden tener consecuencias fatales


El fondo del problema

Para agravar la situación, se descubrió que Boeing había decidido reducir costos y acelerar la producción del 737 MAX: la compañía estaba bajo una gran presión debido al lanzamiento del A320neo de Airbus, un avión más eficiente que el suyo en consumo de combustible.

De modo que una de las formas en que se aplicó dicha reducción fue mediante la subcontratación de ingenieros de software mal pagados y menos experimentados, de empresas como la india HCL Technologies. Algunos ingenieros contratados ganaban tan sólo 9 dólares por hora (por debajo del actual salario mínimo interprofesional español), en contraste con los ingenieros sénior que habrían costado significativamente más.

En general, priorizaron las 'soluciones' rápidas y económicas, lo que afectó la calidad del código del MCAS. Exingenieros de Boeing señalaron más tarde que el código subcontratado era ineficiente, y el proceso de corrección requería varias iteraciones. Esta falta de supervisión adecuada, junto con la presión del factor tiempo, terminó provocando la implementación de un software defectuoso.

Todo esto se tradujo en la implementación de software mal diseñado y peor revisado, lo que contribuyó decisivamente a los fallos catastróficos.

El alto precio de la falta de calidad en el software

El caso de Boeing ilustra un principio clave en el desarrollo de software: rápido es lento, y barato es caro. Cuando los gerentes de proyectos intentan acelerar los procesos de desarrollo o reducir costos contratando ingenieros menos experimentados o subcontratando a empresas baratas, el resultado suele ser contraproducente.

Los errores en el desarrollo de sistemas críticos (como era el MCAS) pueden tener consecuencias catastróficas: los ingenieros con experiencia en el desarrollo de software crítico suelen emplear toda una serie de medidas para garantizar la calidad del código (desarrollo basado en pruebas (TDD), simulaciones de modelos, análisis estático de código...).

Pero cuando los equipos de ingeniería trabajan bajo una presión constante por reducir costos y cumplir con plazos poco realistas, suceden cosas como las que observamos en Boeing: se saltan pasos críticos en el desarrollo, se omiten pruebas, se descuida la supervisión de los ingenieros más jóvenes, y, finalmente, el software termina siendo más defectuoso y costoso de lo que podría haber sido con un enfoque más cuidadoso desde el principio.

Cuatro lecciones

  1. Invertir en calidad es ahorrar a largo plazo: Priorizar la calidad en el desarrollo de software garantiza estabilidad y ahorra costos en futuras correcciones.
  2. No sacrifiques la mentoría ni la supervisión: El trabajo de ingenieros junior necesita la guía de ingenieros senior. De lo contrario, se corre el riesgo de crear software inestable.
  3. Mantén un equilibrio entre tiempo, costo y calidad: Acelerar proyectos sin considerar los riesgos puede llevar a problemas más graves, como sucedió con Boeing.
  4. La presión por plazos cortos afecta la calidad: El estrés por cumplir con plazos agresivos suele terminar en errores. En software, "rápido es lento" cuando el enfoque está solo en cumplir fechas sin priorizar la calidad.

Vía | Bloomberg

Imagen | Marcos Merino mediante IA

En Genbeta | Vio que podía ganar dinero arreglando bugs... y empezó a crearlos a propósito. Cinco ejemplos de malos incentivos para programadores

Inicio