Live data from Hacker News

Software Engineering Lessons from Aviation

riceo.me

41–50 of 56 posts

Re: Software Engineering Lessons from Aviation

#41
post #28
post #8

Earlier quoted context omitted.

>as software engineers we find a bug and just fix it. [...] Unfortunately, the recent 737 MAX incidents seem to have changed this. I think there's some nuance about MCAS that's lost in all the media reports. As far as I understand, the MCAS software didn't have a "bug" in the sense we programmers typically think of. (E.g. Mars Climate Orbiter's software programmed with incorrect units-of-measure.[0]) Instead, the MCA…

>Instead, the MCAS system was poorly designed because of financial pressure to maintain the fiction of a single 737 type rating. OK but how do we know, how is it demonstrated, that this financial pressure condition has now been mitigated? What is the exact nature of the "fix"? And actually what are all of the closed door conversations, back then and now, about the various possible behaviors for this software routine?…

It makes me wonder if pilots were even involved at that level of the design and decision making for the feature.

They were not.[1]

[1] https://www.wsj.com/articles/boeings-own-test-pilots-lacked-...

Re: Software Engineering Lessons from Aviation

#42
post #11

Earlier quoted context omitted.

There are a handful of highly respected books that everyone knows software engineers should read, like "The Mythical Man-Month" and "Peopleware". Yet whenever I read one of these, I found I learned very little. Everything in them was obvious -- to those who are 'in the trenches'. What we need is a way to get managers to read these, and take them to heart. Even when my manager had a copy of the book sitting on their d…

I know few of us want to become managers, but when you find a harmful one, it's time to take on that responsibility.

It's a chicken-and-egg problem. The sort of company with managers who pester me for alleged unproductivity (for caring about quality over features) is not the sort of company who would ever let me into a management role.

Re: Software Engineering Lessons from Aviation

#43
post #18
post #12

Earlier quoted context omitted.

>I always liked this quote from the "Mythical Man-Month": “Never go to sea with two chronometers, take one or three”. (I can't tell if you're making a side comment or specifically replying to the categorization of "software bug".) Yes, the 737 MAX only has 2 AOA sensors instead of 3 like Airbus A320. This is a physical design of sensors mounted on the airframe. But this aerospace engineering design detail seems outsi…

