Transactions redefined

Preview:

Citation preview

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