Chapter 2. Discovering Domain Knowledge

In the previous chapter, we spoke about ways of navigating through a company’s business domain. In this chapter, we’ll talk about how to effectively learn from and share the domain experts’ knowledge of the business domain.

Knowledge Discovery

The software systems we are building are solutions to business problems. Regarding problems, a wise man once said:

If I had an hour to solve a problem I’d spend 55 minutes thinking about the problem and 5 minutes thinking about solutions.

—Albert Einstein

The key idea here is that building the right solution requires knowledge of the problem domain. As we discussed in the previous chapter, this knowledge belongs to domain experts: it’s their job to specialize in and comprehend all the intricacies of the business domain. Modeling and building software solutions relies on domain experts sharing this knowledge with software engineers.

As Alberto Brandolini1 says, software development is a learning process; working code is a side effect. Software engineers have no choice but to gain proficiency in the business domain—you have to understand the problem in order to solve it. In this chapter, we are going to explore the tool DDD provides for effective knowledge sharing.


It’s safe to say that almost all software projects require the collaboration of stakeholders in different roles: domain experts, product owners, engineers, UI and UX designers, project managers, testers, analysts, and ...

Get What Is Domain-Driven Design? now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.