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

0
15

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