preferences-discovery-process
Discovery process
Purpose
This document describes the discovery and design phases that precede implementation in domain-driven design. It adapts the DDD Starter Modelling Process for algebraic functional domain modeling, providing a structured approach to understanding business domains and decomposing them into well-bounded components. The discovery process produces informal artifacts like event storm sticky notes, business model canvases, and context maps that specification phases formalize into type systems and implementation phases realize in code.
Discovery is fundamentally collaborative and visual, involving domain experts, developers, and stakeholders in shared understanding before committing to formal specifications. The algebraic interpretation provides the conceptual bridge from these informal artifacts to rigorous type-level specifications.
Relationship to other documents
This document covers the discovery and design phases that produce inputs for several other preference documents. After completing discovery, consult these documents for detailed guidance on subsequent phases:
domain-modeling.md provides implementation patterns for the domain models discovered through this process, including smart constructors, validation, aggregate design, and module algebra patterns.
event-sourcing.md describes persistence patterns for the domain events identified during event storming and domain storytelling sessions.