Balancing Coupling in Software Design • Vlad Khononov & Sheen Brisals
Author Vlad Khononov discusses his book "Balancing Coupling in Software Design," explaining how a failed microservices project led him to rediscover timeless design principles from the 1970s. He explores the concepts of local vs. global complexity, the role of modularity as an antidote to complexity, and how managing coupling is crucial for building maintainable systems in any architectural style, from monoliths to cloud-native applications.
In a conversation with Sheen Brisals, author Vlad Khononov delves into the core ideas of his book, “Balancing Coupling in Software Design,” revealing how timeless principles are essential for navigating the complexities of modern software development.
The Catalyst: A Failed Microservices Project
Khononov’s journey into the depths of coupling was sparked by a “miserably failed” microservices project. The team followed the hype and advice from conferences but ended up with the complete opposite of the promised benefits. Every change required multiple services to be deployed simultaneously, leading to a system that was impossible to evolve.
This failure led him to a crucial realization:
We optimized local complexity, the complexity of the source code of each service. It was really simple. It was really micro… But on the other hand, the global complexity of the overarching system was quite high. It skyrocketed.
The search for answers took him back to a 1970s book, “Composite/Structured Design” by Glenford Myers, where he found that the fundamental problems of software design, particularly around coupling, remain unchanged despite decades of technological evolution.
Timeless Principles in a Modern World
A central theme of the discussion is that fundamental design principles are agnostic to the technology stack or architectural style. Whether working with assembly code or distributed cloud systems, the challenges are remarkably similar.
- Coupling is Unavoidable: Khononov emphasizes that coupling is not an enemy to be eliminated but a force to be managed. He uses the analogy of planets, which are millions of miles apart but still coupled by gravity. The goal is not “no coupling” but “balanced coupling.”
- Local vs. Global Complexity: These terms, borrowed from the 1970s, are critical for understanding modern system design. Optimizing for simple, small components (low local complexity) can inadvertently create a tangled web of interactions that is difficult to understand and change (high global complexity). This is a common failure pattern in microservices adoption. Sheen Brisals noted the parallels to modern concepts like accumulated complexity (in a monolith) versus distributed complexity (in serverless and event-driven architectures).
Modularity: The Antidote to Complexity
The conversation highlights modularity as the direct countermeasure to complexity. Khononov defines complexity as a state where “you want to do something and you don’t know what the outcome of that action is going to be,” a result of high cognitive load.
Modularity, in contrast, reduces this cognitive load. A modular system exhibits two key properties:
- When a change is needed, you can easily locate the component responsible for that functionality.
- Once the change is made, you know exactly what the outcome will be.
Achieving this state of modularity boils down to managing coupling—understanding the knowledge exchanged between components and their physical arrangement within the system.
A Practical Model for Balancing Coupling
Khononov’s book introduces a practical, “battle-tested” model for analyzing and managing coupling. This model evolved through real-world application and feedback from peers like Vaughn Vernon. For instance, an initial concept called “implementation coupling” was refined into the more descriptive and powerful term “intrusive coupling” to better capture the negative impact of one component depending on the internal details of another.
While not originally intended for it, Khononov agrees that this model for assessing complexity could be a powerful tool for creating more educated and reliable project estimations, as it helps quantify uncertainty.
A Poetic Touch
In a unique creative choice, each chapter of the book begins with a four-line poem. Khononov shared that this started as an experiment with early OpenAI models and evolved into a purposeful tool. The poems are a collaboration between himself and AI (requiring “lots of Red Bulls”) and serve to provide the reader with an easily digestible overview of the chapter’s core theme, making the dense, technical content more approachable.