Domain Driven Design for Sitecore

10th May 2018

Martin Davies, our Sitecore MVP, explains how domain driven design, when applied through the principles of Sitecore Helix, can help cut down the complexity of your next development project.

I recently presented to packed audience at the Sitecore User Group in London. My talk was on the subject of Sitecore’s Helix principles and their relationship with Domain Driven Design (DDD).

So, what is domain driven design?

Domain Driven Design is an approach to software development that has gained traction within the industry over the last 15 years. It aims to reduce complexity in software projects by modelling them on the business’ core sphere of knowledge. Everyone on the project, from stakeholders to developers, collaborate on an ever-evolving conceptual model of the business and its activity.

I’m a big fan of Helix. There’s no doubt it’s transformed the way Sitecore solutions are built, providing a robust and logical framework for developers to follow. I’ve been involved in the Sitecore world for a long time, and can honestly say that the quality of the implementations has vastly improved since Helix was introduced.

I’ve been lucky enough to architect a number of Helix projects and have noticed some patterns emerge that link it with other good-practice approaches in software development. In particular, I think there are numerous parallels with aspects of Domain Driven Design.

Helix and domain driven design: technology inspired by a way of thinking.

In my opinion, Helix draws direct inspiration from DDD. In my talk, I drew attention to this by using examples from our customer Formica. On the surface of it, their product catalogue appears very simple, but drilling down in to the intricacies of their business reveals a lot of complexity (They have at least 4 words  just for a ‘product’). Without expert knowledge, their terminology can seem confusing and often contradictory.

In my talk, I explained how using ideas from Domain Driven Design allowed me to gain a much better understanding of Formica and how to model their business in software. Investigating the peculiarities of their domain language helped me to identify ‘contextual boundaries’ within the business, and allowed me to break the system down in to smaller, simpler parts.

Just like DDD, Helix encourages us to be mindful of the terminology used on a project to avoid ambiguity and confusion. In my talk, I discussed how DDD uses language discrepancies to help identify bounded contexts, and went on to suggest that we could use the same technique when discovering Helix features.

The presentation was well received and aside from the main topic, I think I was able to address a broader point; knowledge of DDD has enriched my understanding of Helix and Sitecore. I would encourage any Sitecore developer to investigate the many other principles and practices that have influenced Helix. This can only lead to us building better Sitecore sites and becoming better developers in general.

To find out more about the DDD, Sitecore Helix and how they can be used to reduce the complexity of your projects please get in touch.