Sea shore scenery

Domain-Driven Design (DDD)

Workshops, collaborations and advising.

Software and developers that speak your business's language

Software is only as valuable as the importance of the problem it solves. Domain-Driven Design (DDD) helps us focus on the most important problem and ensure that the software truly speaks your business's language. The result is software that’s more effective, easier to understand, and flexible enough to evolve with your changing needs.

DDD is an approach to software design grounded in a deep understanding of the business domain, explored in collaboration with domain experts. In other words, it’s about working closely with the people who know your business best to make sure that your software reflects how things actually work in real life. The concept was originally introduced by Eric Evans.

View over a lake.

Why we love DDD

As one of our three cornerstones – alongside Theory of Constraints and Extreme Programming – DDD has been at the core of factor10’s methodology from the very beginning. Here are three reasons why our relationship with DDD remains as strong as ever:

  • Alignment with business goals. By emphasizing a clear understanding and modeling of the business domain, DDD ensures that the software aligns with the real-world problems and goals of the business, as well as the actual needs of the users and stakeholders.

  • Improved communication and collaboration. By establishing a shared model and a common (or ubiquitous in DDD lingo) language that both technical and non-technical team members understand, DDD makes communication clearer and collaboration smoother. The result is better teamwork and higher productivity.

  • Adaptability and flexibility. DDD helps manage the complexity of large software systems and encourages a modular and adaptable design approach. With well-defined bounded contexts and domain models, the software can evolve as business requirements change over time. The resulting codebase is easier to maintain, enhance, and scale.

Three situations where DDD shines

1. Architecture modernisation

Helping clients modernise their legacy systems is one of our favourite challenges, and one we’ve taken on many times over the years. DDD is always a key tool in that process. It’s a broad topic, but one thing is certain: there’s hope for even the most complex systems.

A good early activity is to identify meaningful borders around subsystems and make them explicit as bounded contexts. When done well, this shifts the problem from an overwhelming, all-at-once challenge to a manageable piece-by-piece approach. It’s divide and conquer, but with high cohesion. Even this single application of DDD in architecture modernisation, while not easy, can be extremely effective. And it’s just one example of many.

2. Buy vs build

The “build or buy” discussion is still common in most organisations. From a DDD perspective, a simple rule of thumb helps guide the decision:

  • Generic subdomains – business areas where you’re comfortable operating like your competitors – are usually best handled with off-the-shelf solutions.

  • Core subdomains – business areas where you’ve strategically chosen to build your competitive edge – are typically better suited for custom development.

  • Supporting subdomains – the ones that enable your core subdomains to perform at its best – can go either way, depending on the context and available solutions.

Starting this discussion often leads to valuable insights and helps guide smarter decisions as you move forward.

3. Data architecture

From a DDD perspective on strategic design, it often makes sense for the team responsible for gathering operational data within a bounded context to also be responsible for exposing it as a data product. This approach aligns well with the principles of Data Mesh architecture. After all, the people who know most about the data are usually the ones best equipped to own, shape and expose it.

Scenery with rocks and a lake

How we can help

Working together

In close collaboration with your domain experts and developers, we collect insights about your subdomains and establish a context map, a domain model, and a shared language that both technical and non-technical stakeholders can understand and collaborate around. This provides a strong starting point for business-oriented software initiatives, making strategic priorities and decision-making easier.

A flexible and adaptive software architecture bridges a deep understanding of your business domain with a modular and flexible codebase with a long lifespan. Together, they enable your software to evolve as your business changes over time – often leading to design breakthroughs along the way.

Most projects we take on aren’t green-field. In fact, the majority of our work involves collaborating on architecture modernisations and remakes.

Workshops, coaching, and training

We know DDD, and we love sharing what we’ve learned. Our consultants have led countless workshops, training sessions, and coaching projects over the years. One of us even wrote one of the most influential books on the topic. We can help your organisation strengthen its ability to develop code that truly speaks your business's language.

Help your software speak your business's language today!

Interested? Contact us now to talk about how Domain-Driven Design (DDD) can help your software elevate your business!

Jimmy Nilsson

Jimmy Nilsson

CTO & Consultant