(Re)Organizing Your Teams Using Domain-Driven Design
12 July, 2022
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.
Scale your coaching effort for your engineering and product teams
Develop yourself to become a stronger engineering / product leader
Based on an awesome book titled "Deep Work" by Cal Newport we provide provide a brief overview of the Rules for Focused Success in a Distracted World.
CEO at Quantum Vision Consulting
Is it possible to be too empathetic? If you overdo it, it can be an energy sucker.
Delivery & Operations / Digital Transformation / Innovation at Marais Consulting Inc
Learn about 10 rules from the wisdom of these long-living residents from Ogimi, a small village in Okinawa, Japan. You could interpret the rules as the lifestyle habits that enable the senior residents of Ogami to live long and enjoy their ikigai.
CEO at Quantum Vision Consulting
3 ways leaders can cultivate relationships that lead to better products.
SVP Global Customer Experience at Salesforce
Oftentimes Engineers work in silos, developing products to specified requirements, while they remain disconnected from the most important of questions - "WHY are we building this?" We'll explore the consequences of this mindset, as well as how to connect your Engineers to the larger Company Vision.
VP of Engineering at ExecThread