As an early proponent of Domain-Driven Design, Evans elucidated the core concepts, but several crucial implementation details were missing. Many developers attempting to implement DDD grappled with challenges such as integrating pure models with framework details. Early DDD practitioners also struggled with applying the Dependency Inversion Principle between the Domain Layer and Infrastructure Layer. Robert C. Martin's "Clean Architecture," which addressed this issue with an elegant solution, wasn't introduced until 2012. This initial implementation vagueness coupled with the lack of guidelines in the book occasionally led to a perception of DDD as a theoretical, and not practical, concept.
Additionally, Evans gave considerable attention to tactical patterns, such as Entity and Domain Service. This focus often diverted readers from strategic patterns like ubiquitous language and the evolutionary nature of models. Consequently, many developers perceived DDD more as a collection of tactical patterns rather than as a guiding strategic concept.
While Evans emphasized the Ubiquitous Language as foundational to Domain-Driven Design, the means to formulate such a language was unclear to many developers. The introduction of the term "Event Storming" by Alberto Brandolini a decade after Evans' publication addressed this gap, but the interim saw a decade of frustration for many DDD enthusiasts.
To sum up, "Domain-Driven Design: Tackling Complexity in the Heart of Software" is undoubtedly a seminal work. When released in 2003, the book was avant-garde, setting a new direction for the software industry. However, it took almost another decade for supporting pillars like Clean Architecture and Event Storming to emerge, enabling a comprehensive application of DDD.