Hacker News new | past | comments | ask | show | jobs | submit login
On hygiene, intellectual and otherwise (1989) (utexas.edu)
78 points by awelkie on Sept 18, 2017 | hide | past | favorite | 20 comments



"The Royal Surgical Society even issued a strongly worded Manifesto..."

"the Department of Defence declared a moratorium on all funding of sterilization research..."

I can find no evidence that such a manifesto ever existed or that the DoD ever took such an action. When I search for these, the top link is this essay. I know there was resistance to sterilization, but I suspect Dijkstra may have been exaggerating it to make his point.


Definitely an exaggeration. This EWD is meant to satirize the position of people who argue against certain development approaches that might yield higher quality software by comparing them to the fools (who actually did exist) that argued against sterilization. And then he takes it further.

Ironically, of course, the DoD did fund the research and development of several programming languages and tools that would have offered precisely the hygiene Dijkstra would like to see in software development. Specifically I'm referring to Ada. Which was rejected by the industry (for various reasons, some legit and some not).


> the DoD did fund the research and development of several programming languages and tools that would have offered precisely the hygiene Dijkstra would like to see in software development.

No tool will force you to wash your hands. Hygiene is a matter of knowledge, and discipline ; and it's mostly unrelated to the tools you're using.


Uhm, this is wrong. Checklists. You can cheat the checklist, but it makes washing your hands a matter of following known procedures, not knowledge and discipline.

Like, airlines cut down on pilot errors through checklists and improving procedures, not by making pilots more knowledgable and disciplined.


A checklist is a mere piece of paper without the discipline to use it every time.


Discipline can be structural and social. You still do better with a checklist; otherwise you're limited to a memorable meme. Or were you making a joke? (Sorry if you were)


But tools make it easier. I can write damned fine assembly code. But if you give me a language and tools that can ensure the guarantees I've tried to compute by hand I can get much better results, much faster, and get much more done.


"What killed Smalltalk? it was just too easy to make a mess" (Ward Cunningham)

The power of your tools is an orthogonal issue.

It isn't related to the discipline and cleanliness issue: for example, dynamic typing allows you to make design miracles, as well as stinking piles of obscure-broken-beyond-repair code. Actually, a lot of powerful tools have this double-edged sword quality: dynamic typing. C++ templates. shared_ptr/garbage collection. inheritancy. lambdas/closures. "eval". monkey patching. tests (!).

Sure, tools like Coq or even Rust's static type system will provide, at compile time, extra guarantees that your code will work as intended.

However, they won't provide guarantees that your program will be easy to maintain/modify. Actually, if misused, they could have the opposite effect (i.e as soon as you try modifying the smallest bit of code, compilation/checking fails with unhelpful error messages).

Don't get me wrong: good tools are important, and nobody's going to make me write a webserver in assembly language, or a NES emulator in PHP!

However, in my experience, their impact on code maintainability is negligible in front the impact of the developper herself. Ultimately, it all hinges on who's writing the code.


Reads to me as an allegory very loosely based on the very real and sad story of Ignaz Semmelweis: https://en.wikipedia.org/wiki/Ignaz_Semmelweis


He is obviously being facetious. You can tell by the time you reach the paragraph about nurses; it goes too dark even for medicine history.

I assume surgeons = programmers, nurses = QA. No idea what the other fictional entities map to though.


It was unclear to me when reading this if this was meant to be a true history or an allegory for something that was actually happening in the science world at the time – as in "imagine if the scientific world had reacted to surgical sterilization the way we're reacting to X right now." But there's no context here as to what X might be if that's what he intended.


It's an exaggerated satirical version of real life history of practice of washing hands.

> Despite various publications of results where hand washing reduced mortality to below 1%, Semmelweis's observations conflicted with the established scientific and medical opinions of the time and his ideas were rejected by the medical community. Semmelweis could offer no acceptable scientific explanation for his findings, and some doctors were offended at the suggestion that they should wash their hands.

https://en.wikipedia.org/wiki/Ignaz_Semmelweis


"We know that no responsible scientist guesses his formulae but derives them..."

Are you sure about that, Dijkstra? Richard Feynam seems to disagree:

"In general, we look for a new law by the following process. First, we guess it (audience laughter), no, don’t laugh, that’s really true. Then we compute the consequences of the guess, to see what, if this is right, if this law we guess is right, to see what it would imply and then we compare the computation results to nature, or we say compare to experiment or experience, compare it directly with observations to see if it works.

If it disagrees with experiment, it’s wrong. In that simple statement is the key to science. It doesn’t make any difference how beautiful your guess is, it doesn’t matter how smart you are who made the guess, or what his name is… If it disagrees with experiment, it’s wrong. That’s all there is to it.”

- Richard Feynman


Are you sure the meaning of "guess" in each quote is the same as in the other? I'm not convinced that Dijkstra's comment, in context, contradicts Feynman's.


Is that truly the history of the reaction to boiling instruments?

This part seems relevant today:

> We know that no responsible scientist guesses his formulae but derives them...

I am troubled by the epistemological blankness of our age of multi-gigabyte mathematical proofs and inscrutable multilayer neural nets....


Since there's a bit of confusion in the comments, this is a well done work of satire, taking things software developerment individuals and organizations have said, and showing their ludicrousness by having the medical profession say them.


Dijkstra seems to be overstating the Swift opposition to a very Modest Proposal.

n.b. this is a very certain kind of satire. It's not a literal retelling of something that happened.


Under "otherwise", I suggest applying hygiene to the multitude ideas we have for projects.

Treat them as flowers in a garden. Cultivate some, weed out others. The most focus should be on the few that flourish best, and they'll be products.


So what exactly is the intellectual hygiene he refers to? Being rational and overcoming one's biases?


Formal verification of software:

We know that no responsible scientist guesses his formulae but derives them and in the same vein we derive our programs by formal calculation. This is a time-honoured tradition, formalization is just a matter of intellectual hygiene, and we should be quite confident that, indeed, this undertaking makes all the sense in the world, but we hesitate and are ambivalent about it because, all around us, our hygienic practices are opposed, derided and ridiculed.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: