Loose design-time coupling: part of the wiring of a winning organization

architecting   design-time coupling   team topologies   fast flow  

I’d been meaning to read Gene Kim and @StevenJSpear’s book Wiring the Winning Organization for a while, so it was a pleasant surprise to see his Tweet connecting the ideas in my QConPlus 2021 talk on loose design-time coupling with those in his book.

I found the book to be a fascinating read. In particular, it describes how software architecture and loose design-time coupling are key parts of the wiring of a winning organization. Later in this article, I share a few thoughts about the book. But let’s first explore the topic of loose design-time coupling.

QConPlus 2021: Takeout burritos and minimizing design-time coupling in a microservice architecture

The key idea in this presentation, which uses the problem of ordering burritos as an example, is that high performance software delivery requires a loosely coupled organization comprised of autonomous teams, which in turn requires a loosely coupled software architecture. Each team, which Team Topologies would call a stream-aligned team, is responsible for an end to end stream of work that turns requirements into code running in production. Such a team can, as the Accelerate authors describe, complete their work without needing to coordinate with other teams or creating work for them.

In order for the teams to be autonomous, the software elements (e.g. modules or services) owned by different teams must be loosely design-time coupled. A change to one team’s element should rarely require changes to another team’s element. As a result, teams seldom need to coordinate.

Tight design-time coupling kills productivity

Tight design-time coupling is the opposite of loose design-time coupling. It’s when a change to one team’s element regularly requires changes to another team’s element. As a result, teams regularly need to coordinate their work.

Tight design-coupling is a pervasive problem within many enterprises. For example, prior to COVID, almost every organization I visited had a severe shortage of meeting rooms. I believe that was because teams spent large amount of time coordinating and aligning their work. As a result, team productivity was significantly reduced.

Now that we have explored the concept of loose design-time coupling, let’s look at how it fits into the wiring of a winning organization.

About wiring the winning organization

This book builds on the ideas of DevOps, Lean, and Agile to describe how organizations can be structured to deliver high performance. Let’s look at a couple of the key ideas in the book that involve architecture starting with three layer model of organizations.

A three layer organization

One of the book’s key ideas is that there are three layers to an organization:

  • Layer 1 (Technical objects) - where the work gets done
  • Layer 2 (tools and instrumentation) - tools and instrumentation that enable the work to be done
  • Layer 3 (Social circuitry) - includes the team structure and, despite the name, software architecture

To quote the book:

When leaders wire their Layer 3 (social circuitry) well, the people for whom they are responsible have what they need, when they need it, and in the format they need it. Problems have been redefined so that they are easier, safer, and faster to solve. As a result, people can invest their full creative energies and focus on solving their problems, either in Layer 1 (the work object) or Layer 2 (the tools or instruments to do their work).

This three layer model resonated strongly. After all, the goal of software architecture is satisfy various requirements, including development-time requirements, such as ease of change. In other words, architecture makes it easier for developers to deliver changes, and as I described earlier, loose design-time coupling is a key part of that.

What’s more, a key goal of Team Topologies is a highly productive organization structure. I’ve also spoken to many people who rather than delivering value to customers have to spend their time navigating (or perhaps fighting) the organization’s structure and processes. One common problem are misaligned incentives, where the goals of different teams are in conflict.

Architecture as a form of simplification

The book also describes three important mechanisms for improving an organization: slowification, amplification, and simplification. Simplification, which is all about making problems simpler to solve, is particularly important since one of its key elements is architecture, or to be more, precise modularization.

Modularization is all about decomposition of an otherwise large and difficult to maintain system into a collection of simpler, loosely design-time coupled modules. To quote the book:

The benefit is that small teams gain independence of action, enabling them to work and experiment on more manageable parts of the problem in parallel and more quickly and safely, with lower costs of coordination, .

This sounds remarkably like the goal of the microservice architecture and of the other fast flow architectural style, the modular monolith.

One fascinating modularization case study describes how between 1998 and 2002, the rate of software delivery at Amazon dramatically slowed down because they outgrew their software architecture. These software delivery problems prompted them to ‘modularize’ their software architecture - adopt what we would now call the microservice architecture. Because of this change, their deployment frequency went from 20/year in 2002 to an astonishing 49 million/year in 2015. As you can see, a loose design-time coupled architecture is an essential ingredient of a winning organization.

Need help with accelerating software delivery?

I’m available to help your organization improve agility and competitiveness through better software architecture: training workshops, architecture reviews, etc.

Learn more about how I can help


architecting   design-time coupling   team topologies   fast flow  


Copyright © 2024 Chris Richardson • All rights reserved • Supported by Kong.

About www.prc.education

www.prc.education is brought to you by Chris Richardson. Experienced software architect, author of POJOs in Action, the creator of the original CloudFoundry.com, and the author of Microservices patterns.

ASK CHRIS

?

Got a question about microservices?

Fill in this form. If I can, I'll write a blog post that answers your question.

NEED HELP?

I help organizations improve agility and competitiveness through better software architecture.

Learn more about my consulting engagements, and training workshops.

LEARN about microservices

Chris offers numerous other resources for learning the microservice architecture.

Get the book: Microservices Patterns

Read Chris Richardson's book:

Example microservices applications

Want to see an example? Check out Chris Richardson's example applications. See code

Virtual bootcamp: Distributed data patterns in a microservice architecture

My virtual bootcamp, distributed data patterns in a microservice architecture, is now open for enrollment!

It covers the key distributed data management patterns including Saga, API Composition, and CQRS.

It consists of video lectures, code labs, and a weekly ask-me-anything video conference repeated in multiple timezones.

The regular price is $395/person but use coupon NPXJKULI to sign up for $95 (valid until December 25th, 2024). There are deeper discounts for buying multiple seats.

Learn more

Learn how to create a service template and microservice chassis

Take a look at my Manning LiveProject that teaches you how to develop a service template and microservice chassis.

Signup for the newsletter


BUILD microservices

Ready to start using the microservice architecture?

Consulting services

Engage Chris to create a microservices adoption roadmap and help you define your microservice architecture,


The Eventuate platform

Use the Eventuate.io platform to tackle distributed data management challenges in your microservices architecture.

Eventuate is Chris's latest startup. It makes it easy to use the Saga pattern to manage transactions and the CQRS pattern to implement queries.


Join the microservices google group