Joel Cuevas

Complex Systems

Reading: 2 minutes — Updated on: 2024

Complex software systems are intricate puzzles that require meticulous planning and foresight. The key to a successful design is recognizing that simplicity should be the ultimate goal—not as in devoiding the system of complexity but instead accounting for and proactively minimizing it.

As we embark on that journey, two principles—Conway's and Gall's Laws—serve as guiding lights toward coherence and efficiency.

Evolving Organizations

Conway's Law states that "organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations." Simply put, how teams communicate and collaborate directly influences the architecture of the systems they create.

While teams with effective dynamics will likely build systems that reflect those positive qualities, a team with poor collaboration and unfit communication channels may unintentionally create systems riddled with disconnections and inefficiencies. Understanding this relationship should encourage designers to organize teams and promote synergies beyond siloes and traditional organizational boundaries.

Starting Simple

Gall's Law complements Conway's insights by stating that "a complex system that works is invariably found to have evolved from a simple system that worked." This principle emphasizes successful systems' iterative nature: starting with a simple, functional core and gradually steering, adapting, and building upon it.

The relevance of Gall's Law lies in recognizing that attempting to create a perfect, all-encompassing system from the outset is futile. Instead, designers should embrace simplicity and iterate over solid foundations, mitigating the risks of large-scale failures and enabling the teams to adapt to evolving requirements and unforeseen challenges.

And as we are throwing laws into the conversation, don't forget to account for the most underappreciated of them all, Hofstadter's law:

It always takes longer than you expect, even when you take into account Hofstadter's Law. Douglas Hofstadter; Gödel, Escher, Bach (1979).

Kidding... but not kidding. ;)

So, remember, communication is what binds the technological and organizational facets in the organizations, simplicity is the foundation upon which complexity can gracefully stand, and iteration helps us build resilience and adaptability over time.


Further Readings Become the Master of the Maze


Related Takes You Might Find Interesting

  • Just Barely Good Enough On why pursuing perfection can be paralyzing, but incremental progress brings real-world benefits, improvement, and growth.

  • Release Early, Release Often On creating continuous feedback loops that faster deliver maximum value and more stable and reliable products.

  • Asking for Help On recognizing that everybody needs a hand and learning how to ask for help with openness and confidence.

Go back to the homepage