Small Interfaces
A note on why small interfaces tend to age better than clever ones.
I keep coming back to small interfaces.
Not small in the sense of underpowered, but small in the sense that they ask less from the caller. They expose fewer choices. They make invalid states harder to express. They do not require reading half the codebase before making a safe change.
Clever interfaces often feel good when they are new because they compress a lot of possibility into a small surface. The cost arrives later, when every call site must remember which possibility is active.
Small interfaces make software calmer.