This training conveys the important theoretical structure around all relevant areas of Domain-Driven Design.
Participants will continuously apply this theoretical knowledge by means of a practical and above all technically complex case study, which goes far beyond common Hello World or Shopping Cart examples.
This training will teach you everything you need to know to get you started with DDD. You will learn about collaborative modeling techniques, align business and software architecture with strategic design, design highly specific domain models using the tactical design patterns, and align teams and architecture using the context map.
The on-premise variant of this training used to be a highly interactive course with a high degree of hands-on exercises on a non-trivial case study. This remote course is as interactive due to many pre-prepared engaging practices. You will also learn how to work with proven remote tools for your day-to-day Domain-driven Design work.
All participants will get a free copy of Michael’s eBook “Hands-on Domain-driven Design - by example.”
Learn how to:
- Get to know the motivation behind Domain-driven Design and all the elements of the methodology.
- Learn how to apply Domain-driven Design using agile practices.
- Be able to conduct collaborative modeling workshops like EventStorming (Big Picture, Design Level) and Domain Storytelling.
- Demarcate problem domains and divide them into categorized subdomains.
- Design bounded context boundaries from various perspectives.
- Apply tactical design patterns such as aggregate, entity, value object, and service in designing a highly expressive domain model.
- Design a sociotechnical architecture with the corresponding governance using context maps.
Starts at 8:00 AM GMT (7:00 AM UTC)
Starts at 8:00 AM GMT (8:00 AM UTC)
Our team is happy to discuss other options with you.
Contact us at firstname.lastname@example.org and mention ref:
Private tuition and large-group discounts are also available. Find out more here.
Who should take this workshop?
This training aims at software developers, architects, and product owners or people from the business side who are working on digital products. There are no coding exercises in this training. However, developers will get a lot of resources and a link to a GitHub repository with a corresponding video by Michael Plöd to dig deeper.
What prior knowledge do you need to bring?
You should have some experience in the delivery of software products. Some know-how in software architecture is a plus, but not required.
What are the technical requirements?
You should have a webcam, a decent microphone or headset, and a good internet connection. We recommend at least 20 MBit/s downstream and 5–10 MBit/s upstream. It would help if you also had a modern browser (Firefox, Chrome, Safari) installed on your machine. A second screen is optional but a plus. We will use Zoom for video conferencing. Before the training, we will offer 2–3 dates for a brief technical-setup check.
Get to know an overview and a bit of the history behind Domain-driven Design. You will also learn about concepts such as the Ubiquitous Language and the motivation for a close collaboration between domain experts and software practitioners. The afternoon will consist of a Big Picture EventStorming session on the case study.
The second day is all about strategic Domain-driven Design. You will learn to distinguish between problem and solution space. We will dissect the problem domain of our case study into subdomains and categorize them into core, supporting, and generic. After that, we will dive into the solution space by identifying proper bounded contexts, ideas, and elements from the Bounded Context Design Canvas. You will not only learn all the fundamentals of problem domains, subdomains, and bounded contexts. You will also put those ideas into practice with many exercises!
We’ll use the first part of the day applying the ideas and patterns of the tactical Domain-driven Design into practice. We will perform a Design Level EventStorming for one of the bounded contexts we identified on day 2—this will enable us to identify candidates for aggregates, services, and policies. Going forward, we will also look for proper candidates for entities and value objects.
The second part of the day is all about the sociotechnical part of Domain-driven Design. You will learn about aligning teams, bounded contexts, and governance that you’ll need in such an environment. We will mainly look at the context mapping patterns from the Domain-driven Design literature, but you will also get a brief overview of alternatives such as Team Topologies.