systemdesign/concepts softwarearchitecture softwareengineering

Gall’s Law | Laws of Software Engineering

Introduction

John Gall observed that successful complex systems start as successful simple systems. If you attempt to create a complex system from the beginning, it usually doesn’t work because there are too many unknowns you haven’t validated.

A Complex system that works evolves from a simple system that worked.

Do not build a large, complex platform from scratch.

  • Start with a minimal working platform.
  • Evolve it gradually.
  • Focus on user experience and real developer needs.

Origin

John Gall, an American pediatrician with a sideline in systems theory, published Systemantics: How Systems Work and Especially How They Fail in 1975. 30 publishers initially rejected the book before it became a cult classic.

The third edition (2002) of the book is named The Systems Bible.

Examples

Facebook started as a simple website for Harvard students. It was essentially a basic user profile system that worked at that small scale, then expanded gradually, adding features and handling more users. If Mark Zuckerberg had tried to build today’s Facebook from scratch in 2004, it would almost certainly have collapsed under its own complexity.

In the era of microservices, a common piece of advice influenced by Gall’s Law is: don’t start with microservices. Start with a monolith (a simpler architecture) that works. As it grows, identify pieces to split off into separate services. Those pieces have the benefit of prior existence,you know their requirements from the monolith, and thus are more likely to work once isolated.