A high-quality abstraction simplifies a system without misrepresenting how it behaves. It hides incidental implementation detail while preserving the semantics, constraints, failure modes, and material costs that clients need to use it correctly.
There is no universal scalar measure of abstraction quality. It is purpose-relative: the right abstraction for a one-off local tool may differ from the right one for a long-lived distributed platform API. But a robust evaluation usually spans the dimensions below.
| Dimension | Core question | What good looks like | Typical failure |
|---|---|---|---|
| Leakiness and fidelity | Does the simplified interface accurately predict relevant real behavior? | Clients need not understand internals for normal correctness; consequential costs, failures, and limits are explicit | A “simple” API conceals network calls, unbounded work, transaction boundaries, or retry behavior until production |
| Orthogonality and minimality | Does the interface |