Driving Business Value with Domain-Driven Design

Rafael A. George Duval
3 min readNov 7, 2023

--

Design is about finding why you are doing the piece of software you’re doing now. Communication with domain experts is about finding the motivations behind the requirements. The combination of the two opens the opportunity for innovation.

Businesses need to understand their domain strongly, especially since technology is crucial today. However, many technical teams tend to focus more on the technology rather than aligning it with business strategy and needs.

To stay competitive, businesses must catch up and adopt a more progressive approach, such as blended roles where technical experts are involved in decision-making.

Domain-driven design is a valuable framework for speeding up software projects that deal with complex domains. This approach consists of creating a problem domain model using a shared vocabulary. With a clear plan, teams can work efficiently and even sprint toward the finish line when necessary.

The best justification for using any technology or technique is to provide value to the business.

Developing software delivering actual business value differs from developing ordinary business software. Use DDD to model a complex domain in the simplest possible way. Never use DDD to make your solution more difficult. Most developers have had to change how they think about applying DDD.

We, developers, are technical thinkers. Technical solutions come for us. It’s not that thinking is terrible. It’s that there are times when thinking less is better.

Domain-driven design helps to define a vocabulary supported by domain experts. The terminology allows developers to understand the organization from a software perspective.

Design is about finding why you are doing the piece of software you’re doing now. Communication with domain experts is about finding the motivations behind the requirements.

The combination of the two opens the opportunity for innovation. By focusing on communication, developers can build software for people, not machines.

Using the specific domain you currently work in, think of the standard terms and actions of the model.

A Domain, in the broad sense, is what an organization does and the world it does it in.

The User Interface is to contain only code that addresses user view and request concerns. Promoting business concepts through the code base is essential to modeling a domain. We will focus on something other than that, not the technical platform — the business process of how information flows throughout the system.

This project started about two thousand seven or eight or so, so that’s one of the big things you heard back then. With domain-driven design, we explore different models until we arrive at the right one.

Do not focus on the structural patterns at all. DDD models the ubiquitous language per bounded context. Domain-driven design is still modeling a universal language in a bounded context.

Bounded context exposes concepts from a single domain.

The software developers produce is changing how people interact with each other.

The digital revolution is happening before our eyes.

The economy has less to do with money than with people.

The combination of people and software in this time and age defines the Digital economy. The Digital economy represents how people interact with each other in a system.

Software is developed by people for people.

Domain-driven design is a technique that tackles the complexity of systems at the heart of the problem — the interception between people interactions and technology.

[¹]: Implementing Domain-Driven Design

--

--

Rafael A. George Duval

✍🏼 Indie writer, chief editor of https://snippetsoftext.substack.com/ | 💻 Software Engineer | 📊 Tech Leadership