Why Domain Driven Design (DDD) is getting popular?

The concept of Domain Driven Design has been popularized by Eric Even’s book “Domain Driven Design: Tackling Complexity in the Heart of Software” in 2003. Not much attention was paid at that time since the industry was recovering from theĀ “Dotcom Bubble” and the applications developed were not as complex as we see today. Fast forward fifteen years and our worlds have changed. Businesses has evolved and startups have disrupted traditional industries successfully.

At the core of Domain Driven Design, Eric describes three main premises:

  • Project’s focus is on the domain and domain logic
  • Complex designs are based on a model of domain
  • Continuous collaboration between technical and domain experts to iteratively refine the model to address domain problems

By following this philosophy, big projects are chunked out into smaller projects based on distinct domain components. These small projects are assigned to independent teams for completion. By dividing the project into business specific domain and domain components a modular system is built. These business functions in the domains are reusable and over a period of time, there will enough parts that could be assembled together to solve an entirely new business domain problem.

The DDD encourages continuous collaboration with the business domain owners which is not unlike any Agile project that has business/product owners. The difference is that in DDD, both technical and business teams use the same jargon while discussing the domain problem and build software components that will directly address the business need. An important point to note is that development is not driven by latest and greatest technology but by the business and the software development teams can adopt a new technology only when the business domain problem couldn’t be solved using existing software.

In summary, DDD is not a new architectural pattern, but it affects how architectural decisions are made and the functions within the teams. Overall organizational leadership support, both business and technology, is essential since adoption of DDD may increase the cost initially but will taper off as more and more modular components are built.