All Posts
Engineering Philosophy1 min read

The Entropy of Codebases

On the thermodynamic inevitability of software decay, and the architectural disciplines that slow it.

Every codebase tends toward disorder. This is not a metaphor — it is a direct application of the second law of thermodynamics to information systems.

Entropy as a Design Primitive

When we speak of "technical debt," we are describing accumulated entropy: the gradual increase in the number of states the system could be in that we did not intend. Each shortcut, each undocumented assumption, each implicit coupling adds to the disorder.

The implication is uncomfortable: entropy is the default state, not the failure state.

The Cost of Order

Maintaining low entropy requires continuous energy input. In software terms, this means:

// High entropy: implicit coupling
function processUser(id: string) {
  const db = getGlobalDb() // hidden dependency
  return db.users.find(id)
}
 
// Lower entropy: explicit, constrained
function processUser(id: string, db: Database): User | null {
  return db.users.find(id) ?? null
}

The Practical Consequence

The best engineers I have worked with treat entropy-reduction as a first-class concern — not something done after the feature ships, but woven into the initial design. The question is never will this decay, but at what rate, and can we measure it.