Image created with Midjourney. Image prompt: A simple, 2D, minimal style illustration of a small tree sprouting from a single seed, gradually growing into a complex, large tree, representing the evolution of a simple system into a complex one.
<aside> 💬 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.
</aside>
In the realm of software development, complexity is inevitable. As systems grow and needs evolve, what begins as a simple, straightforward solution can quickly become a maze of interwoven processes and functions. This is where Gall’s Law comes into play, offering valuable insights into how complex systems develop and function.
Gall’s Law 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 with a working simple system." The principle implies that attempts to design highly complex systems from scratch are likely to fail. Instead, successful complex systems usually evolve from more straightforward systems over time1.
One classic example of Gall's Law in action is the evolution of the World Wide Web. Initially designed as a simple way to share content between academic institutions, the web was highly successful in meeting these straightforward goals. Over time, it has evolved into the complex, intertwined system that we know today, capable of supporting a multitude of applications and processes1.
In software development, Agile methodologies embody the essence of Gall's Law. Teams start with a basic version of the software, known as a Minimum Viable Product (MVP), and then incrementally add features based on user feedback and business needs. This approach allows the software to evolve organically into a complex system, rooted in a simple system that worked.
Operating systems like Windows, macOS, or Linux, also demonstrate Gall's Law. These systems did not emerge in their current complex forms overnight. They started as simple systems fulfilling basic tasks and grew in complexity over time as new features were added and existing ones refined.
In the context of creating digital software products, Gall's Law serves as a reminder to developers and product managers alike. Rather than attempting to build a highly complex system from the outset, it is more prudent to start with a simple, working system and allow it to evolve over time. This iterative approach can lead to more robust, functional, and user-friendly software products.
In conclusion, understanding Gall’s Law can play a pivotal role in managing the inherent complexity in software development. Starting with a simple system that works and allowing it to evolve naturally can pave the way for the development of a successful and efficient complex system.