Upload
alberto-brandolini
View
111.019
Download
1
Embed Size (px)
Citation preview
DDD EUROPE PRESENTS…
A @ZIOBRANDO PRODUCTION
IN THE LAST EPISODES…
NOBODY TALKS ABOUT THEIR DOMAIN
WHO CAN BE THAT STUPID?
ABOUT ME
• Started coding in 1982
• Entered DDD in 2005
• Met Eric
• Started Avanscoperta
• Met Greg
• Event-Based Modelling in 2012
• Blast during Vaughn’s tour
• EventStorming in 2013
• Started EventStormers community
• 348 members (on Google+)
SOFTWARE DEVELOPMENT IS A LEARNING PROCESS
WORKING CODE IS A SIDE EFFECT
I USE
INSTEAD
INVITE THE RIGHT PEOPLE
PEOPLE WITH QUESTIONS PEOPLE WITH ANSWERS
A FACILITATOR
PROVIDE AN UNLIMITED MODELLING SURFACE
“
AND BE PREPARED TO EXPAND IT
MODEL WITH DOMAIN EVENTS ALONG A TIMELINE
“
REALLY SIMPLE
THEN IT GROWS…
(EXTERNAL SYSTEMS, IN PINK)
AND GROWS…
(HOTSPOTS, IN PURPLE)
AND GROWS…
THE GOAL(S) OF A BIG PICTURE
EVENTSTORMING
1. ARE WE SOLVING THE
RIGHT PROBLEM?
ARE WE SOLVING THE RIGHT PROBLEM?CALL IT “CORE”, CALL IT “BOTTLENECK”…
… PEOPLE WILL “TELL” YOU WHAT THE REAL PROBLEM IS
AND PLEASE READ “THE GOAL” IF YOU HAVEN’T
DOES IT MATTER?
WHERE DETAILS ARE MAKING A DIFFERENCE…
IN THE CORE DOMAIN…
• Creative
• Always looking for alternatives
• Continuously refining solutions
• Perfectionist
IN A FIXED-BUDGET NON-CRITICAL PART OF THE DOMAIN
SOMEWHERE ELSE
• Creative
• Always looking for alternatives
• Continuously refining solutions
• Perfectionist
TROUBLEMAKER
2. CAN WE SUCCEED?
MAKING THE RISK OBSERVABLE
EXTERNAL SYSTEMS & HOTSPOTS
PEOPLE AND POLITICS
IS MY WALKING SKELETON
NOT EVERY BATTLE IS WORTH FIGHTING
OUTCOMES
• We’re on a problem worth solving:
• let’s prototype a solution right now!!
• Ouch! …the real problem is somewhere else.
• Fine, let’s use the money more wisely.
• Ouch! …they can’t even agree on the problem…
• Shake hands, smile, and leave quietly.
LET’S ASSUME WE’RE LUCKY
OUR BACKLOG
• The involved Domain Experts
• The Development Team (including UX)
• a Facilitator
• Unlimited Modelling Space
• Unlimited Surface
• Unlimited Supply of markers, stickies and so on
• We’ll have only to take care of our limited Energy.
OUR TEAM
TECHNICAL TRAININGS
OUR SAMPLE DOMAIN
• My Company —> We have a real domain expert here…
• Public & Private Training and workshops, (plus coaching &mentoring).
HOW DID WE GET THERE?
MORE GUESSING THAN EXPLANATION
IT’S A LEARNING PROCESS!
SKIP THE BORING PARTS
IF THERE’S TIME: THE REAL REASON WHY I AM NOT A PIANO PLAYER!
DONEC QUIS NUNC
LET’S TRY AGAIN!
A TICKET!
AND THE CORRESPONDING COMMANDS
ANY CANDIDATE NAMES…
WHAT IF SOMEBODY DOESN’T SHOW UP?
ANYTHING ELSE?
GETTING THERE…
• Can we transfer it?
• Good question. In fact this never happen with individual purchases, they usually ask for a refund, or if they can reuse the ticket with a different edition of the same training class.
• What can happen instead is companies, buying a group ticket, asking to switch people, or delaying actual participant names till he very last moment.
• Can we transfer it?
• Good question. In fact this never happens with individual purchases, they usually ask for a refund, or if they can reuse the ticket with a different edition of the same training class.
• What can happen instead is companies, buying a group ticket, asking to switch people, or delaying actual participant names till he very last moment.
I LOVE THIS MESS!
CAPTURE IT! ALL OF IT.
YES, EVEN IF IT MEANS A LOT MORE STICKY NOTES
ADD MORE SPACE!
— Anonymous
WHAT IF TICKET IS AN ABSTRACT CLASS? WITH INDIVIDUAL AND GROUP
TICKET AS SEPARATE SUBCLASSES
”
“
… WE INVITED THE RIGHT PEOPLE!
• There’s no need for any automatic operation. It only happened once. Doing it manually (whatever that means) is fine.
• Talking with the right people, we might get the answers we like.
• The complexity is in the domain, it’s just not necessarily worth implementing.
1. MAKE IT VISIBLE 2. SAFELY IGNORE IT
— Anonymous Developer
WHAT ABOUT PRIVATE CLASSES? AREN’T THEY THE
SAME THING
”
“
THINKING ABOUT DATA…
Headline
Description
Duration
Trainer
City
Date
Venue
Headline
Description
Duration
Trainer
PRIVATE PUBLIC
THINKING ABOUT BEHAVIOUR…
Scheduled
Base Price defined
Sales Opened
Confirmed
Cancelled
Sold out
Delivered
Replanned
Planned
Signed off
Scheduled
Delivered
PRIVATE PUBLIC
NOT ALIKE
TWO INDEPENDENT PROCESSES IN
SALES
BASICALLY THE SAME PROCESS,
IN CONTENT DEFINITION
MAYBE THEY DO BELONG SOMEWHERE…
WHAT ABOUT SEATS
EXPLORING THE RELATIONSHIP
THERE’S SOMETHING MISSING
POLICY IS A GOOD NAME FOR IT
BUT YOU CAN FIND ALSO “PROCESS” OR “THE WHENEVER BOX”
DO WE REALLY NEED THAT?
LET’S ASK THE DOMAIN EXPERT
• Aren’t they the same thing?
• Not at all. We need to add the trainer to the participants. Room capacity and coffee breaks plus lunch are based on the total number of people in the class.
• Moreover: the trainer might bring a co-trainer, the company can have an internal person in the class, or there can be “guests” that are not passing through the ticketing system.
• We’re currently creating “fake tickets” for everybody in order to have all participants in the same container, but one single mistake and everything fall apart.
(ET VOILÀ)
INDEPENDENT MODELS!
TRAINERS DON’T NEED TO BUY A TICKET
EVERYONE IN THE TRAINING ROOM DESERVES SOME GOOD COFFEE, AND A
GOOD LUNCH
— Ziobrando
IN A RESTAURANT, IF YOU’RE THE TRAINER, YOU GET EXACTLY
THE SAME FOOD
”
“
ISN’T THAT TOO COMPLEX?
MORE PRECISELY
DO WE HAVE TO IMPLEMENT IT?
BOUNDED CONTEXTS ARE HEAVY… ?
IT DEPENDS…
UNDERSTANDING THE PROBLEM MUST BE CHEAP
A PROPER IMPLEMENTATION IS
VALUE VS COST
ARE WE IN THE CORE?
NO. THE REAL PROBLEM IS…
DAMN, WE WERE JUST WANDERING…
(A) REAL PROBLEM
• We were stuck in go/no-go decisions
• Collaborators didn’t know whether to cancel or confirm the class
• I needed to explain my decision making process.
“WHAT IS THE DATA NEEDED IN ORDER TO TAKE THIS DECISION?”
THIS IS SCARY
HOW MANY AGGREGATES SHOULD I QUERY?
ENTER READ MODELS
SO MANY WAYS
HOW CAN WE IMPLEMENT IT?
• Projections • Composite UIs (including mashups) • Denormalisation • Good old queries (not forbidden, just
uncool)
WE MOVED THE BOTTLENECK!!
NOW, THE REAL PROBLEM IS…
WE DON’T SELL ENOUGH
• Some training class are good, but not appealing
• Users don’t take the BUY TICKET decision.
“WHAT IS THE DATA NEEDED IN ORDER TO TAKE THIS DECISION?”
NOT THAT SIMPLE…
THIS IS A PIZZA. IT IS FOOD, THAT PROVIDES THE CALORIES AND THE ENERGY YOU NEED IN ORDER TO SURVIVE TILL
THE NEXT MEAL. IT IS AVAILABLE IN SEVERAL SIZES AND TOPPINGS.
CONTACT US IF YOU WANT TO KNOW MORE.
Order now!
Feeling hungry?
IT’S NOT ONLY THE DATA…
USERS AREN’T ONLY RATIONAL
DID ANYONE NOTICE THAT I MENTION THE UX PEOPLE?
AND IT’S NOT THE SAME DATA
HIS OWN MONEY, KNOWS THE STUFF.
COMPANY MONEY. NEEDS PERMISSION.
COMPANY MONEY. CALENDAR IS IMPORTANT.
NEED SAFETY AND DISCOUNTS.
OUCH!
WHY CAN’T ANYTHING JUST BE SIMPLE?
CHOOSE A TARGET, AND RUN AN EXPERIMENT.
IT’S ABOUT THE QUESTIONS, NOT THE
NOTATION
WE’RE MODELLING A FLOW OF DECISIONS
WE’LL HAVE TONS OF IDEAS
NOT ALL OF THEM WORTH PURSUING
MOSTLY UX DRIVEN EXPLORATION
MAKING SENSE OF DATA, FROM TRIVIAL TO BI, TO BIG DATA
TRADITIONAL SOFTWARE ARCHITECT’S REALM
THANKS TO GREG’S SQUIRREL ;-)
THE GOAL IS NOT TO WRITE COOL SOFTWARE
THE GOAL IS TO SOLVE THE RIGHT PROBLEM
IMPACT MAPPING - NO ESTIMATES - USER STORY MAPPING
KEEP THE MODELS SIMPLE
CAN’T ACHIEVE SIMPLICITY WITHOUT DIVING INTO CHAOS
KEEP THE PROBLEMS SIMPLE
MODELLING THE FLOW
WITHIN THE SPACE CONSTRAINTS
THIS IS THE ACCIDENTAL SELF-INFLICTED COMPLEXITY NOBODY WILL PAY YOU FOR
THANK YOU!
WANT TO KNOW MORE?
• Really fresh: www.eventstorming.com
• LeanPub book in progress:
• http://leanpub.com/introducing_eventstorming
• Blog: http://ziobrando.blogspot.com
• Twitter: @ziobrando
• Trainings & Workshop facilitation:
• http://www.avanscoperta.it