EventStorming
In life, to paraphrase an old bumper sticker, "Events Happen"
- The lawn was mowed.
- The car was repaired.
- The pizza arrived.
Team design and planning
EventStorming is a team design and planning approach created by Alberto Brandolini.
It relies on our innate ability to notice, name, and discuss events, and extends that into an approach for software design. No extra technology background required.
EventStorming is useful to get the "Big Picture" when starting a project or feature set. EventStorming also works well for "Retrospectives" and even "Detailed Design”. The results of EventStorming can be used to plan your Story Mapping exercises.
EventStorming has the benefit of establishing a common language between Domain Experts and Developers. It creates a system design skeleton that is understandable and usable by a broad range of stake holders. A Domain-Event is something that happened in the system that is interesting to a Domain Expert. For Example
- Request Email Received
- Inventory Depleted
- Package Shipped
EventStorming is also a natural way to introduce advanced software architecture and design approaches, like Command Query Response Separation (CQRS), Domain Driven Design (DDD)
CQRS is a way to provide users a refined view of the information required for decision making that is distinct from the information input into the system. The two directions of information flow are often very different. Handling the flows separately can aid in building complex systems.
DDD is a way of refining, categorizing, and communicating a teams understanding of the domain. DDD also provides concepts for implementing a shared model with lower coupling and higher cohesion. So that systems are easier to understand.
Separately or together CQRS and DDD make building large complex systems more sustainable. CQRS and DDD are powerful, but often difficult to explain. That is why they are not used as widely as they could be.
EventStorming is a breakthrough because it provides a natural way to introduce DDD and CQRS without the buzz words and additional study. These two techniques are part of EventStorming without even needing to be specifically explained during the workshop. An EventStorming facilitator can guide a team of business and technical professionals toward better design discovery.
EventStorming begins by asking the Domain Experts to identify Domain-Events. Domain-Events are defined as things that the Domain Expert is interested in, written in past tense.
- Item added to Cart
- Calendar Month Ended
- Customer entered the store
From there a EventStorming workshop moves to adding other details like processes, commands, views, aggregates, and contexts.
In the end the "Big Picture" EventStorming proves a deep understanding of the flow of information though the entire system. Which is a great aid in better communication, planning, and implementation.
Contact me if you want to talk more about how EventStorming can benefit your project.
Indeed introducing DDD is really hard if you want to start with practice instead of conceptual definition that confuse or block immediate progress. With EventStorming I feel I have found something that is worth a try. Many thanks!
Interesting approach. Thanks for sharing it, Mark.
Excited to see your presentation tonight.
Hi Mark Windholtz I just read about tomorrow EventStorming meeting here http://www.agilecincy.org/upcomingevents/2017/5/17/june-meeting-introduction-to-event-storming.html Awesome! Alberto Brandolini will be in Denver (Colorado) in September for the DDD Denver Conference. It could be a great occasion to learn about EventStorming from Alberto himself! :-) http://exploreddd.com/speakers/alberto-brandolini.html
Went through 2-hour process w/ Mark last week - very valuable. Not sure if we were doing it perfectly right, but by thinking of all events (human or machine) we developed several new user stories that we hadn't been thinking of beforehand. Highly recommended!