Advanced Strategic Domain-Driven Design
(Workshop, full day, Intermediate)
During this hands-on workshop you will learn the most important, and misunderstood, parts of Domain-Driven Design - domain discovery and strategic design - through hands-on facilitation patterns and design exercises, including the Business Model Canvas and autonomous architecture design.
After completing this workshop you will have a rich set of knowledge and tools for collaborating with business experts & stakeholders, understanding what is important to them, and constantly optimising the software systems you create around their needs. You will be able to apply all of these new skills immediately.
The skills learned in this workshop are of tremendous value to any technical lead or
software developer who aspires to positions of technical leadership or strategy. But they are also highly practical to those who work with software developers, including testers, BAs, product owners, scrum masters, project managers etc. This workshop works best with mixed groups.
Example Workshop Activities
This workshop involves a selection of the following activities. The final agenda is tailored to the needs of attendees and workshop duration.
Introduction to Domain-Driven Design
Not Just Programming Patterns
Discovering the Domain
Thinking Strategic: Aligning Solution With Problem
Synergies with Systems Thinking & Theory of Constraints
Domain Discovery Exercises
Discovering the Business Model: Business Model Canvas
Discovering the Problem Domain: Subdomains
Discovering Use Cases via Value Streams and Events
Discovering Language with DDD Flavoured BDD
Discovering Options with Impact Mapping
Strategic Design Exercises
Organisation Design with Autonomy Contexts
Strategic Solution Design with Context Mapping
Aligning Technical Strategy with Product Strategy
Domain-Driven Architectural Design: Diagramming
Designing Autonomous Services & Teams Together
Aligning organisational and technical boundaries with the organic boundaries of a problem domain to create autonomous teams enables organisations to innovate faster by making decisions faster, implementing ideas faster, and getting customer feedback faster. Guided by the strategic principles of Domain-Driven Design, software developers and stakeholders collectively can play a key role in leading the transformation of their organisation towards greater autonomy.
Instead of naively chopping up a system into arbitrary small pieces and calling them ‘microservices that implement bounded contexts’, or merely thinking cross-functional teams will suffice, deeper - more nuanced design skills are needed. All domains are different - there is no flowchart that guides teams into knowing exactly how to break up a large system into smaller pieces that minimise the costs of handovers and shared dependencies.
Strategic Domain-Driven Design introduced the concept of subdomains; things that change together for business reasons. Accordingly, teams that own things that change together for business reasons will own more decision making and have more autonomy.
Traditionally, Domain-Driven Design has encouraged use of language as a way to identify the boundaries between things that change together. Whilst language is still a key heuristic, there are many others, in particular the flow of work through an organisation. Subsequently, by supplementing the design of teams and services with the the goal of eliminating bottlenecks in an organisation, Theory of Constraints provides a powerful mindset for determining good microservice and team boundaries.