« Beeminder home

Beeminder Blog

A stamp collection

There are a lot of things in the category of “nerd tendencies I’ve had to unlearn”. I often turn them into capital-P Principles as a way to drill them into my head. Eventually I intend to collect them all into a meta post but here are a few random examples in the meantime: the Anti-Magic Principle, the Anti-Settings Principle, the Shirk-n-Turk Principle, and the Anti-Robustness Principle. (Hover over the links for the nerd tendencies those are counterpoints to.)

Today I have one that’s a variant of the classic Knuth-ism [1] that premature optimization is the root of all evil.

“Don’t create premature ontologies”

Knuth was saying that programmers tend to spend too much time fussing with their code, making it more efficient. You should profile your code to find the actual bottlenecks and only optimize the code that’s actually slowing your application down.

I claim that people (well, a certain kind of nerd, including past-me) make a similar mistake with ontologies. They’ll start a Discord server and create an elaborate set of channels for all the topics they anticipate people wanting to discuss. Or create an elaborate set of labels for a new code repository in GitHub, or for their email, or for a filesystem.

So the Anti-Ontology Principle is this: Don’t add categories speculatively. Start with exactly one category in your ontology and add new ones only in response to an actual thing in the actual world happening that makes you actually need a new category. If you delay that kind of organizing until there’s a clear and present need, you save yourself a lot of wasted work.

In other words, start with a single umbrella category and then branch it as needed. Don’t create premature ontologies!


Provenancial postscript: I’ve mentioned the Anti-Ontology Principle in various places before (the Beeminder forum, a previous blog post, and Twitter) but I refer to it often enough that it wanted to be its own blog post. Et voila.



[1] I almost clarified that it was originally Hoare who said it, but then I found this claim on Hacker News:

Actually that was Donald Knuth — it’s an urban legend that it’s an urban legend that it was originally Knuth. Hoare was quoting Knuth, but Knuth forgot he said it, and re-mis-attributed the quote to Hoare.

So I officially don’t know what to believe but calling it a Knuth-ism feels pretty apt regardless.

PS: No, I’m too epistemically obsessive to shrug that off. I’ve now found some research by Shreevatsa R that convinces me that it really was Knuth after all. Phew!