Gall's Law Complex Systems Must Evolve From Simple Ones

You cannot design a complex working system from scratch. Every complex system that actually works was evolved from a simpler system that already worked. Attempts to skip this step produce systems that are dead on arrival.

"A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system."

John Gall derived this principle from Le Chatelier's Principle in chemistry the idea that systems always "kick back" against perturbations, opposing changes to their current state. Gall extended this to all systems: they should not be thought of as benign entities that will faithfully carry out their creators' intentions. Over time, systems come to oppose their own proper functioning. New systems create new problems. Systems tend to grow, and as they grow they encroach.

This maps precisely to what the Santa Fe Institute researchers discovered about complex adaptive systems. Holland found that adaptation works through revision and recombination of building blocks not through top-down design. Cells became tissues, tissues became organs, organs became organisms. The hierarchical, building-block structure of nature exists because it is the only architecture that allows learning and evolution to work. Computer scientists know this as the divide-and-conquer principle, but biology discovered it first: when large organisms appeared 570 million years ago, natural selection assembled existing single-celled creatures rather than designing new blobs of protoplasm from scratch.

The implication for builders is uncomfortable but liberating: start small, ship something that works, and let it grow. The urge to design the perfect system before building anything is not just impractical it is structurally doomed. Even AI-generated code at massive scale does not change this. The laws that limited Forrester continue to bind: the system always kicks back.

Takeaway: Ship a simple system that works, then evolve it the alternative is not a better design, it is a system that never works at all.


See also: Complexity Has Three Sources | Choose Boring Technology | Make Your Failure Paths Cheap | Shifting Baselines Make Decline Invisible