Download - Transactions redefined
Transactions Redefined
Transactions Redefined
A dive into the wormhole with
Transactions Redefined
@ziobrandoA dive into the wormhole with
Sending a payment to myself
Let’s see the Events!
Domain Event: Orange, verb at past tense
Domain Event: Orange, verb at past tense
Hot Spot: Purple, feel free to express yourself!
I started with Orange
but it’s not enough to tell the whole story
Purple tells more!
PROTIP: if the software seems unfinished, trust might be impacted. Just sayin’
Looks like I just Can’t keep my mouth shut!
PROTIP: users don’t like navigating three screens in order to see payees in alphabetical order
Protip: some users do copy and paste from invoices where IBAN is written with spaces
Protip: some users do copy and paste from invoices where IBAN is written with spaces
PROTIP: humans don’t enjoy removing spaces from IBAN strings
Protip: reminding your users of their age every time they use your service isn’t great UX
Protip: reminding your users of their age every time they use your service isn’t great UX
PROTIP: “we were short on budget” doesn’t work well with banks.
PROTIP: I still can’t understand why should I wait that much, but I’d appreciate a deadline anyway
The wormhole
Breaking News! After 3 and a half years since it was promised I might finally have some notification.
PROTIP: please read one article about context switching.
Great job! 13 Events 14 WTF!
“We are going to be disrupted by fintech…” (anonymous banker)
How do I feel?
“I am going to find where you
live”
“I am going to change your main
door lock”
“Every end of month”
When you’re carrying bags
How can you talk about “mobile banking” if you can arbitrarily force me to update my credentials?
And it’s raining
…For “security reasons”
About me
Having a hard time with BAD software
running www.avanscoperta.it
Modelling (almost) everything with sticky notes, markers and a paper roll.
Calling this stuff
The wormhole
Transactions
We have a few problems
I didn’t say “database
transaction”
The whole is not “transactional”
Eventual Consistency?
Eventual Consistency?
Yes, but I am more worried about another thing…
The user is part of the
transaction
We have a blind spot on this
Let’s STORM!
Our Basic toolkit
Unrolling it…
Business processes expose a repeatable structure
Example
How do we manage that?
Refund Request Received
Typical dev implementation
Refund Request Received
Refund Policy
Issue Refund
Paypal
Refund Issued
Notification Sent to Payee
Can you see the problem?
Simple heuristic
What do I have?
What do I know?
How do I feel?
Simple heuristicRefund Request Received
Customer
Simple heuristic
What do I have?
Refund Request Received
Customer
Simple heuristic
What do I have?
A ticket
Refund Request Received
Customer
Simple heuristic
What do I have?
A ticket
What do I know?
Refund Request Received
Customer
Simple heuristic
What do I have?
A ticket
What do I know?
I won’t be able to use it
Refund Request Received
Customer
Simple heuristic
What do I have?
A ticket
What do I know?
I won’t be able to use it
How do I feel?
Refund Request Received
Customer
Simple heuristic
What do I have?
A ticket
What do I know?
I won’t be able to use it
How do I feel?
Worried (will I get my money back?)
Refund Request Received
Customer
Simple heuristic
What do I have?
A ticket
What do I know?
I won’t be able to use it
How do I feel?
Worried (will I get my money back?)
Sorry (Will it be a problem?)
Refund Request Received
Customer
Simple heuristic
Customer
Notification Sent to Payee
Refund Notification Received
Simple heuristic
What do I have?Customer
Notification Sent to Payee
Refund Notification Received
Simple heuristic
What do I have?
A ticket?
Customer
Notification Sent to Payee
Refund Notification Received
Simple heuristic
What do I have?
A ticket?
My Money back
Customer
Notification Sent to Payee
Refund Notification Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
Customer
Notification Sent to Payee
Refund Notification Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
I have my money back
Customer
Notification Sent to Payee
Refund Notification Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
I have my money back
How do I feel?
Customer
Notification Sent to Payee
Refund Notification Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
I have my money back
How do I feel?
Safe (I have my money)
Customer
Notification Sent to Payee
Refund Notification Received
Simple heuristic
What do I have?
A ticket?
My Money back
What do I know?
I have my money back
How do I feel?
Safe (I have my money)
Worried (Did I insult anyone?)
Customer
Notification Sent to Payee
Refund Notification Received
Too “efficient”
Too impersonal
“I am not a UX expert”
“Everybody is the business analyst”
“Everybody is the UX expert”
A platform for self-organization
This is what happens when Dan North talks about your stuff :O)
Don’t let roles get in the way
Don’t assume, talk
And if necessary… experiment!
Friendly Refund Policy
Refund Request Received
Call Customer
Phone
Refund Chosen
Coupon Chosen
Human Refund Policy
Organizer
Other Idea Chosen
Friendly Refund Policy
Refund Request Received
Call Customer
Phone
Refund Chosen
Coupon Chosen
Human Refund Policy
Organizer
Other Idea Chosen
TIP: don’t model the conversation, model the outcome.
Let’s Check!
Customer
Call Ended- - - - - Refund Chosen
Let’s Check!
What do I have?Customer
Call Ended- - - - - Refund Chosen
Let’s Check!
What do I have?
An Agreement
Customer
Call Ended- - - - - Refund Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
Customer
Call Ended- - - - - Refund Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
I’ll have my money back
Customer
Call Ended- - - - - Refund Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
I’ll have my money back
How do I feel?
Customer
Call Ended- - - - - Refund Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
I’ll have my money back
How do I feel?
Safe (I’m told I’ll have my money)
Customer
Call Ended- - - - - Refund Chosen
Let’s Check!
What do I have?
An Agreement
What do I know?
I’ll have my money back
How do I feel?
Safe (I’m told I’ll have my money)
Relieved (they said no problem)
Customer
Call Ended- - - - - Refund Chosen
For us, insteadCall Ended- - - - - Refund Chosen
Organizer
TIP: you can have many perspectives involved.
For us, instead
What do I have?
Call Ended- - - - - Refund Chosen
Organizer
TIP: you can have many perspectives involved.
For us, instead
What do I have?
An Agreement
Call Ended- - - - - Refund Chosen
Organizer
TIP: you can have many perspectives involved.
For us, instead
What do I have?
An Agreement
a duty
Call Ended- - - - - Refund Chosen
Organizer
TIP: you can have many perspectives involved.
For us, instead
What do I have?
An Agreement
a duty
What do I know?
Call Ended- - - - - Refund Chosen
Organizer
TIP: you can have many perspectives involved.
For us, instead
What do I have?
An Agreement
a duty
What do I know?
The decision & the sales situation
Call Ended- - - - - Refund Chosen
Organizer
TIP: you can have many perspectives involved.
For us, instead
What do I have?
An Agreement
a duty
What do I know?
The decision & the sales situation
How do I feel?
Call Ended- - - - - Refund Chosen
Organizer
TIP: you can have many perspectives involved.
For us, instead
What do I have?
An Agreement
a duty
What do I know?
The decision & the sales situation
How do I feel?
depends on sales ;-)
Call Ended- - - - - Refund Chosen
Organizer
TIP: you can have many perspectives involved.
Can we help?
Refund Request Received Call
CustomerPhone
Refund Chosen
Coupon Chosen
Human Refund Policy
Organizer
Other Idea Chosen
- Price paid- Sales stats- Training Lower Bound- Days Left
Can we help?
Refund Request Received Call
CustomerPhone
Refund Chosen
Coupon Chosen
Human Refund Policy
Organizer
Other Idea Chosen
- Price paid- Sales stats- Training Lower Bound- Days Left
TIP: The read model is a decision support tool. Not an exposure of your database
…of course…
Refund Chosen
Issue Refund
Paypal
Refund Issued
Notification Sent to Payee
Refund Policy
Organizer
So, for the user…
Customer
Notification Sent to Payee
So, for the user…
What do I have?Customer
Notification Sent to Payee
So, for the user…
What do I have?
My Money back
Customer
Notification Sent to Payee
So, for the user…
What do I have?
My Money back
What do I know?
Customer
Notification Sent to Payee
So, for the user…
What do I have?
My Money back
What do I know?
I have my money back & No Problem
Customer
Notification Sent to Payee
So, for the user…
What do I have?
My Money back
What do I know?
I have my money back & No Problem
How do I feel?
Customer
Notification Sent to Payee
So, for the user…
What do I have?
My Money back
What do I know?
I have my money back & No Problem
How do I feel?
Safe (I have my money)
Customer
Notification Sent to Payee
So, for the user…
What do I have?
My Money back
What do I know?
I have my money back & No Problem
How do I feel?
Safe (I have my money)
Grateful / Relieved
Customer
Notification Sent to Payee
A lot better
And also …the seat!
Refund Chosen
Registration Policy
Cancel Ticket
Ticketing System
Ticket cancelled
Notification Sent
We still have a problem
No automation (yet)
Refund Chosen
Issue Refund
Paypal
Refund Issued
Notification Sent to Payee
Refund Policy
Organizer
Humans are not acting instantaneously…
Implicit deadlines
Refund Request Received Call
CustomerPhone Coupon
Chosen
Human Refund Policy
Organizer
Other Idea Chosen
- Price paid- Sales stats- Training Lower Bound- Days Left
(Implicit) Deadline
Refund Chosen
Implicit deadlines
Refund Request Received Call
CustomerPhone Coupon
Chosen
Human Refund Policy
Organizer
Other Idea Chosen
- Price paid- Sales stats- Training Lower Bound- Days Left
(Implicit) Deadline
Refund Chosen
TIP: Implicit deadlines can be modelled as Events too
(Implicit) Deadline
Refund Issued
(Implicit) Deadline
Refund IssuedWhat do I have?
(Implicit) Deadline
Refund IssuedWhat do I have?
A promise
(Implicit) Deadline
Refund IssuedWhat do I have?
A promise
What do I know?
(Implicit) Deadline
Refund IssuedWhat do I have?
A promise
What do I know?
I haven’t been refunded
(Implicit) Deadline
Refund IssuedWhat do I have?
A promise
What do I know?
I haven’t been refunded
How do I feel?
(Implicit) Deadline
Refund IssuedWhat do I have?
A promise
What do I know?
I haven’t been refunded
How do I feel?
Kinda worried, Should I remind them?
Not good
With normal banking…
Enter Payment
Refund Policy
Organizer
(Implicit) Deadline
Refund Chosen
Banking System Payment Entered
With normal banking…
Enter Payment
Refund Policy
Organizer
(Implicit) Deadline
Refund Chosen
Banking System Payment Entered
WORMHOLE
Refund Chosen
(Implicit) Deadline past
Refund Chosen
(Implicit) Deadline past What do I have?
Refund Chosen
(Implicit) Deadline past What do I have?
A promise
Refund Chosen
(Implicit) Deadline past What do I have?
A promise
What do I know?
Refund Chosen
(Implicit) Deadline past What do I have?
A promise
What do I know?
I haven’t been refunded
Refund Chosen
(Implicit) Deadline past What do I have?
A promise
What do I know?
I haven’t been refunded
How do I feel?
Refund Chosen
(Implicit) Deadline past What do I have?
A promise
What do I know?
I haven’t been refunded
How do I feel?
Kinda worried, Should I remind them?
But then…
Refund Chosen
(Implicit) Deadline past
Logged Into Banking System
But then…
Refund Chosen
(Implicit) Deadline past
What do I have?Logged Into Banking System
But then…
Refund Chosen
(Implicit) Deadline past
What do I have?
An unfulfilled promise
Logged Into Banking System
But then…
Refund Chosen
(Implicit) Deadline past
What do I have?
An unfulfilled promise
What do I know?
Logged Into Banking System
But then…
Refund Chosen
(Implicit) Deadline past
What do I have?
An unfulfilled promise
What do I know?
I haven’t been refunded
Logged Into Banking System
But then…
Refund Chosen
(Implicit) Deadline past
What do I have?
An unfulfilled promise
What do I know?
I haven’t been refunded
How do I feel?
Logged Into Banking System
But then…
Refund Chosen
(Implicit) Deadline past
What do I have?
An unfulfilled promise
What do I know?
I haven’t been refunded
How do I feel?
Logged Into Banking System
OOOPS!
We aren’t in control of the whole Flow…
But now we have an easy way to play with that!
GROUNDBREAKING!!!
It’s not about inventing new
things
It’s more about removing
impediments
Roles,
Roles,Processes,
Roles,Processes, Contracts,
Roles,Processes, Contracts,
…
Roles,Processes, Contracts,
…Space limitation
Conclusions
in the large scale…
There is no consistency
But a tension to reconciliation
“Transactions” are processes
And some cannot be rolled back
Make the Global state visible
Users are part of the state
Intermediate Steps matter
Mood, implicit deadlines, expectations
Mood and feelings are part
of the Global state
Enables cross-perspective
conversation
Software design, User Experience, Business Modelling, Lean etc.
is my pizza: You can add your
toppings
is my pizza: You can add your
toppings
With the notable exception of database tables and pineapple
Menu
BIG PICTURE
PROCESS DESIGN
AGGREGATE DISCOVERY
Service Design
Value-Stream Mapping
Retrospectives
Organization Design
… add yours!
Can lead you to unexpected places
apparently, you cannot choose what your problem is
Helps you solve the problem as a
team
Helps you solve the problem as a
real team
It’s about contributions and insights, not roles
We are problem solvers,
Not problem pickers
Thank you!
References• www.eventstorming.com
• EventStormers on Google+
• https://plus.google.com/u/0/communities/113258571348605620818
• LeanPub book in progress:
• http://leanpub.com/introducing_eventstorming
• Blog:
• https://medium.com/@ziobrando
• http://ziobrando.blogspot.com
• Twitter: @ziobrando
• Trainings & Workshop facilitation:
• http://www.avanscoperta.it