I had the opportunity to attend a workshop about the forces in software by Michael Feathers in DDD Europe this year and, even though it was a bit more abstract than what I was expecting, I went from entering as a near-newbie on the subject to having a mental model on how software systems react to the different forces inherent to them and the organizations they live in.
The core takeaway for me is the idea that entropy is unstoppable, software, in a similar way to reality, has a tendency to disorder, and all that we can do is try to constrain and encapsulate the set of forces that cause the growth to accelerate.
The way I see it, complexity sits at the core, with different forces pulling in every direction, interacting and introducing chaos into the system — and one of those forces is entropy.
I really liked his split of forces into two categories, entropic / natural forces and organizational / systemic forces, it divides the mental model into the ones that are preventable and those that aren’t.
Entropic / natural (e.g drift) forces are those inherent to the software system in hand, and the organizational forces constrain the way you’re able to deal with the ever-growing complexity and chaos of the system.
He also introduced the concept of a budget for disorder, seen as a certain limit at which the disorder of your system exceeds what you’re able to deal with via non-breaking refactoring techniques, and more large-scale efforts are needed to bring it back under control. That limit changes from team to team, varies with the amount of experience with the system, how old the team is, the turnover, etc, but it feels as if knowing the budget of disorder a team is comfortable with is a really nice way to approach hotspots in a codebase.
I tried to capture all of this in a small visualization: entropy at the core, the forces orbiting around it — including a couple I didn’t get to here, like Conway’s and Hyrum’s Law. Drag them around and see if you can keep the system under its budget for disorder.
entropy never stops — past the budget for disorder, only a full rework brings it back
All in all, it was a wonderful workshop full of small insights around the concept.