Asiana Airlines Flight 214 from Incheon International Airport in South Korea crashed on final approach to San Francisco International Airport on a sunny morning with perfect weather, light winds, and unlimited visibility. The aircraft struck a seawall short of the runway and broke off the tail, landing gear, and engines. There were 3 deaths and 187 injured, 49 seriously, among the 307 passengers and crew on board.
Analysis of the crash indicated the airplane was too slow and low—well below the glide slope. The pilots had mis-configured the autopilot and auto-throttle of the Boeing 777, resulting in the engines remaining at idle thrust as the airspeed declined toward stall speed. This was blamed on pilot error, but when a programmer looks at a description of the systems that were being used to manage the flight, what one sees is hideous user interface design, where the behaviour of the systems is determined by a combination of mode settings and conditions of flight, with modes that can change automatically without command inputs from the pilots, and may be indicated only by small indications on flight displays. The accident investigation report cited “the complexities of the autothrottle and autopilot flight director systems that were inadequately described in Boeing’s documentation and Asiana’s pilot training, which increased the likelihood of mode error”, but to me that sounds like trying to fix the opaque and hostile user interface of piece of software by adding another twenty pages to the manual trying to explain what it will do in all combinations of mutually-interacting modes. Nothing can replace clear indication of mode settings, requiring user interaction and/or confirmation of mode changes, and designing systems so “why did it do that?” is always immediately apparent from displays.
This is the crash which famously made fools of television news readers who repeated a prank report of the names of the flight crew.