Back to resources

(Re)Organizing Your Teams Using Domain-Driven Design

Alignment
Architecture
Scaling Team
Building A Team
Internal Communication
Reorganization

12 July, 2022

Ram Singh
Ram Singh

CTO at REAL Engagement & Loyalty

A proposal for how to create an org structure that will deliver software systems that you want, not ones you get stuck with.

It is important for leaders to foster an Above the Line team culture to get the best individual performance from team members. (See my post titled Leading A (Distributed) Team? Foster "Above the Line" Behaviors for background info about this topic.) But to get the best team performance, leaders also have to organize their teams effectively.

Fifty-five years ago, Melvin Conway penned what has come to be known as Conway's Law :

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.”

So, the trick is to create an organization/communication structure that will produce system that best suited for the task and a way to alter that structure as the system evolves. To define product development org structures, I use a method analogous to Domain-Driven Design (DDD). In DDD, when planning how to deliver a desired overall solution, one first looks for how break it up into smaller domain models. I think of domain models as areas of boundable scope isolated from other domain models, where definable APIs/services can be used by external actors to access the underlying business logic.

Then, if leadership can identify what the domain models are at a high-level, we can then create an organizational structure that maps teams to the domain models they are responsible for. Another way to think about it is: If we know where the APIs/services need to be, we can then identify the teams who can take responsibility for delivering/operating/maintaining those APIs/services and the underlying business logic and data... and then let them have at it. This has the added benefit of reducing the amount and complexity of communication and coordination required between teams and providing a built-in structure for those interactions. This should automatically improve development velocity since dependencies on other teams dramatically reduces a team's productivity.

There are lots of online resource on DDD. But, remember, as the leader trying to create a workable org structure, you don't need to get into the deep details of DDD. You just want to get a sense of where the major boundaries of scope to map your org structure agains. Event storming is one quick-and-dirty method that you can adapt to work with stakeholders (including your and others' team members) to identify the intended software system's domain models at a high enough level to then map out a suitable org structure to match. It has the added benefit of instilling a common knowledge reference among the stakeholders about the system and underlying roles & responsibilities, so that changes to the overall system or the structure or relationship between individual domain models, and therefore to the teams responsible for them, can be handled gracefully.

Discover Plato

Scale your coaching effort for your engineering and product teams
Develop yourself to become a stronger engineering / product leader


Related stories

Mindsets of High Performance team

14 October

Teams have tremendous impact on the products on they build. T.E.A.M definition - Together Everybody Achieves More is true. A collaborative and empowered team builds great product versus the good ones.

Innovation / Experiment
Mission / Vision / Charter
Building A Team
Productivity
Feedback
Motivation
Praveen Cheruvu

Praveen Cheruvu

Senior Software Engineering Manager at Anaplan

How I failed at my startup

14 October

There are nine specific building blocks and functional areas every org/company need to work to launch the product and provide services to customers. How effectively founders tackle them determine the destiny of the company.

Mission / Vision / Charter
Scaling Team
Building A Team
Impact
Strategy
Prioritization
Praveen Cheruvu

Praveen Cheruvu

Senior Software Engineering Manager at Anaplan

High Performance Team in Action

13 October

A high performance team refers to “ a group of goal-focused individuals with specialized expertise and complementary skills who collaborate, innovate and produce consistently superior results.”

Managing Expectations
Building A Team
Company Culture
Feedback
Coaching / Training / Mentorship
Praveen Cheruvu

Praveen Cheruvu

Senior Software Engineering Manager at Anaplan

Developing an Early Career Program in Technology Organizations

12 October

Why companies should invest in early career programs ?

Building A Team
Hiring
Coaching / Training / Mentorship
Juniors
Career Path
Praveen Cheruvu

Praveen Cheruvu

Senior Software Engineering Manager at Anaplan

Strategies for Hiring

12 October

Recruiting right people is the single most important decision for the company. Building a great platform, product and company is hard. Getting the right people into the company is twice hard.

Building A Team
Company Culture
Ownership
Hiring
Praveen Cheruvu

Praveen Cheruvu

Senior Software Engineering Manager at Anaplan