Skip to main content

Learning path

Domain-Driven Design learning path: everything to study, topic by topic

Comprehensive assessment covering Domain-Driven Design principles from Eric Evans and Vaughn Vernon. Covers strategic design (bounded contexts, context mapping, ubiquitous language), tactical patterns (aggregates, entities, value objects, domain events), domain modeling, CQRS/Event Sourcing, and DDD application in microservices and legacy modernization.

Short answer

To learn Domain-Driven Design, work through 6 modules and 26 topics in the order they build on each other. It starts with DDD Foundations, then moves on to Strategic Design and Tactical Patterns. Use the map as a checklist, or measure your level and study only what is missing.

6
modules
26
topics
60
min to assess

What you will study

Topics are grouped by module. Open one to see its objectives and key concepts.

1 · DDD Foundations5 topics
  • Ubiquitous Language

    The shared, precise vocabulary developed collaboratively between domain experts and developers that is used consistently in code, documentation, and conversation. Covers how to discover, build, and evolve a ubiquitous language within a bounded context.

    Objectives

    • Define ubiquitous language and explain why inconsistent terminology increases development costs
    • Identify gaps between business vocabulary and code naming in a sample codebase

    Key concepts

    • shared vocabulary
    • domain expert collaboration
    • language in code
    • model-driven language
    • language evolution
    • context-specific meaning
    • translation cost
  • Bounded Contexts

    The explicit boundary within which a domain model applies and its ubiquitous language is consistent. Covers how the same term can mean different things in different bounded contexts, and how context boundaries map to team and system boundaries.

    Objectives

    • Explain why the same entity (e.g. 'Order') can legitimately have different models in different contexts
    • Draw a context boundary for a simple e-commerce domain and justify the split

    Key concepts

    • context boundary
    • model applicability
    • context isolation
    • cross-context translation
    • team alignment
    • single model per context
    • ambiguous terms across contexts
  • Subdomains

    Partitioning the problem space into core, supporting, and generic subdomains based on business value and competitive differentiation. Covers how subdomain classification drives investment decisions and influences whether to build, buy, or outsource.

    Objectives

    • Classify subdomains as core, supporting, or generic for a given business
    • Explain why investing in generic subdomains is wasteful compared to off-the-shelf solutions

    Key concepts

    • core subdomain
    • supporting subdomain
    • generic subdomain
    • competitive advantage
    • build vs buy
    • investment allocation
    • problem space vs solution space
  • Strategic Design Thinking

    Approaching system design from the business problem space before jumping to technical solutions. Covers domain discovery, knowledge crunching with domain experts, and how strategic thinking prevents over-engineering and misaligned models.

    Objectives

    • Describe a knowledge crunching session and the artifacts it produces
    • Explain why premature technical solutions lead to models that fight the domain

    Key concepts

    • knowledge crunching
    • domain discovery
    • model-driven design
    • business alignment
    • iterative refinement
    • problem space exploration
    • domain expert engagement
  • Domain Storytelling

    A collaborative modelling technique where domain experts narrate how the domain works using pictographic language. Covers pictograms, scenarios, and how domain storytelling helps discover bounded contexts and ubiquitous language.

    Objectives

    • Explain the pictographic notation of domain storytelling and its three elements
    • Describe how a domain storytelling session helps surface bounded context boundaries

    Key concepts

    • pictographic language
    • domain scenario
    • actors and work objects
    • collaborative modelling
    • workflow discovery
    • boundary identification
    • domain storytelling notation
