My understanding of the causes of these two crashes: Boeing, to regain competitiveness against Airbus, installed modern engines to the rather old 737 design with the aim of retaining type approval and therefore minimising retraining. New, evidently safety-critical, software was to compensate for the diminished handling of the aircraft, but presumably for reasons of cost (or profit) the software takes input from only one of two angle-of-attack sensors (where Airbus have three sensors). When sensors go bad, the plane tries to dive, and the undertrained pilots may not be able to recover.
A rather technical analysis of the design flaws and accidents here:
Here’s a much less technical video from Vox:
The real reason Boeing’s new plane crashed twice
From the related discussion on reddit:
They [messed] up the basic aerodynamics of a solidly engineered plane
The 737-800 etc already are a little sporty on pitch authority and making the plane bigger with bigger engines makes the problem worse. It is a pretty typical aerospace technique to use envelope protection for this type of thing-- indeed, Airbus has gone much farther and found various ways to kill people with resultant problems and human factors issues. It’s nothing new-- e.g. yaw stability and dynamics suuuuuucks for airliners but we deal with it with yaw damping-- software (or in the olden days, electrical) control loops-- rather than pay efficiency costs to fix it aerodynamically.
The issue is that a design decision was made that the system did not need any type of redundancy, because pilots could override it and were already trained to deal with runaway stabilator trim, etc. Well, they are , but they don’t always get it perfectly and if you treat the trim strangely intermittently you are giving each flight crew a high stakes test. Some will fail.
Turns out AoA sensor reliability is a whole lot less than anyone thought, and that surprised flight crews do much worse at this test than anyone thought.