Essential DDD Virtual Workshop - Feb 2023
February 21-23, 2023
This virtual workshop with Paul Rayner consists of 3 sessions on February 21-23 at 9:00 AM - Noon (MST) each day.
How do we overcome the overwhelming complexity of our business domains and quickly build software applications that evolve and adapt effectively?
Domain-Driven Design (DDD) is an approach to software development that promotes collaboration between different disciplines to solve complex business problems in the most effective way.
The aim of DDD is accelerating development for teams dealing with domain complexity.
What you will learn
In this workshop, you'll gain a thorough understanding of what DDD looks like, why it matters, and how to apply it to you, your team, and your organization. This workshop will provide you with a solid grounding in the foundational ideas, techniques and skills for doing DDD well in your own project context.
DDD is about shortening the time to value for customers, and doing this in a sustainable, repeatable manner.
Being both a way of thinking and a set of priorities, DDD can sometimes be perceived as overly abstract and amorphous. We'll overcome that by connecting everything in DDD together, highlighting what's most important, and give you practical tools to take away and apply on your project immediately.
"Fun, interesting, applicable!"
"This training connects the dots of the core concepts of DDD with a good mix of theory, experience & hands-on learning. It allowed me to find what the next step should be in my learning and applying to my DDD journey."
- Three instructor-led hands-on 3 hour online class sessions.
- Live instruction using Zoom and Miro (i.e. collaborative online whiteboard) in each session.
- After every workshop session you’ll have time for deep-dive discussions during optional “office hours” sessions with Paul, your instructor.
- You will need a good webcam, internet connection and microphone to participate in this workshop. In order to maximize engagement, we require all participants keep their webcams on during the workshop.
- We will send you detailed instructions for the workshop a couple of weeks prior.
- Upon finishing the class you will receive an electronic certificate of achievement.
The workshop is highly hands-on, varied, and interactive. We will be doing pairing and group exercises in Zoom breakout rooms. By spreading the training into shorter interactive virtual sessions, we minimize the impact to your daily work and keep your energy levels high.
We will be reading some code, not writing it, so you won't need an IDE or any dev tools to participate.
"Immersive. Understandable. Awesome! Paul has an excellent grasp of the concepts he teaches, and his techniques really help cement what is taught in your mind. He's an excellent communicator. I really enjoyed the way you taught this class."
Session 1 - Collaborative Modeling
- Explain the importance of domain modeling for complex domains
- Describe two types of complexity and their differences
- Identify areas your team would benefit from intentionally growing your shared language
- List current domain modeling techniques your team currently uses
- Use EventStorming to collaboratively discover a business process
Session 2 - Modeling in Code
- Recognize problems surfaced by vague intentions in code caused by implicit or missing domain concepts
- Mob programming to express an implicit domain concept explicitly in code
- Describe four key building block patterns for expressing domain models in code (i.e. values, entities, domain services, domain events)
- Refactor code to deeper insights using the building block patterns
- Explain role of domain events in scaling and decoupling
Session 3 - Supple Design
- Explain the role of domain modules in organizing code according to related domain concepts
- Practice modularizing domain concepts
- Describe connascence of name as a type of semantic coupling
- Explain the connection between connascence of name and context boundaries
- List the goals for identifying and managing context boundaries
- Identify key reasons for embracing multiple models
"Informative, eye opening, and practical. Paul's examples are very helpful and tangible! It helped me connect academic concepts to real world examples."
Who Should Attend
Anybody who works in software teams or with software teams will be able to fully participate in this workshop and take away concrete skills they can apply in real working situations. This includes software developers, architects, testers/QA, DevOps/DevSecOps, Product managers/owners, BA's, delivery managers, engineering managers and directors, and CTOs.
"This class is going to change the way you do your modeling and help you code maintainability and readability."
About Paul Rayner
Paul Rayner is a developer, instructor, coach, consultant, and popular conference speaker with over thirty years of software development experience.
Paul is the founder and chair of the Explore DDD conference, the premier domain-driven design conference in North America, and co-founder of DDD Denver. He is also the author of The EventStorming Handbook, and contributor to Behavior-Driven Development with Cucumber.
He provides software design training and coaching through Virtual Genius. He lives in Denver, Colorado, with his wife and two teenagers.