The benefits of Strategic Domain-Driven Design
- Sergio Visinoni from Sudo Make Me a CTO <makemeacto@substack.com>
- Hidden Recipient <hidden@emailshot.io>
Hi, 👋 Sergio here! Welcome to another free post from the Sudo Make Me a CTO newsletter. If you prefer to read this post online, just click the article title. As this is a free newsletter, I do immensely appreciate likes, shares and comments. That's what helps other readers discover it! The benefits of Strategic Domain-Driven DesignA 20 years old concept that is still one of the most effective approaches to software design both at a strategic and a tactical level
In recent months, I found myself resorting repeatedly to Domain-Driven Design (DDD), and more specifically, its strategic component, in the work I do with different clients. Some of them are familiar or well-versed with the approach, while others are surprisingly struggling to leverage its full potential. Today’s article is a high-level overview of what strategic DDD is, why it matters for CTOs, and how you can get started with it. What is Domain Driven Design (DDD)?According to Martin Fowler, DDD can be defined as follows:
I have a profound respect for Fowler, and although the definition he proposes is technically accurate, it could be both intimidating and slightly misleading for someone with limited exposure to the concept. Intimidating, as it uses “domain model” as part of the definition, a concept many people unfamiliar with DDD might not fully understand. Misleading, as it ends by suggesting that Eric Evans’ book might be just a catalog of patterns. In reality, it’s much more than that. DDD is not just a set of patterns, though such patterns are a key aspect that many practitioners have been applying with success. I’d like to suggest a more approachable definition, one that focuses on conveying both the strategic and tactical dimensions of DDD
While waiting for the gods to punish my display of hybris², let me spend some time elaborating on why I believe every CTO on earth should have DDD in their toolbelt, and specifically the strategic part. What is the Strategic part of DDD?In a nutshell, Strategic Design in DDD is the act of discovering the set of subdomains that collectively represent the problem space a business is trying to solve through software engineering. This might sound simple, but it’s one of the most challenging parts of DDD. What this means in practice is that by following this approach, you’ll dissect the business you’re supporting, something that requires an insane amount of discussions with non-technical stakeholders. Through those conversations, you’ll develop a deep understanding of the key aspects of the business that are a differentiating factor, a competitive advantage, and those that aren’t. Though you’re technically never done with this approach, at some point, you’ll have built enough confidence around a domain map that will represent all your subdomains, and classify them into three categories:
I find the following illustration helpful to visualize the relationship between the three classes of subdomains³. It’s important to notice that strategic DDD focuses on the problem space, not your current architecture. It helps you bring clarity to the problems you have to focus on and which approach to take in different situations. With that clarity, it will become easier to find effective ways to address those needs in the solution space, including buy vs build decisions, staffing, organizational setup, and prioritization. Strategic DDD’s main benefitsWhile DDD won’t work against COVID, and it won’t replace 90% of software developers six months ago, it does have plenty of positive benefits. Once you have done the work needed to draw a full domain map of your business, you will be able to use it to facilitate appropriate decisions in many areas of your job as CTO:
That’s an impressive list of benefits, and I’m not even mentioning the improved maintainability and evolvability of the architecture you’ll build by following DDD’s patterns and low-level constructs! How to get startedIf you get your hands on the DDD book from Eric Evans⁴, you might feel overwhelmed by the amount of details and the apparent complexity of the topic. This reaction might put you off completely from even starting your journey in DDD. Please don’t! This is an area where progress always trumps perfection. My recommendation is to approach this new paradigm (for you and your team) with curiosity and an exploratory mindset. Read up on how to do domain mapping, and start asking a lot of questions to your business stakeholders around differentiation, competitive advantages, and ownership of business decisions. Get more people involved from your team and educate them on the key concepts as you go. Once you have the first draft of the domain map, do not run straight for a massive reorganization. Instead, look for some quick wins that will cement both your and your team’s confidence in the approach. Is there a clear generic domain you could migrate to a third party? Is there a core domain you’re underinvesting in? Do you have a team that spans way too many core domains? Do you have strong people mostly working on generic or supporting subdomains? Answers to these questions will be opportunities to make small but impactful adjustments and observe their impact. Progressively expand the scope and complexity of the questions you’re asking yourself, which will naturally drive more substantial changes. If you keep doing that consistently, you will soon realise you have built a lot of confidence and made numerous positive changes to your team setup, architecture, or priorities. Help keep this newsletter freeI love writing this newsletter, and I intend to keep it free forever. If you want to support my work, you can engage with me in one of the following ways:
If your needs fall into a different category, such as newsletter collaborations or sponsoring, please reply to this email or schedule a free call via this link. 1 Here is Martin Fowler's short article on DDD. 2 You know that annoying display of arrogance that most tech billionaires have in common? Well, it has a name and comes straight from the ancient Greek tradition. 3 The illustration comes straight from the book Learning Domain-Driven Design by Vlad Khononov, which I've been reading in the past few weeks. You'll read more about it in the upcoming segment on the books I read last month. 4 Often referred to as the Blue Book, Domain-Driven Design by Eric Evans remains the reference on the topic. Sudo Make Me a CTO is a free newsletter edited by Sergio Visinoni. If you found this post insightful, please share it with your network using the link below. If you or your company need help with one of the topics I talk about in my newsletter, feel free to visit my website where you can schedule a free 30 minutes discovery call. I'd be delighted to investigate opportunities for collaboration! |
Similar newsletters
There are other similar shared emails that you might be interested in: