Goodreads helps you keep track of books you want to read.
Start by marking “Domain-Driven Design: Tackling Complexity in the Heart of Software” as Want to Read:
Domain-Driven Design: Tackling Complexity in the Heart of Software
Enlarge cover
Rate this book
Clear rating
Open Preview

Domain-Driven Design: Tackling Complexity in the Heart of Software

4.15  ·  Rating details ·  3,590 ratings  ·  158 reviews
"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving und ...more
Hardcover, 560 pages
Published August 30th 2003 by Addison-Wesley Professional (first published August 20th 2003)
More Details... edit details

Friend Reviews

To see what your friends thought of this book, please sign up.

Reader Q&A

To ask other readers questions about Domain-Driven Design, please sign up.
Popular Answered Questions
M definitively though
but careful, DDD is about approach, not about a pattern library (as which it is sometimes mistakenly taken for).
The book, as you…more
definitively though
but careful, DDD is about approach, not about a pattern library (as which it is sometimes mistakenly taken for).
The book, as you can see from my review is worth looking into, but, I felt a (too) hard read(less)

Community Reviews

Showing 1-30
4.15  · 
Rating details
 ·  3,590 ratings  ·  158 reviews

More filters
Sort order
Jan 15, 2015 rated it really liked it
This book is impossible to rate.

The ideas in this book are incredibly useful, and I am grateful to the author for sharing them with the software development community. In this perspective, not reading this book borders on professional negligence.

Unfortunately, I find the writing practically impenetrable. There are so many quaint and opaque verbs and adjectives that never get defined or even justified. Does "tightening" make a model "richer" and/or "deeper"? What about "enriching"? Is either one
Alexander Petrov
Jun 15, 2013 rated it it was amazing
Amazing book!

Every programmer must read it! As well as Pragmatic Programmer by Dave Thomas and Andy Hunt and Refactoring by Martin Fowler.

There are many books tells you to separate domain logic from other parts like UI and Persitence, because it is the most valuable part of application and you should be able to make changes as quick, as your business changes and as your understanding of domain improves.

But! There are very few books about how to design domain layer of your application!

This is th
Oct 21, 2012 rated it it was amazing
While reading this book I complained a lot about the author repeating the same ideas supported by different examples. However, I really enjoyed reading it and I feel I gained a lot of knowledge about designing software applications. Of course, this knowledge is purely theoretical, but we all have to start somewhere.

One thing I really appreciated is that the author doesn’t isolate the design and development part from the human interaction. One has to know the team members’ skills and employ them
Jun 12, 2018 rated it did not like it
It is a quite famous book but I did not enjoy it. I finished the book just because we had been reading it together with my colleagues. There are several interesting poinst but otherwise it is too long. Indeed, summary at InfoQ is available.
This book is a fundamental one in the shelf of every software developer who tends overcome the difficulty of creating complex software in a maintainable fashion.
Lars Cronsioe
Inexplicably dull for such an important subject. Given the American habit of paying people per page, signal/noise ratio is way too low and he keeps regurgitating the few valid points over and over. This book could have been written so much snappier and more entertaining.

Really, most of this is common sense, although sadly not very common in the developer community, which is generally more fascinated with technical gadgetry than actual mature software engineering. Technical people usually stink a
Oct 28, 2009 rated it it was amazing
Shelves: own, nonfiction, tech
Great, great book. However, you should probably have at least some understanding of agile, design patterns, and refactoring before reading this book if you truly want to get the most out of it. The book talks about using model-driven design to create a domain model and ubiquitous language that everyone in the company can leverage - a topic that seems to be getting more attention as of late.

Some of the topics are pretty abstract, and I would have liked to see some more code and concrete examples
Feb 02, 2016 rated it really liked it
Please take this with grain of salt; most of my reading of this book was fast reading.

What I like about this book is that there is a genuine trial to bring examples to the various concepts. This is done throughout the book.

What I don't like:
- Too much repetition and too verbose
- I feel that the statements are structured in a way that makes it really hard for fast reading
- Even with examples, sometimes I feel it's too much theory
Sebastian Gebski
Feb 03, 2013 rated it it was amazing
Actually, it's the 2nd time I've read that book. After the 1st time I was quite happy with what I've received - I've generally agreed to author's approach, even more: I've found it rather obvious ("so not a big deal") - I'd do pretty much the same in the example cases, I agree that those design decisions are more reasonable, etc.

Some time has passed, I've discussed DDD with several people on several occassions and I think now I got the value of this book: author does not only gives you the examp
Jan 29, 2010 rated it it was amazing
Been reading this on and off for a while now. I would put this on the "must read" shelf of anyone involved in the development side of software engineering, including programmers, designers, architects, even development managers. It presents a lot of important points and topics that some developers sort of know or understand but never clearly defined and put forth. There are best practices on patterns, approaches to design and development, architecture, and communication.

It takes OO development u
Apr 12, 2012 rated it really liked it
Excellent software engineering book. It presents a working strategy for writing and organizing software code in classes and packages in a clean and usable environment. The book presents a "common language" concept that improves communication between team members and between the team and stake holders. It presents strategies for managing code by associating class names and packages with specific functionalities, proving and common understanding of what-goes-where for a team working with domain dr ...more
Jose  Seco Sanz
May 11, 2015 rated it really liked it
Shelves: technical, to-re-read
There is a lot of things to learn in here. Probably I should read it again.
MD Sayem Ahmed
Mar 21, 2018 rated it it was amazing
Shelves: software-design
This book is a must-read for anyone willing to learn Domain Driven Design, which I believe should be everyone. As a developer we often forget that our main responsibility is to solve a business problem, not to build an MVC web application with controllers, services, and getter-setter entities. Domain Driven Design teaches us exactly that. It describes useful patterns like Entities, Value Objects, Services, Aggregates etc. - which make Domain Modeling easier. Sub-domains, Bounded Contexts, Ubiqui ...more
Rahul Gupta
Nov 29, 2018 rated it it was ok
I didn't like the author's style of writing/explaining.
Things were repeated and even after reading more than a hundred pages, the only thing I understood was that, developers and software architects should use domain language to discuss about the project, build diagrams and, write code. At the same time, domain experts should talk code.
Having the common language between developers and domain experts reduces the amount of errors while developing and the overall product becomes better.

The book fai
Aug 23, 2017 rated it it was ok
Shelves: it
Ironic how a book that advocates concise documentation and diagrams over text looses itself in way too much narrative. The ideas in this book are good, but it could have easily been have as long. It keeps on repeating itself in long paragraohs, full of vague terms.
The used examples are realistic (all coming from real projects), but sometimes lacked context to understand the reasoning that was applied to apply the patterns.
Rezaul Karim Sajib
Oct 21, 2018 rated it really liked it
This book is the bible for the software engineers. It' clearly changes the thinking perspective of every software engineer. Even though it is a "must read"book for developers who are willing to implement the domain driven design in their application, but in my opinion, others can also hugely benefitted from this book. I cannot give full 5 stars because this book can have more elaborated examples and it is hard to understand some of the concepts for less experienced developers. Nevertheless, I hi ...more
Dec 16, 2018 rated it liked it
Shelves: computer-science
A lot of the concepts from this book should be obvious to an experienced software developer. Despite this, it was an important read.

The book is too lengthy, so I scanned it from time to time. I also supported my reading with browsing the ideas from the book on the internet.
Rafal Piekarski
Jun 28, 2013 rated it really liked it
Shelves: i-own
It took me more than a year to read this book. It was tough. This book is more like a directory of patterns and I believe that you shouldn't use all of them will every project.

I have heard before reading this book about many cases when implementing domain driven design failed. Especially in the Ruby world in which I write most of my daily code. But I believe the true reason of the failure was that people were trying to use all ideas from the DDD. But the book written by Eric Evans in final chap
Erika RS
Dec 28, 2012 rated it really liked it
Shelves: software, owned, physical
See elsewhere for my more detailed summary.

The short summary is that Domain-Driven Design is a great book for any programmer or software designer who wants to deepen their ability to model application domains. Evans describes why domain modelling is important and sets out a number of patterns for achieving better models. He has a good grasp of real world complexities and, because of that, insists that a model must be implementable if it is to be successful. Any overlap between the model and the
Xavier Shay
May 25, 2011 rated it really liked it
Long (I'm starting to feel that way about all programming books...), but worthwhile. Key takeaways for me:
- If business people use terms that don't appear in your model, that's bad.
- "Make implicit concepts explicit." Important business rules should not be hidden away in conditionals inside an unrelated object.
- Constrain relationships as much as possible. For instance a has_many should only be bidirectional if it is really necessary. A way around it is to use repositories to access the informat
Nov 14, 2008 rated it it was amazing
Shelves: computers
This is one of the best books on software design and architecture currently available. This has the potential to be as forever mind-changing as Design Patterns, POSA, or PoEAA. The book talks about an interesting way to design and architect software: That of letting the domain drive the results. The books takes traditional OOP approaches and turns them on it's ear. By making the underlying focus of the application the actual objects (and their relationships/lifecycle) the right things get built ...more
Apr 19, 2016 rated it really liked it
Shelves: software
Domain-Driven Design is a book that was recommended to my several times. I think that the translation between these models and some technical implementations will always be a challenge. Though, I can't recommend this book enough to anyone in the technical and non-technical software business.
Kiril Kirilov
Aug 22, 2011 rated it it was amazing
Shelves: sd
This book contains some interesting conceptions/terms. Like - Entity, Value Object, Closure of Operations, Repository, side effect free function, Core Domain, Bounded Context.
May 03, 2014 rated it really liked it
A must read book for any serious developer.
Eduards Sizovs
Mar 23, 2015 rated it it was amazing
This book will change the way you think about software development forever
Bayram Üçüncü
Feb 25, 2015 rated it it was amazing
Excellent book to learning complex software development solutions. I recommand it. This book does not contain a code based application.
Alejandro Teruel
Jul 19, 2013 rated it really liked it
Shelves: computación, usb, diseño
This is an extremely interesting book which tackles the important topic of developing, refining and evolving the core domain model of an object-oriented software design. It covers the design process, the design as product, design dynamics and the importance of domain design as a fundamental touchstone of software development.

It is hard to write a book about software design. On the one hand, if you write at too abstract a level you run the danger of uttering platitudes or hinting at general princ
Jano Suchal
Dec 04, 2012 rated it it was amazing
Jeremy Huiskamp
Aug 06, 2017 rated it really liked it
Quite early in my career, I read The Pragmatic Programmer, which introduced the idea of low coupling / high cohesion. While it was useful to learn that this is a good goal to aim for, I was always a little bit frustrated at the lack of a formula for discovering breakdowns that achieved this goal. I think Doman-Driven Design does a very good job of tackling that problem.

The book brought me to a new-found respect for object oriented programming. It was written at perhaps the height of OO programmi
Jun 12, 2018 rated it it was amazing
Shelves: software
A must-have for any developer.
This book is heavy on the aspects of design and architecture in the field of software-development. But I myself am a developer who needs to be an architect, a designer, and a project-manager at the same time. And, in my opinion, any developer should be capable of understanding the concepts underlying the big-picture of their individual project they are working on.
All in all, this is a totally profound book, covering so much I can't decide what to base this review on
« previous 1 3 4 5 next »
There are no discussion topics on this book yet. Be the first to start one »

Readers also enjoyed

  • Patterns of Enterprise Application Architecture
  • Growing Object-Oriented Software, Guided by Tests
  • Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
  • xUnit Test Patterns: Refactoring Test Code
  • Refactoring to Patterns
  • Smalltalk Best Practice Patterns
  • Implementing Domain-Driven Design
  • Working Effectively with Legacy Code
  • Agile Software Development, Principles, Patterns, and Practices
  • Applying Domain-Driven Design and Patterns : With Examples in C# and .NET
  • Specification by Example
  • Object Design: Roles, Responsibilities, and Collaborations
  • Seven Languages in Seven Weeks
  • Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)
  • Domain-Driven Design Quickly
  • Software Estimation: Demystifying the Black Art
  • 97 Things Every Software Architect Should Know: Collective Wisdom from the Experts
  • Practices of an Agile Developer: Working in the Real World
See similar books…

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »
“The heart of software is its ability to solve domain-related problems for its user.” 3 likes
“A model is a selectively simplified and consciously structured form of knowledge.” 1 likes
More quotes…