Good Design is Imperfect Design

27th April 2017 in London at CodeNode

There are 28 other SkillsCasts available from DDD eXchange 2017

Please log in to watch this conference skillscast.

631610172 640

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.


Thanks to our sponsors

Good Design is Imperfect Design

Eric Evans

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.