Gall's law

Filed under: Software development, — Tags: Complexity, Fizz buzz, Iterative development — Thomas Sundberg — 2015-02-28

I saw a wonderful reference on Twitter the other day. It quoted something called Gall's law.

I looked it up and noticed that this seems to be a valid reference made by Dr. John Gall in a book from 1975.

Galls law says:
"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 is in my experience very true. I have seen many complicated systems and it is sometimes hard to understand how they came about. I usually assume that they started out as simple but were transformed into something complicated. But I am sure that this is not always the case since some of the systems I have seen just don't work.

The idea of starting out small and simple is appealing. And it is far away from the enterprisy stuff I see a lot of people trying to create. Have you ever seen the enterprise version of Fizz Buzz? It is an extremely complicated implementation of something that normally consumes less than 20 lines of Java code.

Starting out small and then iteratively adding functionality allows me to build working software gradually. I can deliver often and get feedback from the people who want the software. This is the way all software should be built but, unfortunately, very seldom is.

Acknowledgements

I would like to thank Malin Ekholm, Adrian Bolboaca and Alexandru Bolboaca for proofreading.

Resources



(less...)

Pages

About
Events
Why

Categories

Agile
Automation
BDD
Clean code
Continuous delivery
Continuous deployment
Continuous integration
Cucumber
Culture
Design
DevOps
Executable specification
Git
Gradle
Guice
J2EE
JUnit
Java
Javascript
Kubernetes
Linux
Load testing
Maven
Mockito
New developers
Pair programming
PicoContainer
Presentation
Programming
Public speaking
Quality
React
Recruiting
Requirements
Scala
Selenium
Software craftsmanship
Software development
Spring
TDD
Teaching
Technical debt
Test automation
Tools
Web
Windows
eXtreme Programming

Authors

Thomas Sundberg
Adrian Bolboaca

Archives

Meta

rss RSS