EVENT STORMING COLLABORATIVE LEARNING FOR COMPLEX DOMAINS Paul Rayner @thepaulrayner HOW DO WE LEARN TOGETHER, FAST? SOME ENGAGEMENT :-| https://commons.wikimedia.org/wiki/File:Use_case_restaurant_model.svg https://commons.wikimedia.org/wiki/File:CheckEmail.svg https://commons.wikimedia.org/wiki/File:Activity_conducting.svg https://www.drupal.org/node/1785994 MINIMAL ENGAGEMENT :-( THREE COMMON CHALLENGES #1 LARGE-SCALE, INTERCONNECTED, DISTRIBUTED SOFTWARE… WHILE INTEGRATING LEGACY SYSTEMS #2 SOFTWARE DESIGN FOR COMPLEX BUSINESS DOMAINS WHERE BUSINESS PROCESSES AND RULES ARE CHALLENGING …AND CHANGING #3 MULTIPLE BUSINESS EXPERTS WITH KNOWLEDGE CRITICAL TO SUCCESS… YET OFTEN UNAVAILABLE …OR DISENGAGED THE CRITICAL COMPLEXITY OF MOST SOFTWARE PROJECTS IS IN UNDERSTANDING THE DOMAIN ITSELF Eric Evans HOW DO WE LEARN TOGETHER, FAST? http://www.exploreux.org/site/recap-a-day-in-the-life-of-a-ux-designer/ GOOD ENGAGEMENT BUT FOCUSED ON USER INTERACTION WHAT ABOUT THE UNDERLYING SYSTEM BEHAVIOUR? leanpub.com/introducing_eventstorming PLACE EVENTS ON A TIMELINE WHAT IS A DOMAIN EVENT? Something that happened in the business that your domain experts care about WHAT IS A DOMAIN EVENT? • A step in a business process e.g. customer order submitted, customer paid $100, order completed, item shipped. • Something that happens on a scheduled basis e.g. nightly account reconciliation completed. • Something meaningful that occurs as a result of something else happening e.g. customer account locked after invalid password entered 3 times leanpub.com/introducing_eventstorming leanpub.com/introducing_eventstorming leanpub.com/introducing_eventstorming PROVIDE UNLIMITED MODELING SPACE EXPLORE REAL, CONCRETE BUSINESS EXAMPLES VISUALIZE LEARNING OPPORTUNITIES leanpub.com/introducing_eventstorming leanpub.com/introducing_eventstorming VISUALIZE INTERACTIONS leanpub.com/introducing_eventstorming leanpub.com/introducing_eventstorming VISUALIZE BUSINESS RULES leanpub.com/introducing_eventstorming INVITE THE RIGHT PEOPLE WHO IS INVOLVED? Development team members and business people gather in a room and together we create a visual map of the flow of events leanpub.com/introducing_eventstorming ASK THE RIGHT QUESTIONS CLARIFYING QUESTIONS ‣ "What circumstances would cause ... to happen?” ‣ "What was the path that led us here?" CLARIFYING QUESTIONS ‣ "What is a good example of …?" ‣ "What do you mean by …?" ‣ "What might lead someone to do/need …?” ‣ "What else might happen…? FACILITATION TIPS EVENTSTORMING FACILITATION TIP #1 Focus first on learning and understanding EVENTSTORMING FACILITATION TIP #2 Build on each others' ideas EVENTSTORMING FACILITATION TIP #3 Capture diverse perspectives EVENTSTORMING FACILITATION TIP #4 Timebox! EVENTSTORMING FACILITATION TIP #5 Conversations and examples are primary EVENTSTORMING FACILITATION TIP #6 Post first, Ask questions later EVENTSTORMING FACILITATION TIP #7 Anchor your modeling and design on a concrete business example EVENTSTORMING FLAVOURS FLAVOUR #1 Big Picture EventStorming FLAVOUR #2 Design Level EventStorming FLAVOUR #3 UX-Driven EventStorming EVENTSTORMING BENEFITS 10 BENEFITS OF EVENTSTORMING 1. Shared understanding: ‣ Of the problem being solved ‣ Potential solutions 2. Visual, tactile representation of the business concepts and how they relate 3. Uncover misunderstandings and missing concepts 10 BENEFITS OF EVENTSTORMING 4. Small investment of time 5. Challenging, but fun 6. Represents various diverse viewpoints, creating a more robust solution 7. Enables various domain models to be "crash-tested" 10 BENEFITS OF EVENTSTORMING 7. Concerned with behavior first 8. Make it clearer where the true business value is 9. Provide means for everyone in the room to participate meaningfully in modeling 10.Focus attention on real business examples NATURAL TRANSITION TO EVENT SOURCING Adapted from leanpub.com/introducing_eventstorming EVENT SOURCING ‣ Don't save the current state of objects ‣ Save the events that lead to the current state ‣ TDD focused on command processing generating the correct events Aggregate state modeled as a sequence of domain events Shopping Cart Item Added Price Calculated Promotion Code Applied Item Added Price Calculated Checked Out ECommerce Context NATURAL TRANSITION TO DISTRIBUTED SYSTEMS … Event Stream ECommerce Context Order Management Context … Event Stream EVENT DRIVEN-ARCHITECTURE ‣ Contexts communicate via streams of events ‣ Support large-scale, high-performance, encapsulated, but interconnected systems ‣ Embrace asynchronous communication, eventual consistency ‣ Isolate legacy systems behind event-driven abstractions QUESTIONS? Paul Rayner @thepaulrayner THANKS! Paul Rayner @thepaulrayner Paul Rayner @thepaulrayner paul@virtual-genius.com www.virtualgenius.com