“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.” -John Gall
I first encountered that opening quote from John Gall’s Systemantics back in 2000. At the time I thought it was an amusing, albeit cynical, assessment of how systems work. By systems Gall was not referring to computer programs — it was 1975 and the complex, networked, firewalled, data-based systems of today were only hinted at. But business processes and methodologies were in place and Gall’s book railed against both bad system design and the futility of trying to design complex working systems.
During the past 15 years or so, my opinion of Gall’s quote (which in systems studies is known as Gall’s Law) has changed. It’s not cynical — it is brilliant. Gall’s insight is a deeply important one that has ramifications; not just for corporate processes, but also for engineering, politics and biology.
When one encounters a complex working system it is often natural to assume that some clever person or persons created the system out of thin air. Of course, this is absurd if you think about it — we all build on the knowledge of our predecessors. And systems evolve. Smart phones didn’t spring from Steve Jobs’s skull like Athena from Zeus. Before the iPhone, there was an evolutionary tree from the radio car phone to the brick to the flip phone to feature phones with apps — and what about Blackberry and the Palm Treo? These predecessors are quickly forgotten in the wake of a more successful working system, but it is the nature of the human mind to marvel at the momentary and not reflect on the complex history that led up to the present.
Gall’s insight is true for many “mysteries” of human history, such as the Antikythera mechanism. This mysterious device is an ancient mechanical computer. It may be two millennia old; yet, it contains precise gears that simulate complex astronomical behavior to allow date calculations to be performed. When faced with the complexity of this ancient device, many people come to the conclusion that it was either built with the help of aliens or was the product of some amazing savant. Using Gall’s law as guidance, the more reasonable conclusion is that before this device was built there were simpler devices. Earlier machines used gears and earlier designers worked with mathematicians and astronomers to turn their knowledge of the solar system into machines to simulate their understanding. There would not have been a single device such as this. There would have been prototypes, and more primitive predecessors that worked, that were not as complex, and which have been lost to history. But they certainly must have existed.
One of the more recent developments in software design is the adoption of a methodology known as Agile Software Development. In compliance with Gall’s law, the Agile methodology itself evolved from other software development methods — taking those parts that worked and rejecting those parts which did not. Agile has several characteristics — more than are within the scope of this article — but the one I find most constructive is that throughout the lifecycle of the project you develop working systems first, and then elaborate on them. Agile Software Development is Gall’s Law in action. A software project is broken up into development segments called “sprints” during which working prototypes are built. Developers work with users to ensure that requirements are captured. As the project develops, clients and developers share insights into how the software can work better. New requirements emerge. Through continuous collaboration, the project evolves and there is a much greater chance that the end product will work properly, give the customers what they need and hopefully, be the kind of complex working system that leads people to wonder, how did they come up with this?
Questions or comments? Contact Blake at Blake.Smith@ApexBPM.com