Live data from Hacker News

What Should We Do to Prevent Software from Failing?

sloanreview.mit.edu

51–60 of 128 posts

Re: What Should We Do to Prevent Software from Failing?

#51
post #37

Earlier quoted context omitted.

We could start by not allowing pseudo-engineers out of bootcamps. Yes, specs and tests don't cover everything, however without them software is much worse. I guess only an increase in lawsuits and product returns will eventually change the status quo.

Why? Because those with CS degrees don’t make mistakes either? Or how about self taught engineers, do they not count? A problem is software is so easily created, destroyed and refactored. Combined with business interests pushing for all sorts of things midway through. How often are bridges built halfway when their entire spec changes, oh just convert his half done 2 lane bridge to a 4 lane double decker, should be no…

Engineering is a professional title, with a set of requirements that express a certain level of skill, moral and ethics.

Self taught, yes if they can attain the expected level of the Engineering Order.

Re: What Should We Do to Prevent Software from Failing?

#52
post #46

Earlier quoted context omitted.

Typing systems and language choices are really small potatoes in this field. There are much more scary problems to solve to make software work right. When you can side channel attack any CPU with a branch predictor and bits get flipped regularly by cosmic rays at high altitude then you need to rethink what software engineering really means. The big problems are rarely actually about the software or proving some algor…

Ah yes, real engineers anticipate the side channel attack that can happen when someone releases a butterfly at precisely the right location and precisely the right time so that it flaps its wings that affects the climate 10 years later that affects the cosmic rays that cause electrons to misbehave in all the CPUs across all the Docker containers on all the hosts in all the data centers and availability zones that cau…

[deleted]

Re: What Should We Do to Prevent Software from Failing?

#53
post #16

Earlier quoted context omitted.

None of the above changes the discussion. It's a very elaborate way of saying "writing correct software is hard". You know what's also hard to do correctly? Designing airplanes. Building skyscrapers. It's not that their designs are made flawless, it's that (in theory) the sheer volume of man-hours spent pouring over every minute detail of them, incorporating lessons learned from every failure that's ever happened in…

