I stumbled upon Greg Young's talk 7 Reasons why DDD Projects Fail where he mentions something he calls DDD-Lite at 7:20.
Summarizing, he basically says some use DDD as a pattern languages (entities, repositories, value objects, services, etc) without doing anything else related to DDD. He postulates 60% or more of domain models in .Net are DDD-Lite. He thinks DDD-Lite is basically building up a language around dependency injection, something you don't really need to do. He says either do DDD entirely or do something simpler. Otherwise he claims a person is putting forth all of this work in building good abstractions, but without any real benefits.
I must admit I don't know as much about DDD as I would like, and have not tried to use it yet. I also haven't read Eric Evan's book either. I am much more interested in Dependency Injection and many, many books and blogs on this subject use terms and reference concepts from Eric Evans' DDD book. This is where I've been exposed to DDD concepts. Books I've been reading that do this include:
- Dependency Injection in .NET
- Microsoft .Net: Architecting Applications for the Enterprise
- Brownfield Application Development in .NET
If one wants to do Dependency Injection, what are simpler alternatives over doing "DDD-Lite?" It sounds like to me building good abstractions are quite useful regardless of if one is using concepts from DDD in a "DDD-Lite" way. (see Mark Seemann's blog posts: Interfaces are not abstractions, and Towards better abstractions). I have a hard time believing everyone doing Dependency Injection happens to also be doing (or needs to do) full fledged DDD. Did I somehow misunderstood Greg Young's argument about DDD-Lite?