← Back

Out of the Tar Pit Paper

I keep running into this paper. Not because I went looking for it, but because it shows up inside other things I read. A talk by Rich Hickey about why Clojure looks the way it does. A blog post on system design. Someone explaining a choice they made in an architecture review. The reference is always the same: "Out of the Tar Pit," by Ben Moseley and Peter Marks, 2006.

The paper makes one claim and builds everything around it. Mutable state is the biggest source of complexity in software. Not the language. Not the volume of code. State — specifically, the kind that changes. The more things in a program that can change, the more combinations you have to hold in your head to understand it. At some point, you can't. That's the tar pit.

It also draws a line between two kinds of complexity. Essential complexity comes from the problem itself — it can't be removed. Accidental complexity comes from how the problem was solved — the language, the architecture, the choices made along the way. Most systems, the paper argues, carry far more accidental complexity than they need to.

I hadn't built enough large systems to have felt this problem firsthand before I read the paper. What I noticed instead was the shape of its influence. Hickey didn't just cite this paper — he built a language around its central idea. Immutability by default, persistent data structures, a deliberate resistance to unnecessary state. Other people I read reach for the same essential/accidental distinction to explain why a pattern exists or why a rewrite was worth it.

That's what makes the paper interesting to me — not that I've tested its claim against my own scars, but that it keeps functioning as a shared reference point. People who never talked to each other, working on completely different systems, arrive at the same paper to explain the same kind of pain. It gave a name to something that a lot of people were already circling.

That's probably why it keeps finding me, even without me looking for it.

*written with Claude Sonnet 5

Reference