Live data from Hacker News

Heuristics for Effective Software Development: A continuously evolving list

holub.com

11–20 of 68 posts

Re: Heuristics for Effective Software Development: A continuously evolving list

#11

Sloppy thinking… new age bullshit… most of it collapses under mild scrutiny. Some of it is okay. I just don’t get, after decades and decades, how our industry continues to tolerate bullshit. Quality is not negotiable? Really? Negotiation is not collaboration? Really? This is not just wrong, it’s almost gaslighting.

You can really feel the thought leadership on this one, can’t you?

Re: Heuristics for Effective Software Development: A continuously evolving list

#12
This resonates with my thinking as well. Although something I’ve always been missing from people talking about agile in general, is more specifics on how collaboration can happen. Especially collaboration with ”the customer” (customer is a terrible term). I’ve learnt so much more from reading blogs by Teresa Torres than from any agilist about how to actually learn from what you deliver.

Re: Heuristics for Effective Software Development: A continuously evolving list

#13
post #10

Sloppy thinking… new age bullshit… most of it collapses under mild scrutiny. Some of it is okay. I just don’t get, after decades and decades, how our industry continues to tolerate bullshit. Quality is not negotiable? Really? Negotiation is not collaboration? Really? This is not just wrong, it’s almost gaslighting.

> quality is not negotiable? Really? I read this as "certain principles must be upheld at any cost" and I agree with that. E.g. if your project is dealing with people's health data, not securing that database is a cut on quality you just shouldn't make. Or to phrase it the other way around: If your project cannot reach that basic quality level, maybe it should be ended right away, because it clearly lacks funding/res…

The great thing about vague bullshit is that if you squint really hard, there's always a semi-plausible interpretation which makes sense. See also: fortune cookies, horoscopes.

Re: Heuristics for Effective Software Development: A continuously evolving list

#14
post #5
post #3

Very woolly. I was expecting more concrete things like * Use static types * Use CI and version control * Use schema-based data storage * Prefer function calls to events * Use formal verification if possible etc.

Interesting. Why function calls over events? And is it always applicable?

I suspect because it makes both data and control flow more explicit and traceable.

> And is it always applicable?

No heuristic is always applicable.

Re: Heuristics for Effective Software Development: A continuously evolving list

#15
post #10

Sloppy thinking… new age bullshit… most of it collapses under mild scrutiny. Some of it is okay. I just don’t get, after decades and decades, how our industry continues to tolerate bullshit. Quality is not negotiable? Really? Negotiation is not collaboration? Really? This is not just wrong, it’s almost gaslighting.

> quality is not negotiable? Really? I read this as "certain principles must be upheld at any cost" and I agree with that. E.g. if your project is dealing with people's health data, not securing that database is a cut on quality you just shouldn't make. Or to phrase it the other way around: If your project cannot reach that basic quality level, maybe it should be ended right away, because it clearly lacks funding/res…

That's the problem with this list: you can read it any way you like, derive whichever conclusions you want. But then you're only looking into a mirror. On its own, the list is just a lot of feel-good bullshit, mixed with stuff that's just wrong. It has very low information content.

> I read this as "certain principles must be upheld at any cost" and I agree with that.

But that's you reading things that aren't in the text. And by itself, it's not a good principle either:

- "certain principles" - which principles exactly? Of them, which ones are related to quality?

- "must be upheld at any cost" - any cost? There's few things in life that truly "must be upheld at any cost", and they're in the scope of morality, not software. Even "thou shalt not kill" is full of practical caveats.

Everything in software engineering is negotiable, all principles have a price. The important parts are all in the details: what exact principles we have, how they trade off against each other, what benefits do they bring, how much do they cost, how much is too much. This list doesn't touch any of it.

You continue:

> E.g. if your project is dealing with people's health data, not securing that database is a cut on quality you just shouldn't make.

Yes, now we're starting to see a glimpse of something useful - but it's still a bit too vague to work with. Consider:

- What is "health data" under consideration? For example, someone's smartwatch BPM and GPS log, a result of MRI scan, a list of visits at a clinic, and how old they are - these are all "health data", but fall into different qualitative categories, and merit different level of care in handling.

- What is "dealing with"? Storing? Forwarding? Processing? How? Giving access? To whom? Etc.

- What is "securing that database"? Are we talking access controls against the dev team? The company stakeholders? Securing against script kiddies? Securing against Mossad? In which particular way?

You may feel I'm splitting hairs here, but this is reality: quality is always negotiable, and day-to-day negotiations will happen at this level of granularity. Nobody has infinite budget to respond "yes" to any idea that could be presented as "increasing quality" or "increasing security of medical data".

Developing lists of principles and heuristics is of great value - but this list isn't that. The heuristics you want need to account for the reality we live in (including working around organizational dysfunctions and individual cognitive failures). And they need to be formulated in practical terms, or they'll forever be words on paper. Their only job is to help you answer the question, "is it worth it?", every time you consider two options of different quality.

Re: Heuristics for Effective Software Development: A continuously evolving list

#16
post #3

Very woolly. I was expecting more concrete things like * Use static types * Use CI and version control * Use schema-based data storage * Prefer function calls to events * Use formal verification if possible etc.

That's the technical side of things. But there is also a human side of software development and this is even more important to get right than the technical side.

Re: Heuristics for Effective Software Development: A continuously evolving list

#17

Sloppy thinking… new age bullshit… most of it collapses under mild scrutiny. Some of it is okay. I just don’t get, after decades and decades, how our industry continues to tolerate bullshit. Quality is not negotiable? Really? Negotiation is not collaboration? Really? This is not just wrong, it’s almost gaslighting.

I mean you can have worse quality if you want. But won't have the effect you want. Aka speed. In fact the opposite is most likely to happen.

Re: Heuristics for Effective Software Development: A continuously evolving list

#18
post #5
post #3

Very woolly. I was expecting more concrete things like * Use static types * Use CI and version control * Use schema-based data storage * Prefer function calls to events * Use formal verification if possible etc.

Interesting. Why function calls over events? And is it always applicable?

Not always applicable but it makes debugging far easier, reduces the chance of events being lost and makes it easier and safer to understand and modify code.

Re: Heuristics for Effective Software Development: A continuously evolving list

#19
post #8
post #3

Very woolly. I was expecting more concrete things like * Use static types * Use CI and version control * Use schema-based data storage * Prefer function calls to events * Use formal verification if possible etc.

> * Use schema-based data storage Great idea until it isn't. The article is full of bullshit but one thing is very true. We can't predict the future, especially so when we deal with humans and society where stuff changes fast. Strict schemas are more pain than gain here. > * Use formal verification if possible Wonder when F* and the like get mainstream so that "if possible" becomes "almost always".

Schemas don't mean that formats can't evolve.

Re: Heuristics for Effective Software Development: A continuously evolving list

#20
post #13
post #10

Earlier quoted context omitted.

> quality is not negotiable? Really? I read this as "certain principles must be upheld at any cost" and I agree with that. E.g. if your project is dealing with people's health data, not securing that database is a cut on quality you just shouldn't make. Or to phrase it the other way around: If your project cannot reach that basic quality level, maybe it should be ended right away, because it clearly lacks funding/res…

The great thing about vague bullshit is that if you squint really hard, there's always a semi-plausible interpretation which makes sense. See also: fortune cookies, horoscopes.

You are right. But I read this as someones collection of ideas anways not as universal priciples that must be applied everywhere. I tend to favourably read into other peoples statements if in doubt (especially on HN)
Post reply on HN