Live data from Hacker News

What Should We Do to Prevent Software from Failing?

sloanreview.mit.edu

101–110 of 128 posts

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

#101

Earlier quoted context omitted.

Writing software is not engineering - engineering is building the same thing over and over again and you slowly learn how to do it the right way. There are incremental improvements along the way - stronger lighter materials, better tools, etc. But the folks who built the Roman aqueducts could get up to speed pretty quickly on the Golden Gate Bridge. The principles of flight don't change. The fundamentals of building…

>That's what software is - every project is a brand new thing that has never been done before - there isn't 200 years of learning to fall back on. Sorry but this is just gatekeeping bullshit. Most apps being built today by companies with the budget to build them are TODO apps, report apps, storefronts, big data mungers, CRMs, etc. They all just have different business requirements and domain specific knowledge. To th…

I honestly don't know what gatekeeping means in this context.

> all just have different business requirements and domain specific knowledge

Yeah - that's what I said. You realize that's where all the complexity is, right?

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

#102

Earlier quoted context omitted.

>That's what software is - every project is a brand new thing that has never been done before - there isn't 200 years of learning to fall back on. Sorry but this is just gatekeeping bullshit. Most apps being built today by companies with the budget to build them are TODO apps, report apps, storefronts, big data mungers, CRMs, etc. They all just have different business requirements and domain specific knowledge. To th…

The firmware in all the electronic gizmos in your life aren't running "just apps". Much of it is poorly developed shoot from the hip code that is riddled with bugs. Some of it is running in cars and planes that manage to kill people because of hubris.

And some of it is developed under standards like ISO 26262, or IEC 61508. You would be amazed at what goes into your steering, braking, airbag, and stability control systems.

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

#103
post #39

Speaking as someone who builds mission critical software, licensing is not the answer to this problem. Occupational licensing only serves to raise barriers to entry and crowd out competition without raising quality. To put my opinion bluntly, Bernie Madoff had a license. The things you should do to prevent catastrophic failure: - Reduce your attack surface as much as possible. - Automate your infrastructure, human in…

And don't forget:

- Impose civil and criminal liability for failures that can be traced to not following these standards

Gotta have teeth.

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

#104
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…

Agreed. Also, there's a big difference in building a doghouse, tent, home and skyscraper or bridge. Not all of them require the same rigor and planing. Beyond this, a lot of organizations don't allow for pushback from development to cover for clearing technical debt.

None of this accounts for the fact that over half the software industry has less than 5 years of experience and less than 25% has over 10. People with less than 5-10 years of experience can be brilliant, but there are things you learn with experience. First and foremost is the ability to push back and say, "No, it can't reasonably be done in X timeframe." Actually using scrum process to break things down in to chunks that can be swallowed. Not allowing mid-level developers to use "enterprise patterns" everywhere, especially when they increase complexity and fail to provide real value to the project.

Preplanning and the level it takes will depend on the scope of the project and the use case. A heart monitor or guidance system isn't the same as an eCommerce or entertainment website. Engineering discipline isn't required for the latter, but is for the former examples.

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

#105
I love how in this article "If industry fails to self-regulate, governments might seize the opportunity." is considered a bad outcome.

But indeed no one forbids anyone from providing certifications or imposing them. I actually have a diploma that says (rightly) that I know how to write provable code and good software. Only once have I been asked to do so by my clients.

I, personally and unoriginally, blame Microsoft for the current situation. "Runs on Windows" is a common requirement and when it is present, you know your software won't be held to a higher standard than Microsoft's is.

If we had a certification that for instance required that we are 100% certain that a given process can not be interrupted for a software reason, we would need to examine Windows code or blindly trust Microsoft, rendering the first point of the certification moot.

I know how to write realtime code where I can give hard guarantees on the time it takes to finish a task. But it requires an explicit and transparent scheduling system, a known IRQ system and a precise account of the number of cycles necessary to execute a given procedure.

Maybe it can happen now, but until recently, a certification procedure that would require an open OS would have been seen as ideological.

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

#106
post #78
post #24

Earlier quoted context omitted.

We can also reduce the effort to write better code. Certain language and tooling features make quality easier.

I think that's the key. There was ADA now there's Rust. If you can have GC on your system there are plenty of other languages that make strong static typing and other compile time guarantees that beat any analyzed C++.

Is static typing really what you want? I would think that if you want safety against failure, you really want redundant systems that live in separate failure domains and can coordinate in the event of failure.

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

#107

Earlier quoted context omitted.

>That's what software is - every project is a brand new thing that has never been done before - there isn't 200 years of learning to fall back on. Sorry but this is just gatekeeping bullshit. Most apps being built today by companies with the budget to build them are TODO apps, report apps, storefronts, big data mungers, CRMs, etc. They all just have different business requirements and domain specific knowledge. To th…

I honestly don't know what gatekeeping means in this context. > all just have different business requirements and domain specific knowledge Yeah - that's what I said. You realize that's where all the complexity is, right?

>I honestly don't know what gatekeeping means in this context.

you're trying to create a barrier to standardization. You don't want to codify successful patterns to keep your job coveted.

>Yeah - that's what I said. You realize that's where all the complexity is, right?

That's not what you said.

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

#108

Earlier quoted context omitted.

>That's what software is - every project is a brand new thing that has never been done before - there isn't 200 years of learning to fall back on. Sorry but this is just gatekeeping bullshit. Most apps being built today by companies with the budget to build them are TODO apps, report apps, storefronts, big data mungers, CRMs, etc. They all just have different business requirements and domain specific knowledge. To th…

The firmware in all the electronic gizmos in your life aren't running "just apps". Much of it is poorly developed shoot from the hip code that is riddled with bugs. Some of it is running in cars and planes that manage to kill people because of hubris.

You think that's most of what's being developed today? Life critical firmware?

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

#109
post #72

Earlier quoted context omitted.

I don't like car analogies. A software engineer is like a plumber you link up lots of small components, weld them together and then the data flows through the application (at least that is the idea).

I don't like either of these analogies. Work of SE is much more complicated. I guess a developer who just mashes things together on the front end is kind of like a plumber. However, if you work with the backend, you need to worry about data access, any concurrency issues, performance problems. Generally tradesman follow relatively simple guidelines, which may change at a slower pace....tech on the other hand changes…

> I don't like either of these analogies.

I think it's hard to find a good analogy because software is an incredibly organic and artful thing. It can be highly technical but also playful.

I think it's a matter of finding the right people for the right job, and making sure those people have some skin in the game. If there is no incentive to write quality code, or the dev's don't care to write quality code you probably won't get quality code.

Then again maybe we still haven't come across the correct tools for the job that make it easier to produce quality software.

The fundamental architecture of a car has been relatively the same for many years now. To a lesser extent we see that in computer hardware however in software it so easy to invent new tools that maybe the good tools get lost in the mess of it all.

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

#110

Earlier quoted context omitted.

I honestly don't know what gatekeeping means in this context. > all just have different business requirements and domain specific knowledge Yeah - that's what I said. You realize that's where all the complexity is, right?

>I honestly don't know what gatekeeping means in this context. you're trying to create a barrier to standardization. You don't want to codify successful patterns to keep your job coveted. >Yeah - that's what I said. You realize that's where all the complexity is, right? That's not what you said.

> you're trying to create a barrier to standardization. You don't want to codify successful patterns to keep your job coveted.

Ugh. I use as many libraries and services as possible so I can focus on writing code when no standard tools exist. That will keep me busy every day forever. If you think I'm out there sabotaging standardization efforts you're delusional. I wouldn't even know how to do that. Slash tires at a W3C convention or something?

Post reply on HN