Live data from Hacker News

Ask HN: Why is software quality always decreasing?

news.ycombinator.com

51–60 of 166 posts

Re: Ask HN: Why is software quality always decreasing?

#51
post #40

Earlier quoted context omitted.

You are trolling here aren't you ? > Because something something about closed systems vs open systems and putting energy into systems (eg, people working on the codebase)? Did you ever lead a project that spans at least half decade? And is this a coherent thought or something something whatever? > I’m not sure what “best” means here, but there are other tools for improving software quality beyond tests, including and…

My first comment was specifically about the invocation of “entropy”, which I believe is just confusing nonsense. And as I said I don’t have the requisite background to really make the point, was hoping for some goodwill and assistance perhaps. I’ll retract my comment about formal methods since I’ve never actually used them in a refactor. And I agree that tests make refactoring easier. But none of this demonstrates fo…

Lets check out wikipedia:

Entropy is a scientific concept as well as a measurable physical property that is most commonly associated with a state of disorder, randomness, or uncertainty

What is your claim, that disorder, randomness and uncertainty DO NOT build up with time? :)

> And I agree that tests make refactoring easier.

They don't make it easier. They make it POSSIBLE.

> And so, what specific quality guarantees do good tests make?

Good tests cover all critical sections of functional specification (what is deemed critical depends on project). If you have functional rules x, y and z somewhere there, there need to be bunch of tests for x, y and z somewhere, ideally fuzzy, fast and without blank database.

This is all very much basic IT stuff for long time, particularly nowadays when software needs to run not only in your basement but on every conservable device and number of different contexts!

No offense, but you seem new in this business, and your aggression doesn't help at all.

Re: Ask HN: Why is software quality always decreasing?

#52
Companies try to build everything in-house. I'm an engineer, and I'm quilty of this myself, but often we just love building things. If you build too many things you eventually lose focus. Maintenance becomes harder, upgrading software becomes harder, team members eventually leave. Turns out that everyone loves building, but nobody wants to maintain someone else's software, so you throw some duct tape around it.

I think the solution is to build less and reuse more.

Re: Ask HN: Why is software quality always decreasing?

#53
post #40

Earlier quoted context omitted.

You are trolling here aren't you ? > Because something something about closed systems vs open systems and putting energy into systems (eg, people working on the codebase)? Did you ever lead a project that spans at least half decade? And is this a coherent thought or something something whatever? > I’m not sure what “best” means here, but there are other tools for improving software quality beyond tests, including and…

My first comment was specifically about the invocation of “entropy”, which I believe is just confusing nonsense. And as I said I don’t have the requisite background to really make the point, was hoping for some goodwill and assistance perhaps. I’ll retract my comment about formal methods since I’ve never actually used them in a refactor. And I agree that tests make refactoring easier. But none of this demonstrates fo…

It's not really nonsense, it fits a common notion of entropy: lack of order or predictability; gradual decline into disorder.

As software systems (like many systems) go from initial development (which may or may not have a solid vision and initially highly disciplined development approach) to long term maintenance, disorder creeps into the system. Often just as a matter of expedience, "Let me make this field public so this other module can modify it directly because I need it now, I'll come up with a proper interface later. Oh shit, three years later 100 modules are making use of that public field."

What tests do, in this case, is help to preserve order. They help to ensure that a more rigid and ordered structure for the code remains. Formal methods only take you so far because, outside of maybe coq and related languages, there is no direct connection between your formal method spec and the code that has been written, in contrast to tests (which can be derived from your formal spec, but usually manually). Of course, tests can only carry you so far, they also have to be maintained. If a test is removed because it's no longer relevant, is another test put in its place to verify the new system? Are tests disabled because they're only failing sporadically or because the bugs they represent are hard to fix and we don't know how to yet (or don't have the time)?

Gradually, a system starts to suffer from various problems of this sort, that's entropy. Maintaining quality is a constant struggle against various forces (convenience, loss of institutional knowledge, time pressure, etc.). Tests are one way (and a critical way) to help balance against those forces.

