What is domain-driven design?
Domain-driven design is the act of designing software with emphasis towards understanding and enhancing the domain it is operating in.
How might a developer learn the domain that their software project models?
A developer learns the domain that their software project enhances by communicating with domain experts. By communicating, a developer will be able to interpret what parts of the domain are relevant for inclusion in the domain model. The domain model produced will be used to influence the design of the developer's software project.
Expression of the domain model might be graphical, verbal, or written. It's important to note that the domain model is not any particular artifact, but the set of ideas that any given artifact intends to convey.
In the resulting development of the software project, feedback and questions regarding the domain model will need to be considered. Ongoing communication with domain experts is important to ensure that refinements to the domain model are valid and useful.