Domain-Driven Design for Software Architecture
This workshop is designed with software people in mind, namely ones involved in software design and architecture. Titles vary, but can fall under one of those::
- Software Developers & Engineers with 5 years of experience
- Tech Leads
- Software, Solution, Enterprise or Domain Architects
- Engineering Managers
Trainers
Kenny Baas-Schwegler
João Rosa
About the
workshop
In this 2-day workshop, you’ll learn how you and your peers can design anti-fragile systems. It’s more than just technical expertise; it’s about nurturing a creative space where those building the software actively shape team organisation and architectural decisions. The approach is holistic, merging human dynamics with technical precision, empowering teams to design and architect their own systems.
What you will learn
- Foundational Principles of Domain-Driven Design: Start the journey through the fundamental concepts of Domain-Driven Design, setting the critical knowledge base necessary for modern software design.
- Strategic Domain-Driven Design Patterns: Engage in hands-on exploration of Context Mapping by using the strategic patterns that are critical for a evolvable software architecture. Immerse yourself in the ‘Bounded Context’ pattern, crucial for navigating complexity and refining domain models.
- Sociotechnical System Design: Grasp the essential role of sociotechnical system design within effective DDD. Learn strategies to synchronise software architecture with organisational structures, fostering mutual improvement and cohesion.
-
- Collaborative Modelling Techniques: Use different collaborative modelling techniques, including EventStorming, Domain Message Flow Modelling, and Wardley Mapping, essential for understanding the landscape and the domains, and to have an effective team collaboration.
- Designing Antifragile Systems: Receive an introduction to designing antifragile bounded contexts using residuality theory, and learn the basics of how Team Topology can help organise teams around these bounded contexts.
- Empowering Teams in Software Design and Architecture: Create an environment where team members take an active role and assume responsibility for the design and architecture of their software, thereby boosting commitment and sense of ownership.
Before
the workshop
To maximise your experience in this workshop, a foundational understanding of Domain-Driven Design is essential. We offer an optional brief introduction to Domain-Driven Design before the workshop begins, followed by a quick recap of the foundational principles at the start. This preparatory material is crafted to enhance your understanding and ensure you gain the utmost value from the workshop.
For those eager to advance their preparation, we suggest reading “Learning Domain-Driven Design” by Vladik Khononov. It provides clear, insightful guidance for Domain-Driven Design newcomers. Additionally, Eric Evans’ classic “Domain-Driven Design: Tackling Complexity in the Heart of Software” is a valuable resource for deepening your knowledge and is highly beneficial for workshop attendees.
Our workshop is designed to be interactive, immersing you in hands-on learning. For online sessions, we utilize Miro, a digital whiteboard platform, for collaborative activities. If you’re not familiar with Miro, we recommend the self-paced Miro Academy: Miro Participant Onboarding Course. This brief course will give you the essential skills to actively engage in the workshop.