How Aardling helps Shopify apply Domain-Driven Design
Learn how Aardling quickly scaled up and trained about 800 participants at Shopify in Domain-Driven Design and EventStorming.
Shopify brought in Aardling in 2020 to train a small group of engineers in Domain-Driven Design (DDD) and EventStorming.
Aardling scaled up and trained about 800 participants at Shopify over three years in Domain-Driven Design.
Now, Aardling is following up with targeted consulting for individual teams.
Shopify is a global commerce company that provides essential internet infrastructure for e-commerce retailers. It’s built on components that form a powerful platform used by millions of businesses across the globe.
Now, Shopify is redefining enterprise retail by opening up that infrastructure to the biggest retailers in the world. Commerce Components by Shopify is a modern, composable stack for enterprise retail that prioritizes choice, combining Shopify’s foundational components—like checkout—with flexible APIs that integrate with a retailer’s preferred back office services.
To support Shopify engineers the company partnered with Aardling, a company with expertise in software design and domain modeling, on Domain-Driven Design (DDD) training. Mathias Verraes, Aardling’s founder and lead for the project, has been running Domain-Driven Design and EventStorming training and consulting sessions since 2013.
"With Domain-Driven Design, I can bring the code closer to the business. By growing a shared language and better boundaries, the team can have a better understanding about the code and how it solves merchant problems in our domain. Design patterns help us structure the code so that it can evolve with the changing needs of the business. The code is more explicit and clear as to what it is doing, and thus easier to change."
At first, the intention was for Aardling to run occasional in-person workshops for Shopify engineers and architects in early 2020. The pandemic led both Aardling and Shopify to rethink the training format.
The change in plans proved to be a great opportunity—the training could be split into smaller modules, which reduced disruption to the team’s regular software delivery. At the same time, doing remote training allowed Aardling to scale and meet the growing interest in Domain-Driven Design at Shopify. Since then, Aardling has trained more than 800 people at the company.
The content of the training sessions was customized and adapted to meet specific challenges that Shopify is working to solve.
Different classes were set up throughout the year, including an Introduction to Domain-Driven Design, Eventstorming, and Advanced Domain-Driven Design. People signed up for the workshop that aligned best with their interest.
"The DDD workshops have helped me pay more attention to the clarity, naming, language, and terminology that we use. It highlighted the importance of creating well-modeled solutions to complex problems."
For the engineers starting their journeys in Domain-Driven Design, there was an introductory session focused on tactical patterns, dealing with domain complexity, and creating opportunities for better modularisation. These topics were chosen to support engineers when building new code.
Later, an Advanced Domain-Driven Design follow-up course was added, which tackled topics such as Bounded Contexts, Context Mapping, refactoring legacy systems, and Strategic Design. This class helped engineers to make sense of existing code and architecture, and provided tools for strategically deciding where to change, replace, integrate, separate, or simply keep existing code.
The EventStorming training provided a practical way to start modeling complex flows and business processes. The classes included optional orientation exercises for engineers who like to come prepared to learning sessions.
Besides these regularly scheduled classes, Aardling also ran masterclasses on Strategic Design with Gien Verschatse, Agile Architecting with Rebecca Wirfs-Brock, Crafting Modular Architecture with Cyrille Martraire, and Product-, Domain- and- Team-Oriented Architecture with Susanne Kaiser.
"DDD concepts seem simple but are easy to misuse if not properly understood. We are currently using DDD in my team to refactor our legacy code. We’re leveraging DDD concepts to ensure the new code is as stable and efficient as can be, while also ensuring it will be able to evolve with future requirements."
Senior Staff Developer
Switching to Consulting
This approach of regularly scheduled training helped establish a knowledge base in Domain-Driven Design among Shopify’s engineering teams. Now, the partnership has switched to a consulting- and- coaching-based approach.
In March 2023, Mathias Verraes held the first consulting session with Shopify engineers. The teams have an opportunity to assess design and strategy choices, and look at each team’s specific context with the help of Mathias. This helps individual teams solve different challenges arising from unique use cases.
By scaling up this approach, Aardling can support Shopify in their application of Domain-Driven Designto deliver new capabilities on their platform.
"Overall this will greatly improve how I approach refactoring code, which in turn will improve the quality of code I write for Shopify, and how quickly it is delivered."