← Patterns

Software Laws

Hub note for seven classical laws that govern code, architecture, teams, and organizations. Each law has its own atomic note — this page covers why they matter as a set and how they interact.


The Laws

LawCore PrincipleAtomic Note
Gall’s LawComplex systems evolve from simple ones that worked — never design from scratchGalls-Law
Goodhart’s LawWhen a measure becomes a target, it stops being a good measureGoodharts-Law
Amdahl’s LawSequential bottlenecks limit maximum speedup from parallelizationAmdahls-Law
Conway’s LawOrg structure → system architecture — you can’t fix one without fixing the otherConways-Law
Chesterton’s FenceUnderstand why something exists before removing itChestertons-Fence
Lehman’s LawsSoftware complexity increases unless actively reduced — there’s no steady stateLehmans-Laws
Postel’s LawBe conservative in output, liberal in input — across code and communicationPostels-Law
Zawinski’s LawEvery program attempts to expand until it can read mail; those that can’t are replaced by ones that canZawinskis-Law

Why These Matter

These aren’t academic curiosities — they’re the laws I keep running into when building systems, leading teams, and making technical decisions. Each one has bitten me or someone I’ve worked with. They apply at every level: code, architecture, team design, organizational structure.


How the Laws Reinforce Each Other

InteractionWhat Happens
Goodhart + AmdahlThe fastest way to speed up a system is to remove quality checks (Amdahl). But quality checks defend against metric gaming (Goodhart). Tension: speed vs. correctness.
Conway + PostelConway says boundaries shape systems. Postel says systems should be tolerant across boundaries. Together: draw boundaries carefully (Conway), but don’t couple tightly across them (Postel).
Gall + LehmanGall says start simple and evolve. Lehman says evolution creates complexity. Together: add one thing at a time (Gall), periodically simplify (Lehman).
Chesterton + ConwayChesterton says understand constraints before removing them. Conway says boundaries shape what you can see. Together: make existing constraints visible across boundaries. If a boundary hides a fence, someone will unknowingly tear it down.
Goodhart + ChestertonA metric exists for a reason (Chesterton). But optimizing for it destroys its value (Goodhart). The metric is a fence — understand why it was built, but don’t over-rely on it.

The Management Layer

These laws aren’t just about code. They’re about any complex system — including organizations:

LawCode ImplicationOrganization Implication
Postel’sStrict APIs, tolerant parsersPrecise commitments, generous interpretation
Conway’sOrg chart = architectureTeam structure is the first architectural decision
Amdahl’sOptimize the bottleneckAdding headcount doesn’t speed up coordination-bound work
Goodhart’sMetrics get gamedMeasure what matters, pair metrics with counter-metrics
Gall’sEvolve, don’t rewriteIncremental process change beats big-bang transformation
Lehman’sComplexity grows unless foughtInvest in simplification or drown in entropy
Chesterton’sUnderstand before removingNew leaders: learn before you “fix”

Origin

Curated from the design priorities document in the pipeline-skills project (Dave’s AI agent pipeline), where these laws were applied specifically to agent-orchestrated software delivery. Extracted and generalized here as a reference for technical strategy, management philosophy, and systems thinking broadly.

The pipeline-skills framing is valuable because it shows these laws aren’t abstract — they govern real design decisions about where to put human checkpoints, how to structure stage boundaries, when to automate, and how to fight entropy.


Cross-References