Gall's law

From Wikipedia, the free encyclopedia

Gall's Law is a rule of thumb for system design from John Gall's book Systemantics: How Systems Really Work and How They Fail:

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.

This law is essentially an argument in favour of underspecification: it can be used to explain the success of systems like the world wide web and blogosphere, which grew from simple to complex systems incrementally, and the failure of systems like CORBA, which began with complex specifications. Gall's Law has strong affinities to the practice of agile software development.