“
When you can, choose Value Objects to model integrations. This advice is applicable in many cases when consuming remote Standard Types.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
It is more desirable for Entities to have equals() and hashCode() methods that are based on the object’s unique identity rather than other attributes.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
Developers are too wrapped up with technology and trying to solve problems using technology rather than careful thought and design. This leads developers to constantly chase after new “shiny objects,” which are the latest fads in technology.
”
”
Vaughn Vernon (Domain-Driven Design Distilled)
“
Developing software that delivers true business value is not the same thing as developing ordinary business software. Software that delivers true business value aligns with the business strategic initiatives and bears solutions with clearly identifiable competitive advantage—software that is not about technology, but about the business.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
When Events are delivered to interested parties, in either local or foreign systems, they are generally used to facilitate eventual consistency.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
Architecture is important, but architectural influences come and go. Remember to prioritize correctly, placing more emphasis on the domain model, which has greater business value and will be more enduring.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
Prefer references to external Aggregates only by their globally unique identity, not by holding a direct object reference (or “pointer”).
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
This often happens due to the pressure to deliver software releases on a relentless schedule, where management uses Scrum to primarily control timelines rather than allow for one of Scrum’s most important tenets: knowledge acquisition.
”
”
Vaughn Vernon (Domain-Driven Design Distilled)
“
Whatever course you decide upon, there is always someone to tell you that you are wrong. There are always difficulties arising which tempt you to believe that your critics are right. To map out a course of action and follow it to an end requires courage. —Ralph Waldo Emerson
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
One of the worst disconnects of a business software development effort is seen in the gap between domain experts and software developers. Generally speaking, true domain experts are focused on delivering business value. On the other hand, software developers are typically drawn to technology and technical solutions to business problems. It’s not that software developers have wrong motivations; it’s just what tends to grab their attention. Even when software developers engage with domain experts, the collaboration is largely at a surface level, and the software that gets developed often results in a translation/mapping between how the business thinks and operates and how the software developer interprets that. The resulting software generally does not reflect a recognizable realization of the mental model of the domain experts, or perhaps it does so only partially. Over time this disconnect becomes costly. The translation of domain knowledge into software is lost as developers transition to other projects or leave the company. A different, yet related problem is when one or more domain experts do not agree with each other. This tends to happen because each expert has more or less experience in the specific domain being modeled, or they are simply experts in related but different areas. It’s also common for multiple “domain experts” to have no expertise in a given domain, where they are more of a business analyst, yet they are expected to bring insightful direction to discussions. When this situation goes unchecked, it results in blurred rather than crisp mental models, which lead to conflicting software models. Worse still is when the technical approach to software development actually wrongly changes the way the business functions. While a different scenario, it is well known that enterprise resource planning (ERP) software will often change the overall business operations of an organization to fit the way the ERP functions. The total cost of owning the ERP cannot be fully calculated in terms of license and maintenance fees. The reorganization and disruption to the business can be far more costly than either of those two tangible factors. A similar dynamic is at play as your software development teams interpret what the business needs into what the newly developed software actually does. This can be both costly and disruptive to the business, its customers, and its partners. Furthermore, this technical interpretation is both unnecessary and avoidable with the use of proven software development techniques. The solution is a key investment.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
Vaughn Vernon (Implementing Domain-Driven Design)
“
Scrum, for example, was never meant to stand in place of design. No matter how many project and product managers would like to keep you marching on a relentless path of continuous delivery, Scrum was not meant only as a means to keep Gantt chart enthusiasts happy. Yet, it has become that in so many cases.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
This does not mean that effort is spent on modeling the “real world.” Rather, DDD delivers a model that is the most useful to the business. Sometimes useful and realistic models happen to intersect, but to the degree that they diverge, DDD chooses useful. With
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
Bounded Context is a specific solution, a realization view,
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
This makes Subdomains a very useful tool in assessing the problem space.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
Well, you either learn or you fail.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
Simply stated, practicing DDD-Lite leads to the construction of inferior domain models. That’s because the Ubiquitous Language, Bounded Context, and Context Mapping have so much to offer. You get more than a team lingo. The Language of a team in an explicit Bounded Context expressed as a domain model adds true business value and gives us certainty that we are implementing the correct software. Even from a technical standpoint, it helps us create better models, ones with more potent behaviors, that are pure and less error prone.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
DDD isn’t first and foremost about technology. In its most central principles, DDD is about discussion, listening, understanding, discovery, and business value, all in an effort to centralize knowledge.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)
“
It seems to me that Scrum and other agile techniques are being used as substitutes for careful modeling, where a product backlog is thrust at developers as if it serves as a set of designs. Most agile practitioners will leave their daily stand-up without giving a second thought to how their backlog tasks will affect the underlying model of the business. Although I assume this is needless to say, I must assert that Scrum, for example, was never meant to stand in place of design. No matter how many project and product managers would like to keep you marching on a relentless path of continuous delivery, Scrum was not meant only as a means to keep Gantt chart enthusiasts happy. Yet, it has become that in so many cases.
”
”
Vaughn Vernon (Implementing Domain-Driven Design)