DDD Night School

INTENSIVE REMOTE COURSE for developers, analysts, product owners (including those with a day job!)

Learn to put the domain model to work! In six half-day sessions over 3 weeks, Eric Evans and Jessica Kerr work with participants over Zoom and other online collaboration tools. Optional homework adds hands-on coding for those who choose to spend the extra time.

During the pandemic, we’ve extensively reworked our training as a remote offering. Although nothing can quite match in-person interaction, there are some advantages — especially spreading the training over a longer time. This gives time for reflection, and makes it easier to accommodate into a busy schedule. Like night school!

Our Training Isn’t Just Technical Modeling Techniques

Finding and exploiting domain models is a key to success with large software systems. With a strong connection between the language used by experts, users, and developers; the right kind of models; and the right attention to implementation, we dramatically accelerate the process of translating the customers’ needs into working software. Zooming out to a strategic view maximizes the impact from our finite modeling and design efforts. This training will help participants strike a healthy, principled yet pragmatic balance of strategic and tactical, abstract and concrete.

We weave together lecture, discussion, and classroom exercises, including hands-on coding homework. In discussions, attendees have the opportunity to discuss their own experiences and relate their own work to the principles and techniques presented in the class.

Recommended Background

  • Some exposure to medium to large-scale software development in a multi-team environment.
  • Basic knowledge of object modeling and design.
  • We encourage non-technical managers and analysts to attend. A mixed class is ideal. To make the code exercises work, we only need half of the attendees to have programming skills on the target platform (basic Java).

Course Outline

Week 1: Model Exploration and Ubiquitous Language

  • Domain-driven design overview
  • Making implicit concepts explicit
  • Moving around in The Whirlpool
  • Ubiquitous Language
  • Brainstorming models
  • Techniques and pitfalls of bringing about a creative collaboration.

Week 2: Strategic Design

  • Context Mapping: A pragmatic approach to dealing with diverse models and designs on real projects
  • Relationships between subsystems, relationships between teams
  • Distilling the Core Domain: Distinguishing the strategic leverage point from the necessary but routine
  • Focusing effort
  • Clarifying a shared vision
  • Setting up a project for success.

Week 3: Implementation Concerns and Supple Design

  • Expressing a model in software
  • Patterns and techniques to tighten models and their connection to code
  • Making code obvious, easier to use and change
  • Modeling for transactional integrity and distributed systems (microservices)
  • Deeper into Strategic Design
  • Design/code challenge – model supple design with context map
  • In-depth discussion and Q&A, relating all topics to each other and to your own work.