DDDD and CQS: Getting Started

There are a number of good resources for getting started on Distributed Domain-Driven Design as well as architectural-level Command Query Separation (not to be confused with CQS as a programming paradigm).

Basic Concepts

For starters, you should be familiar with "regular" DDD: Domain-Driven Design, DDD Quickly, and Think DDD.

Then, you'll probably want to understand about distributed systems because the way that you think about programming in a distributed environment is most definitely not the traditional "request/response" paradigm: Enterprise Integration Patterns, Pattern-Oriented Software Architecture, Volume 4 (Distributed Computing), and Distributed, Event-Based Systems.

From there, you'll want to read up just a bit on Command Query Separation and SOA on Udi Dahan's blog as well as some of the processing methods using messaging.

Videos & Screencasts

You may want to allocate a block of time. I can promise you it is probably the best few hours you'll ever spend. Think of this as an investment. If you spend all day writing code, wouldn't it be nice to "sharpen the saw" from time to time?

With that block of time there are several videos that are worth watching. I advocate watching them in order listed below. I had to watch each several times to really have things sink in.

devTeach - The best "primer" to DDDD and CQS

European Virtual ALT.NET Screencast - The quality of the video isn't the best, but it expands upon the original concepts in the devTeach video.

Eric Evans interviews Greg Young

Greg Young discusses State Transitions in DDD

Seattle ALT.NET Meeting


Once you're done watching those videos, you'll be able to better understand Greg Young's blog posts.

In addition, there are a number of other really good resources: