DDD field notesA practical companion
Eric Evans / Domain-Driven Design

Better models.
Less friction.

Useful ideas for the code in front of you. Start with a problem you recognize, see the pattern, and try one small change.

16 field notes2–3 minutes eachCode + diagrams
Start here / Chapter 9

One rule. Three jobs.

Specification
ValidateDoes this fit?
SelectWhich ones fit?
Build to orderMake one that fits.
Change a requirement. Watch all three respond.↗

What’s getting in your way?

Choose a familiar pain point, or browse the whole collection.

01

One rule. Three jobs.

Validate a result, find matches, or build something that fits.

02

Build rules out of smaller rules.

AND, OR, and NOT produce another specification you can use anywhere.

03

Separate “acceptable” from “preferred.”

Requirements decide what qualifies. A strategy decides how to choose.

04

Calculate first. Change state second.

Make previews safe and commands explicit about what they guarantee.

05

Keep a whole idea together.

Replace scattered primitives with a small immutable domain concept.

06

Draw the boundary around the promise.

Group the state that must remain consistent when a change commits.

07

The missing class may be a missing idea.

Treat repeated conditionals and awkward conversations as modeling clues.

08

Say the rule without mentioning a table.

Use a real scenario to test whether the model can carry the conversation.

09

One word can have two valid meanings.

Keep each model coherent within an explicit boundary.

10

Translate meaning at the edge.

Keep a vendor or legacy model from dictating your own.

11

Separate making from finding.

Hide assembly and retrieval behind interfaces that express the model.

12

Let the folders tell the domain story.

Group concepts that change together for a business reason.

13

Keep the algorithm out of the business story.

Express the problem in domain terms, then delegate the computation.

14

Spend your best design effort unevenly.

Protect the part of the model that makes the product valuable.

15

Unblock the system with a modest implementation.

Keep the contract real while the clever algorithm is still being built.

16

Model the rules that shape the instances.

Separate configurable definitions from the everyday objects they govern.

A useful first pass

Follow the rule into the design.

About this guide & the book

An independent reading companion to Eric Evans’s Domain-Driven Design: Tackling Complexity in the Heart of Software. These notes draw on the supplied book text and chapter files, with emphasis on patterns you can apply to existing code. Each note points back to its chapter and section.

Explanations, diagrams, and TypeScript examples are original adaptations. Code blocks illustrate a design decision and may omit surrounding types, error handling, or persistence details. The three marked interactive examples run locally in your browser. No book text is hosted here.

This is a selected field guide, not a chapter-by-chapter summary. The chapter references are more useful than page numbers because the supplied text’s page markers do not reliably match print editions. For a first application, choose one troublesome rule or boundary and test the model against real examples.