Live data from Hacker News

Ask HN: Why is software quality an afterthought for many people/companies?

news.ycombinator.com

71–80 of 100 posts

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#71

Feature creep and timelines are in my opinion the root cause of lower quality software. Most engineers sit down planning to develop clean efficient code but that generally takes more time than they are allocated. As the deadline draws closer new features and edge cases are often added in by either management or the end user. Often these new features were not accounted for in the original design and in order to fit th…

I don't understand why people have a problem with hard-coding features. The argument is that it creates more work later. But this is a fallacy as the work "later" is not guaranteed to be necessary or requested. The idea that all software has to be abstracted, configurable, and future-proof to be "good" is just wrong. We hard code features all the time on my project. The earth keeps on spinning, the company makes mone…

Your comment reminds me of the time I spent reading Chuck Moore's writings and learning forth. One of the main things he endorses is keep it simple. Don't do things because you may need them. You don't need it now, so don't do it now. Factor your code later, or rewrite it if you have to. But there's little point implementing something that may not be useful in the future (or whose complexity costs aren't amortized over enough uses later).

I can abstract out some feature into a handful of classes, and then use that in one place in my code. Was it useful? Probably not. Now I use it in 20 places. Was it useful? Almost certainly. But if I don't have multiple places to use the abstraction, it probably isn't worth developing today.

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#73
post #8

Software development is, apart from a few rare outposts like GOV.UK, conducted in the private sector for a profit. That means that the number one consideration for the software is profitability. For internal-only software, this means that cost is the prime consideration. In support of that, often software startups are trying to capture a winner-takes-all market, so time-to-market is critical. Thirdly, consumer protec…

Two points:

First, to extend what you said about startups, you generally aren't totally sure that the market is really there. If it turns out that nobody cares about what you're building, it doesn't matter what quality you built it with. Therefore, as long as it's cheaper to build it with lower quality, startups are rational to build it with little concern for quality.

Second, Toyota: I'm not going to be any kind of apologist for Toyota's horrible software. From what I read about the situation, the way it was written was appalling. And they rightly got a lot of heat over it. (Arguably, they should have gotten more.)

But I wonder if the quality bar isn't being set too high in this situation. If Toyota didn't implement things in software, they would have had to implement it in hardware (either mechanical or electrical). That hardware would have some failure modes and failure rate. If the software has a lower failure rate than the hardware, that's progress, even if the software has a higher failure rate than it should have.

Our discussion of the Toyota flaws is colored by the fatalities. Still, hardware flaws can kill people, too...

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#74
post #43

Earlier quoted context omitted.

I've managed developers for the same software product (accounting system) over the last 15+ years. That amount of time gives you some perspective. A common thing that new hire developers do is call for "a complete rewrite", they do this because when they first approach a large old code base, its daunting and seems impenetrable. Of course they are right, but naive in thinking a "rewrite" will help. Any new rewrite wil…

> once all features and edge-cases are accounted for. But one of the benefits of a rewrite is that you can dump all the features and edge-cases that are no longer required. Or fold old edge-cases into new generalities because the business has changed since then. > the real world is messy, very messy. Cannot disagree -but- it's nowhere near as messy as the people (often those who are to blame) defending the byzantine…

>> reality is going to temper their enthusiasm after a decade or so.

>I've been doing this professionally for two decades and my enthusiasm for "chuck it away and do it right" hasn't waned one bit.

I think it's probably somewhere in between the two extremes. I think you should have good unit tests and then refactor parts of your code where you see better generalities, or where basic code cleanliness was disregarded before.

But throwing all of it away is rarely possible without endangering the profitability of the company for a while.

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#75
post #70
post #69

Earlier quoted context omitted.

This is the future of learned helplessness. People that see problems and inconsistencies in software systems and try to work around them will have worse outcomes than those that just blindly follow the workflow assigned to them. Seems like one needs to be controlling the spec and writing the code not to get stuck in this trap.

>People that see problems and inconsistencies in software systems and try to work around them will have worse outcomes than those that just blindly follow the workflow assigned to them. Well, not always. That applies ONLY to those that find such problems or inconsistencies and workaround them in an incorrect manner. And this brings us back right to Chesterton's fence: https://en.wikipedia.org/wiki/Wikipedia:Chesterto…

Never heard of Chesterton's fence before, and it's quite interesting, but I don't see this as applicable here. This was a design error on the part of the programmers, because the software didn't make it clear why it was "misbehaving".

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#76
Design by committee vs design by vision. Takes guts to have strong opionions and stick to them.

At almost every company, the primary background motivation is not getting fired. Virtually no one even aspires to great work let alone takes the risk to have a vision.

This is pretty rational. There's just no incentive to risk your neck pushing for quality when you'll just end up working a lot harder for little reward.

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#77
post #28

If you think about it, software quality is not something that is ever visible or measurable from the outside. Theoretically, you could write software by just having an incredibly long list of test cases and a random string generator. The quality of that code would probably be terrible, but it would still work as long as your test cases are restrictive enough.

You measure current code quality by your future development velocity. That is, low quality in your current code base makes it harder to produce the next feature, and the feature after that.

Unfortunately, you learn that some time after you write the poor-quality code...

Re: Ask HN: Why is software quality an afterthought for many people/companies?

#78
post #8

Software development is, apart from a few rare outposts like GOV.UK, conducted in the private sector for a profit. That means that the number one consideration for the software is profitability. For internal-only software, this means that cost is the prime consideration. In support of that, often software startups are trying to capture a winner-takes-all market, so time-to-market is critical. Thirdly, consumer protec…

> the security people can usually get it right

Having worked for an AV vendor, I assure you that is not the case. Just check Project Zero[1], most of them do parsing of complex binary formats in kernel mode, 'nuff said.

This is just one example, but all major vendors have had issues:

[1]https://googleprojectzero.blogspot.ro/2016/06/how-to-comprom...

-----------------

OTOH, there are a few individuals who show a great deal of care about software correctness. Daniel Bernstein comes to mind, but many other people are offering big bounties for their personal projects, and have a track record of delivering correct software. But even in cases such as these, there are probably some hidden bugs in there, because of the inherent complexity. Nobody has the time to verify the fine interactions between the compiler, OS, libraries etc.

At the end of the day, if you want higher quality software, you have to incentivize it, as others have mentioned.

Post reply on HN