EDIT: Other formal methods that work with real systems would be in Ada/SPARK, ATS, or Frama-C and I'm surprised I didn't mention them above. However, at least with SPARK, it narrows the scope of what you can do with the system and prove properties about it. That scope is always increasing, but is still a subset of what Ada itself can do. That's not all bad, but this means you can only consistently prove (in a formal sense) properties of subsets of a larger system and will likely be unable to prove (in an automatic fashion at least) a significant number of properties of those same larger systems.

Re: Ask HN: Why is software quality always decreasing?

#54
I was revisiting a codebase I hadn't seen in 6 years and I gasped aloud at how pretty it was. I thought at the time: "Why don't I write beautiful code like this anymore?" and I think I have an answer (for my case). I excel at visiting these 10 year old plus hulks and doing a refactoring of the shortcuts and the bad solutions. Problem is that this rarely surfaces in my own current work which is more greenfields than I am comfortable with.

I'd love for some more contract work in this vein but I am unsure how to find it.

Re: Ask HN: Why is software quality always decreasing?

#56

Earlier quoted context omitted.

Perhaps I should update the question. I'm not referring to ALL software quality. I'm referring to the quality of codebases that are 1) old, 2) large, and 3) supported by many people. You make a good point though. Perhaps I just miss the good ol' days of working on small teams with small codebases that were pretty easily maintained.

Even with those caveats, it's unclear whether the premise is satisfied. The Linux kernel is old (old enough to drink!) large (and getting larger!) and supported by many people. Has its quality declined? I don't think so. It supports more hardware than ever. Kernel panics don't happen nearly as often as they used to. New features (BPF), make kernel programming easier. It's difficult to say that the Linux kernel's qual…

>> Kernel panics don't happen nearly as often as they used to

My earliest kernel I have used in something one might call production are 1.2.12 around 1995. I must say even then, with this early kernels I had no panics at all and much higher uptimes (patching for security wasn't as much of an issue at that time ;-) )

Re: Ask HN: Why is software quality always decreasing?

#57

Earlier quoted context omitted.

Even with those caveats, it's unclear whether the premise is satisfied. The Linux kernel is old (old enough to drink!) large (and getting larger!) and supported by many people. Has its quality declined? I don't think so. It supports more hardware than ever. Kernel panics don't happen nearly as often as they used to. New features (BPF), make kernel programming easier. It's difficult to say that the Linux kernel's qual…

People being up the Linux kernel on the same way they bring up Oprah as an example of being successful in America. 99.99999% of software in big corporations will not have even 5% of the quality of the Linux kernel. The reason the kernel has such a high quality is because of Linux being a dictator, training everybody in not always so nice ways to write code that doesn't break anything and that is maintainable. He care…

> 99.99999% of software in big corporations will not have even 5% of the quality of the Linux kernel.

Having done a lot of work on the kernel, I think you’d be surprised at the relatively low quality of a lot of kernel drivers.

The core code is generally quite good, but it’s not true that the kernel is full of pristine code.

I’ve worked at multiple companies where code quality standards exceeded a lot of the weirder stuff I’ve seen (and often fixed) in kernel driver code.

Re: Ask HN: Why is software quality always decreasing?

#58

Your ability to understand how bad software is has improved too. The ambition of software has increased in this same time. The industry is as a whole probably doing things better, for example - less ridiculous crunch periods at the organizations I've worked at.

Interesting take! I think this would apply to me personally. Though, I'm uncertain if it impacts old and large codebases. They could've theoretically been maintained by intelligent, experienced, and disciplined engineers for a decade even if their standards changed.

Re: Ask HN: Why is software quality always decreasing?

#59
I disagree with the assertion that quality is always decreasing.

For me, this is a game of perceptions where crappy software becomes popular and profit motive makes it risky to attempt iterations. No executive working at Microsoft is interested in the liability that would come with a win32 rewrite of Teams, even if the UX would triple in quality overnight.

If anything, the quality of most software should be dramatically better than ever before, especially when you factor in the relevant tools & ecosystems.

Post reply on HN