Event Storming: Catalyzing Domain-Driven Development in Software Organizations

Event Storming: Catalyzing Domain-Driven Development in Software Organizations

Introduction

As Vice President of Engineering, I’ve seen firsthand how crucial it is for software teams to deeply understand the business domains they’re building for. Event Storming, a collaborative technique rooted in domain-driven design (DDD), has proven to be one of the most effective ways to bridge the gap between technical and business perspectives. Created by Alberto Brandolini and aligned with agile and lean principles, Event Storming enables teams to tackle complex domains with clarity and purpose.

In this article, I’ll share insights into Event Storming, its role in DDD, and how it can transform your software engineering organization, complete with examples to make it approachable for everyone on the team.

What is Event Storming?

Event Storming is not just another workshop—it’s a dynamic, team-centered approach to exploring and modeling business processes. By focusing on domain events (key occurrences within the system that drive changes), it enables cross-functional teams to collaborate effectively and uncover critical insights.

Through a shared visual model, Event Storming helps teams align on the big picture while diving into the details that matter most.

Key Elements of Event Storming

Here’s a breakdown of the core components that make Event Storming so impactful:

  • Domain Events: Significant occurrences within the system (e.g., "Order Placed").
  • Actors: People or systems that trigger or respond to events (e.g., "Customer").
  • Commands: Actions initiated by actors to trigger events (e.g., "Place Order").
  • Aggregates: Collections of related domain objects that operate together (e.g., "Order").
  • Policies: Business rules dictating responses to events (e.g., "Free Shipping for Orders Over $20").
  • Bounded Contexts: Distinct parts of the domain with clear boundaries (e.g., "Sales" and "Inventory").

The Event Storming Process

In my experience leading Event Storming sessions, a structured yet flexible process is key to success:

  1. Preparation: Assemble a diverse group of participants, from business stakeholders to developers, ensuring every perspective is represented. Equip the team with sticky notes and markers—or digital tools for remote sessions.
  2. Big Picture Event Storming: Start with a high-level view. Team members map domain events on a timeline, creating a flow of business processes. For example, in e-commerce, events might include "Customer Browses Products," "Product Added to Cart," and "Payment Processed."
  3. Exploration: Dive deeper to identify commands, actors, aggregates, and policies. This step often uncovers hidden gaps, such as an unclear process for handling returns.
  4. Refinement: Group events into aggregates and bounded contexts to define their relationships. For instance, events around "Order Placed" and "Payment Processed" might fall under an "Order Management" context.
  5. Prioritization: Pinpoint areas requiring further analysis or immediate improvement, prioritizing based on business value and complexity. For example, streamlining the "Order Placed" process could drive significant impact.
  6. Documentation: Capture the outcomes in a shareable format, such as a visual model or user stories, ensuring the insights are actionable and accessible.

Benefits of Event Storming in Domain-Driven Development

From my vantage point, the advantages of Event Storming are transformational:

  • Enhanced Collaboration: Breaks down silos by creating a shared language between technical and business stakeholders.
  • Accelerated Discovery: Visualizing the domain uncovers hidden complexities and fosters rapid iteration.
  • Improved Domain Models: Iterative refinement ensures the domain model reflects real-world business needs.
  • Increased Engagement: Involving all stakeholders builds ownership and alignment across teams.
  • Reduced Miscommunication: The interactive, visual nature minimizes ambiguities and resolves misunderstandings on the spot.

Implementing Event Storming in Your Organization

As someone leading a large engineering organization, I recommend these practical steps:

  1. Start Small: Pilot Event Storming with a focused project to gather feedback and refine your approach.
  2. Facilitate Effectively: A skilled facilitator is essential for guiding discussions and keeping the session productive.
  3. Leverage Technology: Use tools like Miro or MURAL for remote teams to replicate the in-person experience.
  4. Foster Collaboration: Make collaboration part of your organization’s DNA, encouraging regular use of Event Storming to keep domain models relevant.

Conclusion

Event Storming isn’t just a tool—it’s a mindset shift that can supercharge your approach to domain-driven development. By fostering collaboration, accelerating discovery, and improving domain models, this technique has the potential to elevate your team’s effectiveness and align your engineering efforts with business success.

As someone passionate about driving innovation and excellence, I encourage you to embrace Event Storming and see its impact firsthand. It’s a game-changer that can unlock your organization’s full potential.


Thanks for explaining Hemant Kumar. I like how event storming allows a diverse group of people explore a process and visualise what's essential. I'm not clear on how desirable outcomes and goals play into this? Designing a new flow requires a purpose, i.e. some benefit to a user/customer. How can you ensure that the final outcome of event storming creates desired value?

To view or add a comment, sign in

More articles by Hemant Kumar

Others also viewed

Explore content categories