I was going to make a long post of my own about it, but Vox just preempted me. Executive summary (I encourage you to read the Vox article):
- Boeing found themselves painted into a corner by decades-old design decisions whose consequences they couldn’t have foreseen.
- Basically, it was not possible to easily and quickly make a safe aircraft that was more fuel efficient, to compete with the new Airbus A320neo.
- Boeing should have sucked it up and taken the loss involved in playing catch-up with Airbus.
- Instead, they decided to bolt new, more efficient engines on the existing 737 airframe (even though they didn’t really fit) and christen the result the 737 Max.
- The new planes had kludges installed (sensors and software) in an attempt to paper over their fundamental unairworthiness.
- A corrupt relationship with the FAA allowed the kludged-up planes to be approved and sold.
- The inevitable happens.
Really, it should come as a surprise to absolutely nobody that a plane that substitutes good engineering practices based on the laws of physics operating in the real world, for software operating in cyberspace, ends up sometimes startling and surprising pilots, sometimes with tragic results. It should also come as no surprise that said software has bugs, also sometimes with tragic results.
The most important overall rule of software development is that it’s extremely difficult to get right. As someone who’s worked in that field, I know this by first-hand experience.