2 · Strategic Design5 topics
  • Context Mapping Patterns

    Techniques for describing the relationships and integrations between bounded contexts. Covers Partnership, Shared Kernel, Customer-Supplier, Conformist, Anti-Corruption Layer, Open Host Service, Published Language, Big Ball of Mud, and Separate Ways.

    Objectives

    • Select the appropriate context mapping pattern given a team relationship and integration scenario
    • Explain when an anti-corruption layer is necessary and what it protects against

    Key concepts

    • anti-corruption layer
    • open host service
    • published language
    • shared kernel
    • conformist
    • customer-supplier
    • partnership
  • Big Picture Event Storming

    A workshop-based discovery technique that uses domain events on a timeline to explore an entire business domain collaboratively. Covers facilitating event storming, identifying bounded contexts, hotspots, and pivotal events at scale.

    Objectives

    • Describe the steps and materials needed to run a Big Picture Event Storming session
    • Explain how pivotal events help identify bounded context boundaries

    Key concepts

    • domain event timeline
    • hotspot identification
    • pivotal event
    • bounded context emergence
    • facilitation
    • aggregation of stickies
    • problem space exploration
  • Customer-Supplier Relationships

    The upstream-downstream context relationship where the upstream team (supplier) provides a service or model that the downstream team (customer) consumes. Covers power dynamics, negotiation, and protecting downstream teams from upstream volatility.

    Objectives

    • Identify upstream and downstream contexts in a real integration scenario
    • Recommend a strategy for protecting a downstream team from upstream breaking changes

    Key concepts

    • upstream context
    • downstream context
    • supplier power
    • customer power
    • conformist vs negotiated
    • upstream volatility protection
    • interface contract
  • Open Host Service and Published Language

    Context mapping patterns where a bounded context exposes a well-defined protocol (OHS) and a shared formalized language (Published Language) for multiple downstream consumers. Covers API design as OHS, versioning strategies, and schema registries as Published Language.

    Objectives

    • Explain when to use Open Host Service over a point-to-point integration
    • Describe how Published Language reduces integration friction for multiple consumers

    Key concepts

    • open host service
    • published language
    • protocol exposure
    • versioning strategy
    • schema registry
    • multiple consumer support
    • API as published language
  • Core Domain Distillation

    Identifying and protecting the most strategically important part of the domain — the core domain — from supporting and generic concerns. Covers the distillation document, core domain vision, and how to focus the best engineering talent on core differentiation.

    Objectives

    • Write a domain vision statement that distinguishes core from supporting domains
    • Explain how distillation guides investment decisions in engineering teams

    Key concepts

    • core domain
    • distillation document
    • generic subdomain extraction
    • supporting subdomain offload
    • talent investment
    • competitive differentiation
    • domain vision statement
3 · Tactical Patterns6 topics
  • Entities and Value Objects

    Two fundamental building blocks of the domain model. Entities have identity that persists through state changes; value objects are defined entirely by their attributes and are immutable. Covers identity strategies, value object equality, and when to prefer value objects.

    Objectives

    • Distinguish entities from value objects by identity semantics and design a value object in code
    • Explain why immutability in value objects prevents a class of concurrency bugs

    Key concepts

    • entity identity
    • value object immutability
    • structural equality
    • identity equality
    • surrogate key
    • natural key
    • immutable value object
  • Aggregates and Aggregate Roots

    Clusters of domain objects treated as a single unit for data changes. The aggregate root is the sole entry point for modifying the cluster. Covers aggregate boundaries, the one-transaction-per-aggregate rule, and referencing aggregates by identity.

    Objectives

    • Design an aggregate boundary for an e-commerce Order with line items and discounts
    • Explain why referencing aggregates by ID (not object reference) protects consistency

    Key concepts

    • aggregate root
    • consistency boundary
    • one aggregate per transaction
    • reference by identity
    • aggregate size
    • invariant enforcement
    • cluster of objects
  • Domain Events

    Immutable records of something significant that happened in the domain. Covers naming conventions (past tense, domain language), publishing events from aggregate roots, event handlers, and how domain events enable eventual consistency between aggregates.

    Objectives

    • Name domain events correctly and identify where they should be raised in the domain model
    • Explain the difference between a domain event and an integration event

    Key concepts

    • past-tense naming
    • immutable event
    • aggregate root publishes event
    • event handler
    • eventual consistency trigger
    • domain vs integration event
    • event schema
  • Domain Services

    Stateless operations that express domain logic that does not naturally belong to any single entity or value object. Covers when to introduce a domain service, naming in ubiquitous language, and how domain services differ from application services.

    Objectives

    • Identify when a piece of domain logic warrants a domain service vs living on an entity
    • Distinguish domain services from application services in a layered DDD architecture

    Key concepts

    • stateless operation
    • domain vs application service
    • domain logic without owner
    • named in ubiquitous language
    • service granularity
    • coordination logic
    • thin application layer
  • Repositories

    Abstractions that mediate between the domain model and the data mapping layer. Covers repository interface design in domain terms, aggregate-per-repository convention, the persistence ignorance principle, and avoiding repository bloat.

    Objectives

    • Design a repository interface using domain terminology rather than database terminology
    • Explain the difference between a repository and a DAO and why the distinction matters

    Key concepts

    • persistence ignorance
    • repository interface
    • aggregate root repository
    • collection-like abstraction
    • domain-driven query methods
    • repository vs DAO
    • unit of work
  • Factories

    Domain objects responsible for complex creation logic when constructors are insufficient. Covers factory methods on aggregate roots, standalone factory objects, reconstitution from persistence, and when factories replace constructors.

    Objectives

    • Implement a factory method on an aggregate root that enforces creation invariants
    • Explain when reconstitution factories differ from creation factories

    Key concepts

    • factory method
    • factory object
    • reconstitution factory
    • creation invariant
    • complex assembly
    • encapsulated creation
    • aggregate creation
