DDD is quite hot, has been for a while and will be for the foreseeable future. Which is why you have to read Eric Evans’ ‘Tackling Complexity in the Heart of Software’. I also enjoyed Jimmy Nilsson’s 'Applying Domain-Driven Design'
But shame on me: After reading both these books, I did not have that “revelation” feeling. (That one where you want to get up in the middle of the night and go design/develop something with your new skills/knowledge). Don’t get me wrong – these are excellent books, definite “must reads”. In fact, escalate that: You will find yourself using these as reference guides quite often. Worth their space on you bookshelf!
Why then the missing “revelation feeling”?
I had the opportunity to have Niclas Nilsson over for dinner recently, and we had some interesting discussions about a wide range of topics. At some stage DDD came up, and after our chat I understood my experience regarding these books and DDD much better. And since I know now it is not because I’m stupid, here is the revelation part
If we look at my short definition of DDD
DDD is the natural/good way to put OO into practice. DDD = OO + “How to map OO to Business”
I have been living in a specific domain for years, and by now have the “ubiquitous language” and "how to map OO to business” portions as an intuitive portion of my arsenal of developer tools.
Similarly I have been doing OO for years, and hopefully have a pretty good understanding of all things OO.
So I have actually been practising DDD (in some form or other) for years now. (Frankly, when reading Jimmy’s book, it kind of felt like a mirror to my personal “developer journey”). And along came DDD, providing some structure around all this. And after reading portions of Eric’s book again, Revelation: This is exactly what he is saying! So while not stupid in the way I originally thought, still some stupidity on my side;-)
And the conclusion?
- Eric, Jimmy: You guys have great books, and I understand how great they are much better now that I have this piece of insight
- DDD Rocks