About Hyrum's Law


Hyrum’s Law

An observation on Software Engineering

Put succinctly, the observation is this:

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.

from Hyrum Wright (@hyrumwright)

quoted in: Software Engineering at Google: Lessons Learned from Programming Over TimeSX379_BO1%2C204%2C203%2C200

So that Hyrum’s Law is is very interesting and very true

despite all the good practices, or seen as good practices, you could adopt
like using semantic versioning, defining a README for your project (for the more obvious ones) to many many many others …

basically if you produce code to be reused by others, you are basically fucked

someone somewhere will rely on something undocumented in your library, a default behaviour from some config files (that was originally and error), a side effect of doing A after B, etc.

in such a way that even if you pacth, update, fix bugs, etc.
you will always break someone else code

“always” to take with a grain of salt, depends mainly on how many do use the library
and how long this library is out there to be used

this also explain why you have interface, getter and setter, etc.


It’s so true in gamedev! For my first big game, Cards Wars, which I published 10 year ago to the internet, I received so many mutually blocking feature requests, so that I created a screen to let the users set up their rules:

1 Like