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
-
Invertir
en
calidad
es
ahorrar
a
largo
plazo:
Priorizar
la
calidad
en
el
desarrollo
de
software
garantiza
estabilidad
y
ahorra
costos
en
futuras
correcciones. -
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. -
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. -
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