All laws

§ 88Organization

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.

Google

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 source

Mark: Public domain · Wikimedia Commons

Cite this

Hammurabi, § 88, “Churn Rule.” https://kanywst.github.io/hammurabi/laws/churn-rule/

BibTeX
@misc{hammurabi-churn-rule,
  title  = {Churn Rule},
  author = {{Hammurabi contributors}},
  note   = {Hammurabi, § 88},
  url    = {https://kanywst.github.io/hammurabi/laws/churn-rule/}
}

Text under CC BY-SA 4.0: credit Hammurabi and link the article.

Related laws

Suggest a correction on GitHub