The Computing Series

Tradeoffs

AT8 — Coupling/Cohesion: A well-designed abstraction reduces coupling by hiding implementation. Callers depend on the interface, not the implementation. This means implementations can change independently. The cost: the interface itself becomes a coupling point. Changing an interface requires changing every implementor and every caller. Good interfaces are therefore conservative — add methods rarely, remove methods never.

AT3 — Simplicity/Flexibility: A narrow interface is simple. A wide interface is flexible but harder to implement and harder to reason about. A BlobStore with four methods is easy to implement against any storage backend. A BlobStore with twenty methods — supporting metadata, tagging, versioning, lifecycle policies — is flexible but forces every implementor to cover the full surface, including implementors that only need the basics.

Read in the book →