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.