View on GitHub
Icon for Abstraction

Abstraction

An abstraction is a bet about what you can afford not to think about.


An abstraction hides complexity behind a simpler surface. requests.get(url) conceals sockets, TLS handshakes, redirects, and connection pooling behind six characters and a string — and the concealment is the product. The art isn't hiding complexity; anything can hide complexity. The art is choosing which complexity to hide, and the test is For Humans: a good abstraction matches the shape of human thought, so that the common case costs nothing and the rare case is still reachable. urllib2 was an abstraction too. It just bet wrong about what people needed to ignore.

Everything Is One

The concept doesn't belong to software. Language is an abstraction over experience — the word "dog" compresses a million particular animals into a handle you can pass around, which is why language works like an operating system for consciousness. The Archetypes are abstractions over the psyche: the Great Mother is not any mother but the interface every mother is an implementation of. The pantheons abstract the forces of the world into nameable, negotiable persons — Mythology as the psyche's API documentation. Music theory abstracts vibrating air into keys and functions. And the Table of Correspondences is the extreme case: a single grid claiming that planets, letters, gemstones, and sephiroth are all views over the same underlying table.

Leaks

Every abstraction leaks — the hidden complexity resurfaces exactly when you can least afford it. The network times out, the metaphor breaks, the archetype fails to fit the actual person in front of you. This isn't failure; it's the terms of the deal. An abstraction is a loan of simplicity, and the leak is the interest payment. The skill is knowing what's underneath well enough to drop down a level when the surface gives way — and then climbing back up, because living at the bottom is no way to live.

Related Knowledge