Live data from Hacker News

How the Boeing 737 Max disaster looks to a software Developer

spectrum.ieee.org

71–80 of 306 posts

Re: How the Boeing 737 Max disaster looks to a software Developer

#71
>Unfortunately, the current implementation of MCAS denies that sovereignty. It denies the pilots the ability to respond to what’s before their own eyes.

>In the MCAS system, the flight management computer is blind to any other evidence that it is wrong, including what the pilot sees with his own eyes and what he does when he desperately tries to pull back on the robotic control columns that are biting him, and his passengers, to death.

Wow, I had no idea the issue with the 737 Max was so nuts. I can't imagine what the pilots were going through when this was happening.

Re: How the Boeing 737 Max disaster looks to a software Developer

#72
post #32

The article states: "When MCAS senses that the angle of attack is too high, it commands the aircraft’s trim system to lower the nose. It also does something else: It pushes the pilot’s control columns downward " No, it does not push the pilot's control columns downward.

I think that the author is mistaking the fact that trimming the plane forward means that more force is required to pull back on the yoke for the plane actively pushing the yoke forward.

Yeah, maybe also some Boeing/Airbus confusion. The author doesn't seem to understand the extent to which the 737 cockpit is mechanical, with cables running to control surfaces. It's an important point because it likely explains why the Ethiopian pilots were unable to regain control after disabling electric trim, becoming overpowered by aerodynamic load on the stabilizer.

Re: How the Boeing 737 Max disaster looks to a software Developer

#73
post #36

"Various hacks (as we would call them in the software industry) were developed." Dear God. That's a sentence I never, ever wanted to hear about an aircraft.

All engineering designs are full of compromises (the article uses "hacks" meaning compromises), as there are a large number of competing issues at work. Pretty much none of those issues are ever aligned along the same axis. For just a taste of this, an airliner flies at high altitude, and at low altitude. It flies at low speeds, and high speeds. It flies heavily loaded and empty. Optimizing for any one of these regim…

I don't even work on life-or-death machinery, only JavaScript UI's, but if a higher-up requested a new feature from me that would require multiple cascading changes just to keep other things from breaking, I would fight tooth and nail to talk them out of it. The compromises you're talking about are fundamentally unavoidable ones that come directly from the constraints at hand. A hack is something that degrades the integrity of the overall system for the sake of a short-term feature. Hacks are the payday loans of technical debt.

Re: How the Boeing 737 Max disaster looks to a software Developer

#74
This is a very good analysis, but fatally incomplete.

One really essential reason those planes crashed was that each time the MCAS triggered, it acted like it was the first time. If it added 1 degree of trim last time, it adds a second this time, a third next time, up to the five degrees that runs the trim all the way to the stops.

A second reason is that, under the design still on file at the FAA, it could only add a maximum of 0.8 degrees (each time). This was raised to 2.4 degrees after testing, so only two hits could, in principle, put you almost to the stops.

A third was that the only way to override the MCAS was to turn off power to the motor that worked the trim. But above 400 knots, the strength needed to dial back the trim with the hand crank was more than actual live pilots have, especially if it is taking all their strength to pull back on the yoke.

A fourth was that, with two flight control computers, the pilot could (partly) turn off a misbehaving one, but there is no way to turn on the other one. You have to land first, to switch over, even though the other is doing all the work to be ready to fly the plane.

A fifth was that it ignored that pilots were desperately pulling back on the yoke, which could have been a clue that it was doing the wrong thing.

A sixth was that, besides comparing redundant sensors, it could have compared what the other flight computer thought it should be doing.

Re: How the Boeing 737 Max disaster looks to a software Developer

#75

I believe the relative ease — not to mention the lack of tangible cost — of software updates has created a cultural laziness within the software engineering community. -- This --^ As someone who carefully crafts their code to strive for perfection, seeing sloppy work out there in the wild drives me nuts. I know folks here will deride me for being "inefficient", but in the long term I still maintain from my experience…

Recently, I had someone join my team who was instantly popular and everyone enjoyed this person's personality. I trusted this person more then I should have and during a period when I was unable to give enough attention to their code reviews, they introduced several critical bugs and defects into the production environment.

