What is the problem that is solved by Domain Driven Design?I understand what Object Oriented Programming brought and see the issues it addressed and how, and in what aspect/scenaria, it made the live of a developer easier. But I so far failed to see the big picture of what DDD does bring us. For sure this is due to the fact that I am just starting with DDD and maybe it is something I will just know at the end (after working with it for some years). But if not and it is possible to summarize the big picture in some sentences please share them with me.What I got so far:DDD helps to define a common language to discuss a software project for example. To understand what is happening in a domain, e.g. how the business works, what operations are possible and under which conditions. What data has to be stored and how it should be grouped.Is this the big picture? I think there is more to it but I cannot yet see it.EditThere exists a similar question What is Domain Driven Development in practical terms?. However this question has a different focus when asking what DDD is while I would like to learn to what problem DDD is the solution. One given answer to that is really excellent and does also include possible answers to my question. I cannot judge whether this answer includes the complete answer to my question but right now my intuition tells me it does not.
What question is answered by DDD?
domain driven design
Domain Driven Design is fundamentally a remedy for our tendency to bleed the technical and philosophical objects and concerns into each other. Even in cases where we have a strong sense that these two things are best addressed as separate concerns, it can be tough to consistently make the right divisions without a clear rule.And so, the basic rule is, create and maintain a distinctly recognizable part of your application (the domain) into which you contain your pure, business-recognizable objects and methods, the names of which any business person should recognize.It's about avoiding the situations wherein both the business rules and the technology are hard to change because they're not well-isolated from each other.In my own experience with web applications, I've found that when DDD and DDD-like principles are not explicitly adhered to, there is a strong tendency to bake business rules right into UI code. So, you end up with multiple copies of business rules (one for each page), and neither those UI's nor the business rules can be easily changed.