Gall’s law

Gall’s law is a rule of thumb for systems design, named after the American pediatrician and author John Gall. It states that a complex system that works is invariably found to have evolved from a simple system that worked, whereas 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.

Gall first set out the idea in his 1975 book General systemantics, republished in 1977 as Systemantics: How Systems Work and Especially How They Fail. The statement appears among a larger collection of "laws of systems" that Gall assembled from analyzing how systems of all kinds succeed and fail. Although widely cited as "Gall’s law", the original text does not label it as such.

The law is essentially an argument for underspecification. A working simple system can be grown incrementally into a complex one, because each step is validated by the behavior of the system that came before it. A complex system specified in full up front has no such validation, and the interactions between its many parts overwhelm any attempt to get them right in a single pass.

In software

Gall was writing about systems in general, but the law has been taken up most enthusiastically in software. It is an argument against big design up-front, and an argument for approaches that grow a system from a small working core, such as walking skeletons and iterative and incremental development. It shares its instinct with "worse is better": a simple implementation that works and can evolve tends to outlast a more complete design that does not.

The law has strong affinities with agile software development and its preference for working software delivered early and refined under feedback. The "do the simplest thing" maxim of extreme programming is a direct expression of the same instinct.

Gall’s law is frequently paired with observations about complexity. Where Gall describes how complex systems come to be, the broader literature on software complexity notes how hard they are to design correctly in one pass, and how readily they drift toward big balls of mud once the original simplicity is lost.

Reception

One of the first systems designers to quote Gall’s law was Ken Orr, in 1981. Grady Booch quoted it repeatedly from 1991 onward, helping it reach a wider software audience. It is commonly used to explain the success of systems that grew from simple to complex incrementally, such as the World Wide Web, and the failure of systems that began with complex specifications, such as CORBA.

See also

References

  • Gall, John (1975). General systemantics: an essay on how systems work, and especially how they fail. General Systemantics Press.
  • Gall, John (1977). Systemantics: How Systems Work and Especially How They Fail. Quadrangle / The New York Times Book Company.
  • Gall, John (2002). The Systems Bible: The Beginner’s Guide to Systems Large and Small (3rd edition of Systemantics). General Systemantics Press.