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.
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 questionNo options to guess from: you write, the AI grades against the topic's rubric and tells you what level your answer reads at.
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.