- Show what it does, hide how it does it.
- Simple, easy to use, no weird gotchas.
- Its shape should tell you how to use it.
- Composable, the most important and the rarest.
- Shaped like the problem, not like how it was built.
- Make invalid states impossible.
- Tradeoffs are fine, big compromises aren’t.
- Good ones feel obvious and disappear.
- If you don’t understand how something works, it better be a good abstraction.
- Too many abstractions hurt when they’re bad ones, or when you don’t know why you’re using them.
Good abstractions
October 3, 2026