It's now 13 months since my most recent book (Applying Domain-Driven Design and Patterns [ADDDP]) was released and I have (fortunately) learnt a few things.

Not that I regret what I wrote in the book, not at all! It will be contemporary for a good many years to come, if I may say so, subjective as I am. What I'm thinking about for instance is LINQ which fast approaching, and I believe it might be a signal to lots of Microsoft-developers wanting to go for DDD. I also see LINQ as a technique that solves what I solved with NWorkspace, but without you having to write your own abstraction.

That said, there are clearly things I didn't write much about that I'd like to get to grips with at some point. The first thing that springs to mind is that I don't think I devoted enough space to Value Objects [DDD] in ADDDP. I now believe that they are extremely important in order to understand the heart of DDD and something to explicitly work hard on.

With a rich flora of Value Objects in your model, DDD newcomers would not get the "the-domain-model-is-very-similar-to-the-relational-database-model"-feeling that is quite common. Starting to learn DDD with Value Objects is probably a good pedagogic trick.

The Value Objects are also very powerful in connecting with the Ubiquitous Language [DDD]. What's more, you can use them for creating a little internal DSL (or several, of course) in the ordinary programming language of your choice, without having to swap immediately.