📓 Cabinet of Ideas

This Is the Best Book I've Ever Read on Domain Driven Design

This is the best book I’ve ever read on Domain Driven Design #

Excerpt #

Domain Driven Design (DDD) is a highly-praised software design practice for effectively architecting software at scale. The idea is to model the real-world domain as close as possible so that you eliminate “unnecessary complexity” - complexity that is not inherent to the problem you’re solving but exists due to how you chose to implement the solution.


Domain Driven Design (DDD) is a highly-praised software design practice for effectively architecting software at scale. The idea is to model the real-world domain as close as possible so that you eliminate “unnecessary complexity” - complexity that is not inherent to the problem you’re solving but exists due to how you chose to implement the solution.

Unfortunately a lot of books, videos, and blog posts teach DDD through the use of “software patterns”. By definition these concepts do not actually exist in the real-world and are thus “unnecessary complexity”. This leads to a lot of confusion as they’re adding that which we’re trying to remove.

I’ve read and attended dozens of books, blog posts, and tech talks and one book stands head and shoulders above the rest for clearly explaining effective DDD in a way that is easy to understand and implement.

The Best DDD Book #

The best book on DDD I’ve ever read is Domain Modeling Made Functional by Scott Wlaschin (who also creates some great resources for learning F#).

I love this book and think it does an excellent job at explaining DDD because:

  • It starts with a real-world problem - building software for stakeholders
  • It walks you through the process step-by-step of building software with domain experts
  • It focuses on building stable software that is also maintainable and evolvable over time
  • It refrains from infusing “unnecessary complexity” in the form of software patterns
  • It provides example code so clear that it’s easily portable across languages, technologies, and projects

BONUS: It uses F# which is my favorite language and top-tier for modeling domains without unnecessary complexity.

If you’re interested in DDD and particularly if you’ve been struggling to productionalize DDD in your software practice, I can’t recommend this book enough.

If you liked this post you might also like: