§ 88
Churn Rule
When the team that changes shared infrastructure can push the migration onto its users, the cost of the change multiplies by the number of users.
Keep in mind
Whoever changes shared code pays for the migration
What to do
If you own a library, service or platform, budget the migration as part of the change: move the callers yourself, or change in place in a backward-compatible way. Do not ship a deprecation notice and a deadline as the migration plan. Invest in the tooling that makes cross-codebase changes cheap, and send each change to the owning team for review instead of landing it unseen.
Why it happens
Each consuming team meets the change cold: it ramps up on a problem it has never seen, solves its own instance and throws the knowledge away. Across hundreds of teams that is hundreds of shallow learning curves, and dependent projects spend progressively more effort just keeping up. The team that made the change never sees the bill, so nothing pushes it to change less often or make changes cheaper. Requiring the changer to do the migration puts the cost where the decision is made, and a few experts who learn the problem once can apply it everywhere.
When it stops applying
Code Ownership: people who change a codebase they do not live in miss its local reasons, so a central migration still needs the owning team's review, and some changes only its owners can make safely.
Source
Titus Winters, "What Is Software Engineering?", in Winters, Manshreck & Wright, Software Engineering at Google (O'Reilly, 2020), ch. 1 — the 2012 "Churn Rule": "infrastructure teams must do the work to move their internal users to new versions themselves or do the update in place, in backward-compatible fashion."
Read the sourceCite this
Related laws
- 87Beyoncé RuleIn a shared codebase, the behavior no test checks is the behavior that changes without warning.
- 08Hyrum's LawWith enough users, every observable behavior of a system, bugs included, is depended on.
- 73ToilManual, repetitive operational work grows with the service and, left unchecked, crowds out engineering.
- 97One-Version RuleWhen consumers may choose which version of a shared dependency to use, each choice becomes a conflict for someone who never made it.