Team Topologies: Designing Teams for Fast Flow
Matthew Skelton discusses his influential book on organizing software teams around cognitive load and clear interaction patterns. We explore the four fundamental team types, how to reduce coordination overhead, and practical steps for implementing these patterns in real organizations.
Topic: Team Topologies: Organizing Business and Technology Teams for Fast Flow (2019) by Matthew Skelton
Participants
- Sarah (host)
- Matthew (guest)
Transcript
Just a heads up that this entire episode is AI-generated, including our voices, and today's conversation is brought to you by FlowDesk, the ergonomic standing desk that adjusts to your team's collaboration needs.
I'm Sarah, and today I'm talking with Matthew Skelton about his book Team Topologies. Matthew, let's start with the basic problem your book solves.
Well, most organizations struggle with how to structure their teams, especially as they grow. They end up with Conway's Law working against them rather than for them.
Conway's Law being that organizations design systems that mirror their communication structure?
Exactly. If your team structure is messy, your software architecture will be messy too. But most companies just let teams evolve randomly.
So you're saying team design should be intentional, not accidental.
Right. And not just intentional, but based on cognitive science and what we know about human collaboration limits.
What's your background that led you to write this? You're not just theorizing here.
I spent years as a software delivery consultant, watching the same organizational patterns fail over and over. Teams would deliver slowly, burn out, or create brittle systems.
And you realized it wasn't a technology problem.
Exactly. The technology was fine. The team structures were the bottleneck.
Who did you write this for? CTO's? Team leads?
Anyone who has influence over how teams are organized. That could be engineering managers, product leaders, even individual contributors who want to understand why their organization feels dysfunctional.
So what's your central thesis? How should we think about team design?
There are only four fundamental team topologies that work for software delivery. Everything else is a variation or a temporary structure.
Four types. That seems almost too simple.
Simple doesn't mean easy. Most organizations try to make every team do everything, which violates basic cognitive limits.
What cognitive limits?
Dunbar's number, for one. Teams can only maintain meaningful relationships with about 150 people. But there's also cognitive load theory.
Explain cognitive load in this context.
Every team has a limited capacity for learning and problem-solving. If you overload them with too many domains, technologies, or responsibilities, their performance drops.
So the goal is to optimize for cognitive load, not just efficiency.
Right. Fast flow comes from teams that can focus deeply on their specific domain without constant context switching.
This sounds like it challenges the idea of full-stack teams that can do anything.
It does. The "we don't have silos" mentality often creates teams that are mediocre at everything instead of excellent at something specific.
What came before your approach? What were you reacting against?
A lot of organizational design was based on functional silos or matrix structures from manufacturing. But software is different.
How is it different?
Software is discovery work, not just execution. You need teams that can sense and respond quickly, not just follow predetermined plans.
And traditional org charts don't capture that.
Traditional org charts are static. They don't show information flow, collaboration patterns, or cognitive boundaries.
So let's get into your four team topologies. What's the first one?
Stream-aligned teams. These are your core feature delivery teams, aligned to a specific business flow or user journey.
Give me a concrete example of a stream-aligned team.
Think of a team responsible for the checkout experience in an e-commerce app. They own everything from the shopping cart through payment confirmation.
They would own both frontend and backend for that flow?
Ideally, yes. They should be able to deliver value independently without coordinating with other teams for every change.
What's the second topology?
Platform teams. They provide capabilities that stream-aligned teams can use as a foundation.
So like infrastructure teams?
Infrastructure is part of it, but think broader. Platform teams create internal products that make other teams more productive.
Can you give me an example?
A platform team might create a deployment pipeline that any stream-aligned team can use to get their code to production in minutes instead of hours.
And the platform team treats other teams as their customers?
Exactly. They should be obsessed with developer experience and reducing cognitive load for the stream-aligned teams.
What's the third topology?
Enabling teams. These are specialists who help other teams learn new capabilities.
How is that different from a platform team?
Platform teams build things. Enabling teams build capabilities in people. They're more like internal consultants.
Give me an example of when you'd use an enabling team.
Say your company is adopting machine learning. An enabling team would embed with stream-aligned teams for a few months, teaching them ML practices.
And then they move on to help other teams?
Right. They're temporary. Once the stream-aligned team can handle ML independently, the enabling team goes elsewhere.
And the fourth topology?
Complicated subsystem teams. These handle parts of the system that require specialized knowledge.
Like what kind of specialized knowledge?
Think of a team that builds a recommendation engine or a fraud detection system. The domain expertise required is too much for a general stream-aligned team.
So you're creating a deliberate silo there.
Yes, but with clear interfaces. The stream-aligned team doesn't need to understand how fraud detection works internally, just how to use it.
How do these four types interact with each other?
That's where interaction modes come in. There are three basic ways teams should collaborate.
Walk me through those interaction modes.
First is collaboration, where teams work closely together for discovery. Second is X-as-a-Service, where one team provides something the other consumes.
And the third?
Facilitating, where one team helps another team learn something new.
So the interaction mode should match the topology and the goal.
Right. And these modes should evolve over time. Teams might start with collaboration during discovery, then move to X-as-a-Service for delivery.
Let's talk implementation. How would someone actually apply this in their organization?
Start by mapping your current team structure and identifying the cognitive load on each team.
How do you measure cognitive load practically?
Look at how many domains, technologies, and stakeholder groups each team has to deal with. Also ask teams directly: do they feel overwhelmed?
What would be a red flag that cognitive load is too high?
Teams that can't deliver features without coordinating with multiple other teams. Or teams that are constantly context-switching between completely different technical domains.
So once you've identified overloaded teams, what's the next step?
Look for natural boundaries where you can split responsibilities. Focus on business capabilities rather than technical layers.
Can you give me a concrete before-and-after example?
Sure. Before: one team handles all user account functionality. After: separate teams for registration, billing, and profile management, each aligned to different user journeys.
But wouldn't that create coordination overhead?
Only if you don't design the boundaries well. Each team should be able to evolve their part independently most of the time.
What about platform teams? When should someone create one?
When you have three or more stream-aligned teams doing similar work. That's usually when the investment in a platform starts paying off.
And what's a common mistake when creating platform teams?
Building a platform that serves the platform team's vision instead of solving real problems for the stream-aligned teams.
So platform teams need to be customer-obsessed, just like product teams.
Exactly. They should be measuring adoption rates and developer satisfaction, not just uptime metrics.
What about enabling teams? When would someone use that pattern?
When you're introducing new technologies or practices across the organization. It's more effective than training courses or documentation.
How long should an enabling team typically embed with another team?
Usually a few weeks to a few months. Long enough to transfer real capability, but not so long that they become a permanent dependency.
What happens if teams resist the help from enabling teams?
That's often a sign that the enabling team is pushing solutions instead of understanding problems. They need to start with the receiving team's actual pain points.
Let's talk about complicated subsystem teams. How do you know when you need one?
When a particular area requires deep, specialized knowledge that would overload a stream-aligned team.
But how do you prevent them from becoming ivory towers?
Clear service interfaces and regular collaboration cycles. They should still be responsive to the needs of teams that depend on them.
If someone could only implement one thing from your book, what should it be?
Reduce the cognitive load on your stream-aligned teams. Whatever it takes, whether that's better tooling, clearer boundaries, or just fewer responsibilities.
How quickly should someone expect to see results from these changes?
You might see reduced stress and better focus within weeks, but measurable improvements in delivery speed usually take a few months.
What are the most common implementation mistakes you've seen?
Trying to change everything at once. Or creating the team structures without changing the underlying systems and processes.
What do you mean by changing the underlying systems?
If your architecture doesn't match your team structure, you'll still have coordination overhead. The teams need to be able to work independently.
So this isn't just an org chart exercise.
Definitely not. Technology and teams co-evolve. You often need to refactor both simultaneously.
What contexts does your approach not work well in?
Very small companies with fewer than 20 engineers might not need this level of structure. Also highly regulated industries with rigid approval processes.
Let's get critical for a moment. Where does your book overpromise?
I think some readers expect it to solve all their organizational problems. But team structure is just one piece of effective software delivery.
What other pieces are equally important?
Technical practices like continuous integration, good product management, and psychological safety. Team topology alone won't fix a broken engineering culture.
What does your book leave out that readers should look elsewhere for?
We don't go deep on technical architecture patterns or specific management practices. It's really focused on the team design layer.
How does your approach compare to other organizational models like Spotify's squads and tribes?
Spotify's model is one specific implementation. We're trying to provide the underlying principles that work across different company contexts.
What's been the most surprising criticism you've received?
Some people think it's too prescriptive. They want more flexibility in team types. But I think the constraints are actually liberating.
How so?
When you have clear patterns to choose from, you can focus on the specific design decisions rather than inventing everything from scratch.
What companies have most successfully implemented these patterns?
We see good adoption at mid-size tech companies and enterprises that are serious about digital transformation. Places like Hazelcast, SEEK, and parts of larger banks.
How has the field of organizational design changed since you wrote the book?
There's much more awareness that team design is a strategic capability, not just an HR function. CTOs are thinking about it more systematically.
Has remote work changed how you think about team topologies?
It's made clear interfaces between teams even more important. You can't rely on informal hallway conversations to coordinate anymore.
Are there new team patterns emerging that you didn't anticipate?
We're seeing more emphasis on security-focused enabling teams and data platform teams. The basic patterns hold, but the domains are evolving.
What influence has the book had on how companies think about organization?
I think it's helped legitimize the idea that org design should be based on cognitive science rather than just gut feel or copying other companies.
As we wrap up, what's the one thing you want listeners to think differently about?
Team structure isn't something that just happens to you. It's a design problem that deserves the same intentionality you'd put into product or architecture decisions.
And if they're feeling overwhelmed by their current team setup?
Start by mapping what you have now and identifying the biggest sources of cognitive overload. Even small reductions in complexity can have big impacts on team performance.
Matthew, thanks for walking us through Team Topologies. The core insight about optimizing for cognitive load rather than efficiency really changes how you think about organizational design.
Thanks for having me, Sarah. I hope listeners can use these ideas to create better working environments for their teams.