I never figured out if it was ignorance or laziness. But, either way I learned a valuable lesson. It was also a reminder to me that not everyone has the same level of ownership or commitment that I would expect.

Re: How the Boeing 737 Max disaster looks to a software Developer

#76

Earlier quoted context omitted.

You'll see it in any piece of software written by any developer who is self-managed. The notion that software quality would greatly improve without managers is a myth.

[citation needed] idk man, my code is pretty damn clean

Code cleanliness has no correlation with lack of bugs. Also, 1) your sample size is pretty small, and 2) what looks clean to you might very well be despicable to someone else.

Re: How the Boeing 737 Max disaster looks to a software Developer

#77

Earlier quoted context omitted.

If only managers and CEOs saw it the same way.

You'll see it in any piece of software written by any developer who is self-managed. The notion that software quality would greatly improve without managers is a myth.

We seem to have very different experiences. Every manager I ever had (including one at Boeing) has pushed me to ship software that wasn't at all ready, on the basis that the UI of the prototype looked good.

Re: How the Boeing 737 Max disaster looks to a software Developer

#78
Despite the possible negative consequences for our salaries, we need to work to remove the divide between the software people and the subject-matter experts. Those who use, but don't necessarily build, software, seem to place undue trust in "the computer" to be always right, whereas we all know the computer is just being instructed by ordinary human schmoes like us. And we (the schmoes) are reliant on what to me seems like a tiny bottleneck of 2-way communication with the SMEs.

It doesn't need to be binary technical/non-technical; everybody is, to some degree, technical. If you can use a knife, you're technical. And it doesn't need to be this rigid specialization, I do computers / I do aviation. If we removed that divide we might start to widen and deconstrict that bottleneck, and we might even start to find more people like this author who know both, and who don't need to have an aviation SME tell them to check more than one sensor for example, because when they're writing it, and coding the part where you set or decide the value for AOA, they automatically say to themselves "hey let's add a cross-check here like I always do when I'm flying." Specialization seems like a magic bullet but it also creates a big burden of oversight & communication, I guess is my point. It's like splitting the monolith of the human world into microservices, and with the same resulting problems.

Re: How the Boeing 737 Max disaster looks to a software Developer

#79

Earlier quoted context omitted.

I think that the author is mistaking the fact that trimming the plane forward means that more force is required to pull back on the yoke for the plane actively pushing the yoke forward.

Yeah, maybe also some Boeing/Airbus confusion. The author doesn't seem to understand the extent to which the 737 cockpit is mechanical, with cables running to control surfaces. It's an important point because it likely explains why the Ethiopian pilots were unable to regain control after disabling electric trim, becoming overpowered by aerodynamic load on the stabilizer.

In newer 737 versions it's no longer cables... http://www.boeing.com/commercial/aeromagazine/aero_02/texton...

Re: How the Boeing 737 Max disaster looks to a software Developer

#80
post #42
post #31

Earlier quoted context omitted.

I refer you to Joel Spolsky about formal proofs of programs: […] So in the first day of that class, Dr. Zuck filled up two entire whiteboards and quite a lot of the wall next to the whiteboards proving that if you have a light switch, and the light was off, and you flip the switch, the light will then be on. The proof was insanely complicated, and very error-prone. It was harder to prove that the proof was correct th…

I have a MSc in formal methods, and this is really misleading. Surely you cannot make some proofs easily. However, how did Airbus verify that some errors simply do not exist in their fly-by-wire software (which is ~100 KLOC implemented in a subset of C)? (I'm sure Boeing also employs these techniques internally). Using abstract interpretation. There are tons of formal methods, ranging from type systems to formal proo…

As explained in this talk by Robert Martin, proving programs correct was the big goal which Edsger W. Dijkstra tried to reach by eliminating GOTO in favor of structured programming (which is essentially having if-else statements, loops and iteration as part of a language as replacement for all practical uses of GOTO).

https://www.youtube.com/watch?v=SVRiktFlWxI#t=2h9m38s

Software could be proven correct, but we abandoned that, just gave up on it, it’s too hard. But we can test it. We can use science, and we can write tests that demonstrate that the software is not failing. We treat software like a science, not like mathematics.

— Robert Martin

Post reply on HN