2 DAY WORKSHOP

Domain-Driven Design for software teams

Are your teams truly building adaptable software that is aligned with your business goals?

In this two-day hands-on training for teams, you’ll explore techniques, principles, and tools for designing, building, and maintaining software that adapts to change and delivers real value. DDD gives your team the clarity and tools to take ownership of design decisions, reducing complexity and keeping the focus on what matters most: your users.

Ready to make your software design flow more effective, purposeful, and aligned? Join us for the “Domain-Driven Design for Software Teams” workshop.

This workshop is designed for anyone who is involved in creating software:

 

  • Software Developers & Engineers
  • Software, Solution & Enterprise Architects
  • Product Managers & Owners
  • Business Analysts & Quality Assurance roles
  • Engineering managers & Scrum Masters
  • Anyone interested in learning Domain-Driven Design to improve their software design process.

Trainers

Kenny Baas-Schwegler

João Rosa trainer

João Rosa

About the

workshop

In this two-day immersive training, we’ll dive into a realistic use case, using collaborative modeling techniques like EventStorming, Context Mapping, Domain Message Flow Modeling, and Example Mapping to bring DDD to life. Together, we’ll explore the model discovery whirlpool, guiding you from a problem or feature idea all the way to being ready to code.

You’ll experience firsthand how designing a shared language between your team and stakeholders transforms communication and decision-making. With EventStorming, we’ll uncover a deeper understanding of the use case and learn to distill and design Bounded Contexts—crucial for enabling teams to take ownership of business problems and independently design, build, and run software.

Context Mapping will clarify how Bounded Contexts fit together and influence other teams, while Domain Message Flow Modeling will introduce patterns for effective communication between them. These approaches give you the tools to make informed decisions when designing distributed systems. Through Example Mapping, we’ll identify and refine acceptance criteria to ensure your Bounded Context delivers value.

We’ll wrap up the training by connecting the dots, showing how these designs lead to clear, readable code—even for those who don’t write code themselves.

Join this hands-on workshop to tackle real-world scenarios from the trainer’s experience or participant contributions, navigating the complexities and dynamics of designing collaborative software systems.

Program

Day 1

Module 1 – The what and why of Domain-Driven Design

  • Check-in: Setting intentions and introductions
  • Sensemaking: Reflect on your current architecture
  • Presentation: Why does Domain-Driven Design matter?

Module 2 – Understanding the problem with EventStorming

  • Break-out: Exploring how you currently tackle problem discovery
  • Hands-on: Use EventStorming to model processes and uncover the problem space

Module 3 – Distilling Bounded Contexts

  • Presentation: Get familiar with the Bounded Context pattern
  • Hands-on: Use context mapping to distil Bounded Contexts from your EventStorming insights
  • Presentation: Reframe the problem we’re solving
  • Hands-on: Define purpose, user needs, and create a shared language

Day 2

Module 4 – Connecting bounded context

  • Presentation: Key decisions that shape your overall design
  • Break-out: Teach back strategic patterns to solidify your understanding
  • Hands-on: Model integration patterns using Domain-message flow

Module 5 – Making the bounded context explicit

  • Dialogue: When should you apply DDD? Using core domain charts to decide
  • Hands-on: Make your Bounded Context concrete with the Bounded Context Canvas
  • Hands-on: Use Example Mapping to define clear acceptance criteria

Module 6 – Integrating DDD into your team flow

  • Presentation: Choosing the right design activity at the right time
  • Bonus Dialogue: Introduction to Team Topologies and how it supports DDD
  • Bonus Walkthrough: From design to code—how it all comes together
  • Check-out: Reflect, share takeaways, and next steps

What you will learn

  • The What and Why of Domain-Driven Design: Understand the core ideas, patterns, and principles of DDD. Learn why it’s a game-changer for designing software that fits the needs of your business.
  • The Need for Collaborative Modeling: Get hands-on with tools like EventStorming, context mapping, domain message flow modelling, and example mapping. These techniques help your team and stakeholders build a shared understanding of the problem and solution space.
  • Distilling Bounded Contexts: Learn how to identify subdomains, define clear bounded contexts, and develop a ubiquitous language. These skills foster better team communication and lead to a more flexible and effective software architecture.
  • Reframing the Problem: See why software teams must deeply understand and own the needs of users and stakeholders. Aligning your software with real-world requirements starts here.
  • Key Design Decisions: Discover how autonomous teams and context mapping patterns can shape your overall architecture. Learn to make informed trade-offs that align with your design strategy.
  • Connecting Bounded Contexts: Tackle the complexities of integrating bounded contexts. Understand the trade-offs between solving challenges within a single context versus across multiple contexts.
  • Making Bounded Contexts Explicit: Use the Bounded Context Canvas to define each context’s purpose, including the specific needs of users and stakeholders. Bring clarity to different parts of your software landscape.
  • Integrating DDD into Your Team’s Flow: Explore how to weave DDD into your current work methods—whether Agile, DevOps, or Continuous Delivery. Build a workflow where DDD principles naturally fit and add value.

Before
the workshop

Prior experience in Domain-Driven Design is not a prerequisite for this workshop. To help lay the groundwork for the concepts we’ll explore, we provide an optional short introduction to Domain-Driven Design before the beginning of the workshop. This preparatory material is designed to prime your understanding and set you up for maximum benefit from the workshop’s content.

For participants keen on advanced preparation, we recommend delving into Vladik Khononov’s “Learning Domain-Driven Design.” This resource offers insightful, accessible guidance for those new to DDD. Additionally, Eric Evans’ book Domain-Driven Design: Tackling Complexity in the Heart of Software remains an invaluable read for anyone looking to deepen their understanding—a definite advantage for workshop participants.

This highly interactive workshop is designed to engage you in hands-on learning experiences. We utilise Miro, a versatile digital whiteboard tool, when conducted online, for our collaborative exercises. If you’re unfamiliar with Miro, we encourage you to use the self-paced participant onboarding course available at Miro Academy: Miro Participant Onboarding Course. This short course will equip you with the navigational knowledge needed to participate in our interactive sessions fully.

Contact