4 · Domain Modeling4 topics
  • Aggregate Design Principles

    Heuristics for sizing and structuring aggregates correctly: protect invariants, design small aggregates, reference other aggregates by identity, and update multiple aggregates using eventual consistency. Covers the four rules from Vernon's IDDD.

    Objectives

    • Apply Vernon's four aggregate design rules to refactor an oversized aggregate
    • Explain why large aggregates cause performance and contention problems

    Key concepts

    • protect invariants within boundary
    • design small aggregates
    • reference by identity
    • eventual consistency between aggregates
    • transactional boundary
    • aggregate size smell
    • business invariant
  • Invariant Enforcement and Consistency Boundaries

    Designing aggregates so that all business rules (invariants) are always satisfied within the consistency boundary. Covers guard clauses, domain exceptions, the always-valid pattern, and deferred validation trade-offs.

    Objectives

    • Implement the always-valid pattern for an aggregate that enforces a minimum order value
    • Compare the always-valid pattern vs deferred validation and articulate the trade-off

    Key concepts

    • business invariant
    • always-valid pattern
    • guard clause
    • domain exception
    • deferred validation
    • consistency boundary
    • invariant scope
  • Specification Pattern

    Encapsulating business rules as composable, testable specification objects. Covers the Specification interface, composite specifications (and/or/not), and using specifications for validation, selection, and construction.

    Objectives

    • Implement a composite specification for an eligibility rule combining three criteria
    • Explain how the specification pattern keeps business rules out of query logic

    Key concepts

    • specification interface
    • composite specification
    • and-specification
    • or-specification
    • not-specification
    • validation use case
    • selection use case
  • Anemic vs Rich Domain Models

    The contrast between anemic domain models (data containers with no behavior) and rich domain models (objects with both data and business behavior). Covers why anemia is an anti-pattern, its origins in procedural thinking, and how to refactor toward richness.

    Objectives

    • Identify the anemic model anti-pattern in a code sample and refactor to a rich model
    • Explain why anemic models shift domain logic into service layers and the problems that causes

    Key concepts

    • anemic domain model
    • rich domain model
    • behavior encapsulation
    • transaction script
    • domain logic leakage
    • service-heavy architecture
    • object-oriented modeling
