1 DAY WORKSHOP
Domain-Driven Design: Refactoring to Deeper Insights
Designing a deeper model for enabling breakthroughs in product development
Are you struggling with an initial naive domain model that’s more of an obstacle than an aid in your product discovery journey? Finding that your code is out of sync with the intricate complexities of your domain complexities and the core business concepts? Discover how “Domain-Driven Design: Refactoring to Deeper Insights” can revolutionise your approach, transforming your basic model into a resilient, supple architecture that captures the true complexities of your business and catalyses breakthroughs in product development.
This workshop is designed with software people in mind, namely ones involved in designing and writing software. Titles vary, but can fall under one of those:
- Software Developers & Engineers with 5 years of experience
- Tech Leads
- Software or Solution Architects
- Engineering Managers
“Domain-Driven Design: Refactoring to Deeper Insights” is an intensive one-day workshop that guides participants through several iterations of Eric Evans’s modelling whirlpool, transforming a basic initial software model into one that intricately reflects the nuanced concerns of domain experts.
It provides a deep dive into Part IV of Evans’s seminal work on Domain-Driven Design (DDD), tailored for Java and C# developers eager to expand their expertise beyond basic patterns like aggregates, entities and value objects.
The workshop recognises that while many products start with a simplistic model, this foundation often limits innovation as the project matures. Attendees will work with outcomes from Eventstorming, Example Mapping, and CRC-cards sessions as a springboard for hands-on coding exercises in C# and Java. Through iterative refinement, the workshop demystifies the principles of supple design, paving the way for models that not only demonstrate a profound grasp of the domain but also foster critical breakthroughs in product development.
What you will learn
- Evolving Software Models: Understand the process of advancing from a basic software model to a complex, refined system that deeply resonates with the domain experts’ vision.
- Practical Coding Challenges: Apply these modelling techniques to real-world coding challenges using C# and Java.
- Supple Design Principles: Learn the principles of supple design and how they contribute to a more flexible and adaptive model.
- Refactoring as a Strategic Tool: Comprehend how continuous refactoring goes beyond code improvement to become a strategic tool for product differentiation and innovation.
- Refactoring to deeper insights: Delve into the transformative concepts of chapter 13 from Eric Evans’s blue book, gaining insights that can be directly applied to your projects.
- Achieving product Breakthroughs: Equip yourself with the knowledge to enable product development breakthroughs that can redefine your presence in the market.
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.