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

Date: 2024-01-16 | create | tech | observe | research | software-engineering | software-architecture | domain-driven-design |

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:

Want more like this?

The best / easiest way to support my work is by subscribing for future updates and sharing with your network.