It was mostly a side comment, but it seemed appropriate in this context. For such an important system, I would think that a single instance would be too little (single point of failure: even in less mission critical system it wouldn't be allowed), while using two you would not be able to resolve a reading conflict between them (which is the point of the quote), so three is probably a reasonable number. Even if applie…

Using two would have been strictly better a design than just one. Obviously three is better but two disagreeing and shutting down mcas would be much, much preferable than relying on one to the grave.

Re: Software Engineering Lessons from Aviation

#44

I think there's a lot to learn from the aviation industry. I did a talk at my companies internal conference on this (turned into words at https://medium.com/ingeniouslysimple/why-dont-planes-crash-1... ). For me it's the mindset that differs. Too often as software engineers we find a bug and just fix it. Aviation goes a step deeper and finds the environment that created the bug and stops that. Unfortunately, the rece…

Retrospectives are a common part of agile. Only slightly less common is skipping retrospectives.

Re: Software Engineering Lessons from Aviation

#45
post #10
post #4

Earlier quoted context omitted.

The blog post was good but it was just another variation highlighting the age old conundrum... fast, good and cheap, pick two. Those that value quality are going to be swimming up stream in most organization that develop software because the bean counters always go straight to fast and cheap.

I work in regulated industry and you really don’t want the level of scrutiny regulated processes have in other industries. Innovation would slow down to a crawl or pretty much stop. In a lot of industries you can make trade offs quality vs speed or innovation and be better off by not having perfect quality.

...until you start injuring people or costing significant numbers of zeros.

Re: Software Engineering Lessons from Aviation

#46
post #11

I think there's a lot to learn from the aviation industry. I did a talk at my companies internal conference on this (turned into words at https://medium.com/ingeniouslysimple/why-dont-planes-crash-1... ). For me it's the mindset that differs. Too often as software engineers we find a bug and just fix it. Aviation goes a step deeper and finds the environment that created the bug and stops that. Unfortunately, the rece…

There are a handful of highly respected books that everyone knows software engineers should read, like "The Mythical Man-Month" and "Peopleware". Yet whenever I read one of these, I found I learned very little. Everything in them was obvious -- to those who are 'in the trenches'. What we need is a way to get managers to read these, and take them to heart. Even when my manager had a copy of the book sitting on their d…

> Don't worry about the others. Don't worry about testing, or cleaning up, or documenting why the mistake was made or how it should have been done.

Sounds like getting management to truly understand the concept of technical debt is the core problem.

Re: Software Engineering Lessons from Aviation

#47
post #18

Earlier quoted context omitted.

It was mostly a side comment, but it seemed appropriate in this context. For such an important system, I would think that a single instance would be too little (single point of failure: even in less mission critical system it wouldn't be allowed), while using two you would not be able to resolve a reading conflict between them (which is the point of the quote), so three is probably a reasonable number. Even if applie…

Using two would have been strictly better a design than just one. Obviously three is better but two disagreeing and shutting down mcas would be much, much preferable than relying on one to the grave.

Preferable to the passengers, but not to Boeing, because that little warning light would warrant retraining and re-certification of pilots.

It's why they didn't do it.

Re: Software Engineering Lessons from Aviation

#48
post #22

I think there's a lot to learn from the aviation industry. I did a talk at my companies internal conference on this (turned into words at https://medium.com/ingeniouslysimple/why-dont-planes-crash-1... ). For me it's the mindset that differs. Too often as software engineers we find a bug and just fix it. Aviation goes a step deeper and finds the environment that created the bug and stops that. Unfortunately, the rece…

I work in automotive. In Europe there is the ASPICE standard which is actually a reasonable guideline for (commercial) software development (unit tests, code reviews, etc). Customers require you to follow it. Top management requires you to follow it. Projects still ignore it. Writing unit tests at the end of a project misses most of the point, for example.

This was a nice prompt for me to finish my ASPICE article: http://beza1e1.tuxen.de/aspice.html

Re: Software Engineering Lessons from Aviation

#49
post #24

Earlier quoted context omitted.

There is no other useful meaning of "correct code" apart from "matches specification/design". There is no notion of correctness for design. The design may not be consistent with safety requirements for example.

Of course there is correctness for design! When reviewing a design, the first thing to verify is if it can satisfy its input requirements. In your example, a design that has to satisfy a safety requirement but doesn't is not correct and must be rejected.

My comment tried to use the same words as its parent:

> Somebody at Boeing specified the software design to be "1 sensor and 2.5 degrees"

What is called a "software design" there, you would probably call a "requirement".

I agree with you. Your meaning of "design" has a notion of correctness.

Re: Software Engineering Lessons from Aviation

#50
post #41
post #28

Earlier quoted context omitted.

>Instead, the MCAS system was poorly designed because of financial pressure to maintain the fiction of a single 737 type rating. OK but how do we know, how is it demonstrated, that this financial pressure condition has now been mitigated? What is the exact nature of the "fix"? And actually what are all of the closed door conversations, back then and now, about the various possible behaviors for this software routine?…

It makes me wonder if pilots were even involved at that level of the design and decision making for the feature. They were not.[1] [1] https://www.wsj.com/articles/boeings-own-test-pilots-lacked-...

I'm aware of this reporting, that's the test pilots. I'm talking about engineers who are pilots, and pilots consulted for the design portion, whether they be in-house, customers, or consultants brought on board.

If you're a food products company, you bring in people to do some kind of product testing to see if they like it or hate it. So far I have yet to read or hear from a pilot who says: Oh this is GREAT idea! Love the entire concept!

Post reply on HN