Scaling the skillset of Shopify: How we introduced Domain-Driven Design to 800 engineers
Insight
Learn how Aardling quickly scaled up and trained 800 participants at Shopify in Domain-Driven Design and EventStorming.
Summary
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 800 participants at Shopify over three years in Domain-Driven Design.
Now Aardling is consulting individual teams with software design
Challenges
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.
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 modelling, and Domain-Driven Design (DDD). Mathias Verraes, Aardling’s principle consultant, 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 deeper understanding of 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, and thus easier to change."
Senior Developer
Shopify
Training Process
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 meant the training could be split into smaller modules, which reduced disruption to the team’s regular software delivery. At the same time, 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 interests.
"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."
Senior Developer
Shopify
Topics
For the engineers starting their journey 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 model complex flows and business processes. The classes included optional orientation exercises for engineers who like to come prepared for 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
Shopify
Switching to Consulting
Training established a strong knowledge base in Domain-Driven Design among Shopify’s engineering teams. It was important that this information wasn't left in the classroom. The partnership focused not only on training but also on coaching and consulting individual teams adopting DDD.
In March 2023, Aardling ramped up its support for software teams at Shopify. The teams have an opportunity to assess design and strategy choices and look at each team’s specific context with the help of our consultants. This helps individual teams solve different challenges arising from unique use cases and unblock challenges with expert consultation.
This approach of training and consulting enabled Shopify to scale its adoption of DDD to deliver new capabilities on its platform and evolve the system for the future.
"Overall the support given by Aardling 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."
Senior Developer
Shopify
Book a training
Don't miss out on this opportunity to improve your software development skills.
Together we can develop the right learning plan for your team members.