#188 - Balancing Coupling in Software Design: Principles for Architecting Modular Software Systems - Vladik Khononov

Tech Lead Journal - A podcast by Henry Suryawirawan - Mondays

Categories:

“Coupling is an inherent part of system design, not something that is necessarily good or evil. How we design coupling can take our system either towards complexity or towards modularity." Vladik Khononov returns to the podcast to discuss his latest book “Balancing Coupling in Software Design”. In this episode, Vlad revisits the essence of coupling, a term often not fully understood, and explores its implications on software complexity and modularity. Vlad introduces the concept of shared lifecycle and shared knowledge, revealing the hidden dependencies that can undermine even the most well-intentioned designs. He also explains complexity through the lens of the Cynefin framework and delves into the differences between essential and accidental complexity. One of the episode’s highlights is Vlad’s unique framework for evaluating coupling. He introduces the three dimensions of integration strength, distance, and volatility, providing a practical model for assessing and balancing coupling in software design. He also challenges traditional definitions of modularity, emphasizing the importance of knowledge boundaries. Whether you’re a seasoned tech lead or an aspiring software engineer, this episode offers invaluable insights into building maintainable and modular software systems. It will leave you with a deeper appreciation for the delicate balance between coupling and complexity.   Listen out for: Writing about Coupling - [00:03:28] Coupling - [00:06:09] Shared Lifecycle & Knowledge - [00:08:17] Cynefin - [00:12:28] Essential vs Accidental Complexity - [00:19:00] Modularity - [00:22:45] Abstraction & Knowledge Boundary - [00:29:04] 3 Dimensions of Coupling - [00:36:25] Balancing Coupling - [00:58:11] 3 Tech Lead Wisdom - [01:02:30] _____ Vladik Khononov’s BioVlad Khononov is a software engineer with extensive industry experience, working for companies large and small in roles ranging from webmaster to chief architect. His core areas of expertise are distributed systems and software design. Vlad consults with companies to make sense of their business domains, untangle monoliths, and tackle complex architectural challenges. Vlad maintains an active media career as a public speaker and author. Prior to Balancing Coupling in Software Design, he authored the best-selling O’Reilly book Learning Domain-Driven Design. He is a sought-after keynote speaker, presenting on topics such as domain-driven design, microservices, and software architecture in general. Follow Vladik: LinkedIn – linkedin.com/in/vladikk Twitter / X – @vladikk 📚 Balancing Coupling in Software Design – https://www.amazon.com/Balancing-Coupling-Software-Design-Addison-Wesley-ebook/dp/B09RV3Z3TP _____ Our Sponsors Enjoy an exceptional developer experience with JetBrains. Whatever programming language and technology you use, JetBrains IDEs provide the tools you need to go beyond simple code editing and excel as a developer.Check out FREE coding software options and special offers on jetbrains.com/store/#discounts.Make it happen. With code. Manning Publications is a premier publisher of technical books on computer and software development topics for both experienced developers and new learners alike. Manning prides itself on being independently owned and operated, and for paving the way for innovative initiatives, such as early access book content and protection-free PDF formats that are now industry standard.Get a 40% discount for Tech Lead Journal listeners by using the code techlead24 for all products in all formats. Like this episode?Show notes & transcript: techleadjournal.dev/episodes/188.Follow @techleadjournal on LinkedIn, Twitter, and Instagram.Buy me a coffee or become a patron.