#system #system-failure #unintended-consequence #api #software #design
idea
Also called Hyrum's law, the law of implicit interface states that all behaviors of your APIs, be them voluntarily or not, will be depended upon, and therefore create friction to change.
The consequence is that foresee-able changes (such as leaky abstractions) should already be accounted for, and changes for APIs with significant number of consumers, even when seemingly internal, should be executed through change management (and versioning of the API).
Examples are:
- fixing typos in error messages - which consumers might use
- impact on response times - which might trigger timeouts if combined with other factors.
links
- YAGNI {todo: write YAGNI}
reference
-
With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.