Joel Cuevas

Complex Systems

Reading: 2 minutes — Updated on: 2024

Designing complex software systems is like putting together a giant puzzle. It requires careful planning and an eye for detail. The secret to success is to aim for simplicity—not by avoiding complexity, but by managing and reducing it as much as possible.

Two key principles that can guide us in this process are Conway's Law and Gall's Law.

Evolving Organizations

Conway's Law tells us that "organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations." In simpler terms, the way teams communicate and work together will shape the systems they build.

If a team communicates well and collaborates effectively, the systems they create will likely be cohesive and well-structured. On the flip side, poor communication and collaboration can lead to disjointed and inefficient systems. Understanding this helps us see the importance of organizing teams and promoting collaboration beyond traditional boundaries.

Starting Simple

Gall's Law adds another layer of wisdom, stating that "a complex system that works is invariably found to have evolved from a simple system that worked." This means that successful systems often start simple and grow more complex over time.

Trying to build a perfect, all-encompassing system from scratch is usually a bad idea. Instead, it's better to start with a simple, functional core and build on it gradually. This approach reduces the risk of large-scale failures and allows teams to adapt to changing requirements and unexpected challenges.

And just for fun, here is Hofstadter's Law:

"It always takes longer than you expect, even when you take into account Hofstadter's Law."

So, remember: good communication shapes good systems, and starting simple helps them grow successfully. And be prepared for delays—things always take longer than expected.


Further Readings Become the Master of the Maze


Related Thoughts You Might Find Interesting

Go back to the homepage