> it's that (in theory) the sheer volume of man-hours spent pouring over every minute detail of them, incorporating lessons learned from every failure that's ever happened in the field, amount to a very very high success rate and this is what company executives need to understand. Given the fleeting nature of software and the speed in which one can write working code (not strictly correct or bug-free, but something t…

The problem isn't that executives don't understand, it's that they don't care. Capitalism's incentives do not encourage the practice that's best for society. The only industries where care is taken are the ones that have been regulated to be as such. And then there are cases like Boeing, where that regulatory structure decayed and the safety practices decayed in tandem.

Re: What Should We Do to Prevent Software from Failing?

#54
post #46

Earlier quoted context omitted.

Typing systems and language choices are really small potatoes in this field. There are much more scary problems to solve to make software work right. When you can side channel attack any CPU with a branch predictor and bits get flipped regularly by cosmic rays at high altitude then you need to rethink what software engineering really means. The big problems are rarely actually about the software or proving some algor…

Ah yes, real engineers anticipate the side channel attack that can happen when someone releases a butterfly at precisely the right location and precisely the right time so that it flaps its wings that affects the climate 10 years later that affects the cosmic rays that cause electrons to misbehave in all the CPUs across all the Docker containers on all the hosts in all the data centers and availability zones that cau…

[deleted]

Re: What Should We Do to Prevent Software from Failing?

#55
post #8

Nothing new under the sun... MISRA C and Autosar were introduced around 1998, so we can also say standards for safe software are there for decades (around 2 decades but always). You still get companies skipping best practices, guidlines, etc. What is funny you get the same stuff in construction industry. Companies take shortcuts, architects take shortcuts and there are buildings, bridges collapsing. I just don't like…

Even in the mechanical world, chicken coops aren't engineered to the same standards as skyscrapers. In software, we can build to skyscraper standards when we need to. But most of our software is done like we're building a chicken coop. And that's actually appropriate for some of it - your web app probably isn't the software equivalent of a skyscraper.

I don't know how Boeing is doing their software but 737 Max is nowhere near chicken coop. I kind of believe they use something like MISRA.

Article also is not saying anything about web applications.

What I have seen on my own eyes was for example airport parking lot in Eindhoven which is also not a chicken coop: https://nltimes.nl/2017/09/25/eindhoven-airport-parking-gara...

On the other hand I have never seen collapsed chicken coop.

Re: What Should We Do to Prevent Software from Failing?

#56
post #6

"All of these professionals have years of schooling and relevant work experience and have passed rigorous certification exams. [...] To start, coders who work on critical infrastructure should have a professional accreditation framework that issues licenses." "mit.edu" Uh, huh.

This is the MIT Sloan Management Review, not the university itself. The author never attended the university (based on his LinkedIn profile), rather he attended the University of Waterloo.

And yet the MIT imprimatur is slathered all over this... whatever it is.

Since the Boeing fiasco is cited here a question occurs to me; how, exactly, would licensing the programmers involved in writing MCAS have empowered them to correct the culture of indifference to safety that has clearly compromised Boeing, given them the ability to override the questionable marketing strategy of trying to extend an ancient air frame with control system work-arounds, force management to reverse obviously stupid decisions regarding non-redundant angle of attack indicators on a model that pitches up by design and therefore requires work-arounds that rely on angle of attack indicators, cause Boeing to provide accurate operating manuals to pilots or make Boeing admit that training on legacy 737s was clearly inadequate for MAX models?

I submit that it is self evident that licensing the programmers would have prevented none of these management failures. Not one.

Re: What Should We Do to Prevent Software from Failing?

#57

we can do better than licensing. we can have formal verification. soon

Formal verification is the future, and always will be.

The gap between what's doable and writing all software that way is epic, and it's not at all clear to me that its the best way forward.

Software is (potentially) about creating what didn't exist before, nailing everything to the floor based on past experience isn't going to lead anywhere worth going.

Maybe part of the solution is writing software that's not verifiable or rejected. Probably, since it has to be something we didn't try yet.

Re: What Should We Do to Prevent Software from Failing?

#58
post #10

The analogy between software "engineering" and structural engineering is used a lot to point out the failures of software. I think this analogy is a category mistake caused entirely by the misapplication of the word "engineer" to software developers. We have already solved large areas of common classes of bugs at the language level, through strong static typing, memory safety and safe concurrency (Rust is the vanguar…

There is another problem, that software developers in general hate maintenance work. People should be working on keeping existing stuff working and well-oiled. We want exciting work where we get to learn some new tech. Nobody wants the janitorial jobs where you're just keeping things ticking along and running smoothly. Ofcource there are people who work on legacy systems - banking systems, old mainframes, etc. We alr…

I'd argue that there are an awful lot of us who would like nothing better than to spend our time cleaning up the codebase, refactoring risky code, getting the whole thing under test, etc.

Unfortunately, most organisations only grudgingly fund such work, and if I were to spend a significant portion of my time on such work (without being on a team dedicated to a critical modernisation effort), my performance reviews and compensation would suffer accordingly.

Re: What Should We Do to Prevent Software from Failing?

#59

Civil engineers aren't asked to design a small 2-story building that can be retrofitted as a 300-story skyscraper when the time comes. Or connect two buildings 15km apart over the weekend.

Design: "A bridge that can deploy itself on any river, in any city, any climate, safe in any whether, handle any vehicle (even ones designed after the bridge was deployed), with guaranteed time to cross (99th percentile under 5s), and regularly replace itself with newer version (while people are using it). It also has to be nuclear-attack resistant, and prevent 99% suicides. All built from readily available, standard components. On $100k budget, in 3 months."

Re: What Should We Do to Prevent Software from Failing?

#60
post #53

Earlier quoted context omitted.

> it's that (in theory) the sheer volume of man-hours spent pouring over every minute detail of them, incorporating lessons learned from every failure that's ever happened in the field, amount to a very very high success rate and this is what company executives need to understand. Given the fleeting nature of software and the speed in which one can write working code (not strictly correct or bug-free, but something t…

The problem isn't that executives don't understand, it's that they don't care. Capitalism's incentives do not encourage the practice that's best for society. The only industries where care is taken are the ones that have been regulated to be as such. And then there are cases like Boeing, where that regulatory structure decayed and the safety practices decayed in tandem.

This reminds me of one of the first conversations I had with my manager when I started my current job as a software engineer.

I used to work at a large financial company who had an intensely rigorous approach to verifying it's software in both manual and automated ways, as well as a much more careful approach to writing code to begin with.

When I started here (a much smaller startup delivering marketing software for small business clients), I brought up that I was concerned about going to somewhere with a less comprehensive testing pipeline in place, to which I was told:

"It's not particularly important to be able to find bugs before they're released, it's more important to optimize the deployment speed so that we can release the fixes quickly"

Sounded crazy to me at the time, but I later realized it's really all about what your industry is optimizing for, and what would cost you more money.

Post reply on HN