💾 Archived View for dioskouroi.xyz › thread › 24921827 captured on 2020-10-31 at 00:50:10. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Software correctness is a lot like flossing

Author: Tomte

Score: 22

Comments: 5

Date: 2020-10-28 17:46:06

Web Link

________________________________________________________________________________

m0ther wrote at 2020-10-28 23:17:10:

"correctness" != "correct".

I don't have time for distracting meta-work with questionable efficacy. My prime requisite is to deliver actual value, not dubious internal metrics.

One of our jobs as programmers, leads, or architects is to determine, of many strategies to solve a problem, which are (or may be) appropriate for the current context. Testing is done the same way; and parameters for testing are decided by the QA department. Any strategy that claims to be universally applicable (like anything labelled "clean" or "correct" or "best practices") is likely at least partially bullshit. Every problem is different, and every requirement requires special care to ensure what's being done is appropriate for achieving both long and short term goals within time allotted.

It's a given that the business already pushes as hard as they can on deadlines. If I have to cut effective quality assurance, or make compromises on what will and won't be done a maintainable or performance oriented manner to fit in meta-work that really doesn't matter; I'm going to pick a fight.

The development team has a finite bullshit budget, and the business has generally spent our bullshit budget before we get to your correctness bullshit.

The very notion of universal "software correctness" within a system of sufficient complexity is reductive and borderline offensive.

ctvo wrote at 2020-10-29 02:52:22:

> I don't have time for distracting meta-work with questionable efficacy. My prime requisite is to deliver actual value, not dubious internal metrics.

What items mentioned in the linked post do you consider meta-work? Unit tests (TDD), types (type systems) or formal methods (to prove hard to replicate edge cases like race condition perform as expected, for example)?

The rest of your reply seems to be directed at points the post never made. Nothing was written about universality of application or that trade-offs didn't matter. The bulk of the post was how the inability of these methodologies / tools to gain traction may be because they're inconvenient... which from what I can tell you seem to agree with.

m0ther wrote at 2020-10-29 03:44:12:

In my specific case, TDD; and unit testing as religion in general. I am sure others can make similar arguments against the other two in the types of work they do. My point here is that every project is different, and that projects that do not use one or any of these techniques are not inherently buggy.

I believe strongly in manual testing and automated integration testing for the type of work I do (when executed by an experienced QA); but I have not seen unit testing save anywhere near the time or effort it requires. I am sure there are types of projects for which unit testing solves more problems than it creates, but I have not worked on that sort of project. In my experience, unit testing stops the type of bugs you wouldn't have had anyway, and doesn't do much to mitigate integration bugs (which are the vast majority of bugs I've seen). I've also seen TDD make developers overly myopic. Passing tests do however make for a conveniently reassuring metric to give to business leaders who don't care to understand what they mean or how software is built.

He/she is not narrowing to a specific type of programmer, or a specific type of programming. I am explaining why I "don't care about correctness".

Forgive me if this article is meant to be read in an academic context; I am not an academic.

tshanmu wrote at 2020-10-29 08:35:30:

Wasn't there a few papers suggesting flossing doesn't work?

jdbernard wrote at 2020-10-29 15:01:25:

I was thinking the same and it actually makes the analogy even better. Many people don't floss because it's tedious, annoying, a little bit painful, and they see no actual benefit. Similarly many people ignore some of these correctness practices because they can be tedious, annoying, a little bit painful, and they see no benefit.

Everyone sees the value of brushing, but many don't see the value in flossing. Everyone sees the value in some sort of quality assurance (be that a manual QA process, automated unit & integration testing, etc.) but don't see the value in the formalized methods proposed by the author.