Please log in to watch this conference skillscast.
DDD is often invoked to justify perfectionism, or sometimes it sets up in people's minds an intimidating, impossible standard. This leads to endless analysis and polishing or indecisive thrashing. Although DDD does value polish and refinement in certain aspects of the software, the thrust of it is experimental and messy -- and always pragmatic.
For example, bounded contexts are an explicit acknowledgement of the need to confine our intensive modelling within a modest scope. And within that modest scope, we iterate toward refinement, sometimes having insights along the way that lead to much deeper, more elegant models ... but only sometimes, and unpredictably. Good designs always have flaws. And losing a pragmatic, balanced view of all this makes projects slow! Paradoxically, moving slowly means less exploration, less iteration and therefore worse design.
This has happened to most serious designers. It has happened to me. This balance doesn't usually happen without conscious attention, and it helps to have some concrete techniques for making well-designed, imperfect software. We can also shift our mindset to produce better designs by avoiding the pitfalls of idealism.
YOU MAY ALSO LIKE:
- Lightbend's Fast Track to Akka with Java (in London on 16th - 18th August 2017)
- F# eXchange 2018 (in London on 5th - 6th April 2018)
Good Design is Imperfect Design
Eric Evans, author of Domain-driven Design: Tackling Complexity in the Heart of Software is a thought leader in software design, domain driven design and domain modeling and particularly focuses on strategic design.