Gall's Law

Mar 19, 2022
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.

Simple is hard. But that's why theres inherent value in iteration (and it follows, the value in change velocity).

It tells us to keep our API surface small – because if successful, it will eventually grow (even with the most disciplined authors).

Gall's Law has a lot to do with common startup advice: think big, start small. Pick an idea with an eventually large total addressable market, but start with a small enough one where you can win.

Conversely, it's why startups have an advantage against incumbents. Complex systems need to be backwards compatible and are tough to change. Simple systems can move faster. Optimization is fragile.

Finally, the last part of Gall's Law is that you cannot design a complex system from scratch. Joel Spolsky wrote about this in Things You Should Never Do, Part I (spoiler: it's doing a full rewrite of a working program).