We developers, architects of the abstract (corny, sorry), often craft code that rivals a spider’s web in complexity and cunning. But, what if this inclination towards intricacy is our pitfall? Let’s explore why simplicity, encapsulated by Gall's Law, is crucial in developing effective systems.
The general problem — (Image: XKDC)
John Gall, an American author and pediatrician, established a principle known for its application far beyond the medical field: Gall’s Law. It states:
"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, beginning with a working simple system.”
Gall’s Law underscores the idea that functional complexity evolves successfully only from simplicity. It cautions against overengineering solutions or aiming to build large, intricate systems without a foundation in something more straightforward and tried-and-true.
At a glance, robust and complex solutions might seem advantageous, aiming to address every conceivable need or potentiality. However, overengineering often leads to several issues:
While I can’t hold your hand, and it needs to be judged on a case-by-case basis, I have some general guidelines for you:
If you're really into it, I suggest The Systems Bible. It is getting up there in age and can be a bit sluggish to read through. It also feels a little bit dated, especially when compared to the fast-paced lives of today’s Generation X.
It's important to note that Gall’s Law emphasizes a pathway of technological evolution that ascends from simplicity to complexity. It's not just a principle but a practice that has been illustrated in the journey of numerous successful organizations. By rooting development in simplicity, anchoring in user needs, and allowing systems to evolve, technologists and developers navigate a path that ensures stability, usability, and sustainable growth.
In this era of rapid technological advancements, keeping Gall's Law at the forefront of development practices provides a roadmap for creating resilient and effective systems that endure and adapt through time, never losing sight of the users they aim to serve.
Happy coding, you beautiful things ❤️