Domain-Driven Design (DDD) is an excellent technique for crafting deep, meaningful object models and using them to implement flexible, scalable, and robust software systems. But most of the DDD literature focuses on the design and implementation patterns, which, while highly useful, are not the main point of contribution of DDD. DDD’s primary contribution to the craft is the focus on the “ubiquitous language” of the domain – of truly understanding and modeling the domain, using the same terminology that is used by domain experts and business people. This forces the developers to learn and use the domain language when communicating with each other, with business people, and most importantly, when modeling the system and writing code. That is the strategic advantage of DDD, and is a topic often given too little attention in introduction-to-DDD materials. This talk focuses primarily on the Domain, and less on the patterns and practices, to encourage developers to appreciate and use the technique to greater advantage.
I write science fiction. And software. Object Mechanic at ThoughtWorks in San Francisco, CA. Author, inventor, entrepreneur, musician, and lover of puns.