5 · Event Sourcing & CQRS4 topics
  • Event Sourcing Fundamentals

    Persisting the state of an aggregate as a sequence of domain events rather than the current snapshot. Covers event append-only stores, replaying events to rebuild state, snapshotting for performance, and the audit trail as a first-class capability.

    Objectives

    • Explain how aggregate state is rebuilt from an event stream and when snapshots are needed
    • Describe the audit trail benefit of event sourcing and a business use case that requires it

    Key concepts

    • append-only event log
    • state reconstruction
    • event replay
    • snapshot
    • audit trail
    • temporal queries
    • event schema evolution
  • CQRS Pattern

    Command Query Responsibility Segregation separates the write model (commands that change state) from the read model (queries that return data). Covers task-based UIs, read model optimisation, and the spectrum from simple to fully distributed CQRS.

    Objectives

    • Design a CQRS system where the write model uses aggregates and the read model uses denormalized projections
    • Explain when the simplest CQRS (same database, separate objects) is sufficient vs full infrastructure separation

    Key concepts

    • command model
    • query model
    • read model optimisation
    • task-based UI
    • eventual consistency
    • separate data stores
    • CQRS spectrum
  • Event Store and Projections

    The infrastructure for persisting and reading event streams. Covers event store design, stream partitioning, projections that build read models from events, and catch-up subscriptions for rebuilding views.

    Objectives

    • Design a projection that builds a reporting read model from an event stream
    • Explain how catch-up subscriptions enable adding new projections without replaying all history manually

    Key concepts

    • event stream
    • stream partitioning
    • projection
    • catch-up subscription
    • read model rebuild
    • optimistic concurrency
    • event store guarantee
  • Eventual Consistency in DDD

    Managing the window of inconsistency between aggregates that communicate through events. Covers the saga pattern, process managers, compensating transactions, and designing UIs that tolerate temporary inconsistency.

    Objectives

    • Design a saga for a multi-step checkout process across Payment and Inventory bounded contexts
    • Explain how compensating transactions maintain business correctness when a saga step fails

    Key concepts

    • consistency window
    • saga pattern
    • process manager
    • compensating transaction
    • eventual consistency UI
    • idempotent event handler
    • at-least-once delivery
6 · DDD in Practice2 topics
  • DDD with Microservices

    Applying DDD bounded contexts as the primary heuristic for microservice decomposition. Covers aligning service boundaries to context boundaries, avoiding distributed monoliths, team topologies aligned to bounded contexts, and the strangler fig pattern for migration.

    Objectives

    • Derive microservice boundaries from a context map and justify the decomposition
    • Identify distributed monolith symptoms and propose a bounded context realignment

    Key concepts

    • one service per bounded context
    • distributed monolith smell
    • team topology alignment
    • strangler fig pattern
    • bounded context as deployment unit
    • context boundary as API boundary
    • Conway's Law
  • DDD Anti-patterns and Refactoring

    Common mistakes when applying DDD: the anaemic model, god aggregates, leaking domain logic into application services, ignoring ubiquitous language, and using DDD for simple CRUD. Covers strategies to detect and refactor each anti-pattern.

    Objectives

    • Diagnose at least three DDD anti-patterns in a described system and propose refactoring steps
    • Explain when NOT to apply DDD and what simpler approaches are appropriate

    Key concepts

    • god aggregate
    • anemic model
    • ubiquitous language violation
    • DDD for CRUD
    • domain logic in application layer
    • bounded context sprawl
    • refactoring toward richness

Levels: Junior, Mid, and Senior

Explain it in your own words

Graded by AI · no account · 1 question

No options to guess from: you write, the AI grades against the topic's rubric and tells you what level your answer reads at.

0 / 600

Already studying Domain-Driven Design?

The assessment measures topic by topic, and your plan skips what you already know.

Open to read. An account is only needed to be measured.

Frequently asked questions

Where should I start studying Domain-Driven Design?

Start with DDD Foundations: Ubiquitous Language, Bounded Contexts, and Subdomains. The map orders topics by what they depend on, so each one prepares the next.

How long does a full Domain-Driven Design assessment take?

A full assessment of this path takes about 60 minutes. Study time depends on where you start; a diagnostic shows which topics you can skip.

Do I need an account to use this page?

No. The map, objectives and key concepts are open. You only need an account to be measured, get your gap by topic and receive a plan.