Slide 1

Slide 1 text

Designed Stickiness @mathiasverraes

Slide 2

Slide 2 text

@mathiasverraes verraes.net Student of Systems Meddler of Models Labourer of Legacy

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Let's talk about metaphors that stick

Slide 5

Slide 5 text

Great metaphors create opportunity

Slide 6

Slide 6 text

( ... even if it takes a while )

Slide 7

Slide 7 text

«Breakthrough: An opportunity opens up to transform your software into something more expressive and versatile than you expected.»1 1 "Domain-Driven Design", Eric Evans, 2004

Slide 8

Slide 8 text

Breakthroughs are often linguistic.

Slide 9

Slide 9 text

Language is not a tool like metalworking or writing It's how our brains are wired2 2 "The Language Instinct - How the Mind Creates Language", Steven Pinker, 1994

Slide 10

Slide 10 text

Some language is more sticky Advertisers learned this a long time ago

Slide 11

Slide 11 text

Ceci n'est pas le Ping-Pong.

Slide 12

Slide 12 text

Microservices vs SCS-architecture

Slide 13

Slide 13 text

The optimistic age of OOP Objects as a thinking tool4 Anthropomorphic objects5 Objects as projections of the mind ... 5 "Object Design: Roles, Responsibilities, and Collaborations", Rebecca Wirfs-Brock & Alan McKean, 2003 4 "Object Thinking", David West, 2004

Slide 14

Slide 14 text

Mainstream OOP: Objects as a way to structure imperative code

Slide 15

Slide 15 text

Logger { log(...) { ... } }

Slide 16

Slide 16 text

Execution in the Kingdom of Nouns6 6 http://steve-yegge.blogspot.be/2006/03/execution-in- kingdom-of-nouns.html

Slide 17

Slide 17 text

A healthy obsession with language

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Log { append(...) { ... } }

Slide 20

Slide 20 text

Metaphors as objects

Slide 21

Slide 21 text

«His people are completely literal. Metaphors go over his head.»

Slide 22

Slide 22 text

«Nothing goes over my head. My reflexes are too fast, I would catch it.»

Slide 23

Slide 23 text

Example: Data Matching Paying money based on usage of content Determine ownership based on matches in data

Slide 24

Slide 24 text

Data sources: Own research by employees Off shore data cleaning Public wiki-style Public but curated Private, paid Direct submissions from individuals Agencies representing owners

Slide 25

Slide 25 text

Lots of incentives for fraud

Slide 26

Slide 26 text

Is this our Core Domain? ✗ It's just technical data imports ⬜ ⬜ ⬜ ⬜

Slide 27

Slide 27 text

Is this our Core Domain? ✗ It's just technical data imports ✗ Business is not interested ⬜ ⬜ ⬜

Slide 28

Slide 28 text

Is this our Core Domain? ✗ It's just technical data imports ✗ Business is not interested ✔ Money changing hands ⬜ ⬜

Slide 29

Slide 29 text

Is this our Core Domain? ✗ It's just technical data imports ✗ Business is not interested ✔ Money changing hands ✔ The code you keep secret ⬜

Slide 30

Slide 30 text

Is this our Core Domain? ✗ It's just technical data imports ✗ Business is not interested ✔ Money changing hands ✔ The code you keep secret ✔ Oldest code in the system

Slide 31

Slide 31 text

Event Storming

Slide 32

Slide 32 text

Temporality The quality of data changes over time, based on who changes it

Slide 33

Slide 33 text

Missing concept: Matching Data => ?

Slide 34

Slide 34 text

Missing concept: Matching Data => Earning Trust

Slide 35

Slide 35 text

Trust as a sticky metaphor Adopted by business

Slide 36

Slide 36 text

Adopted into Ubiquitous Language

Slide 37

Slide 37 text

The business started getting interested and involved

Slide 38

Slide 38 text

What if Trust was a tangible thing in our domain model?

Slide 39

Slide 39 text

Trust as a Value Object

Slide 40

Slide 40 text

Trust can be passed around

Slide 41

Slide 41 text

Trust attracts behaviour

Slide 42

Slide 42 text

Strategies for changing Trust Event-based workflows

Slide 43

Slide 43 text

0 <-> 5 <-> 10

Slide 44

Slide 44 text

A Trust Arithmetic Invented by the business 0 <-> 5 <-> 10 Group (closure, associativity, identity, invertibility)

Slide 45

Slide 45 text

«Habitable software (...) enables people to understand its construction and intentions and to change it comfortably and confidently.»7 Programmers are not the only ones inhabiting our systems 7 "Patterns of Software", Richard P. Gabriel, 1996

Slide 46

Slide 46 text

Example: Phone call bill rating

Slide 47

Slide 47 text

Price per minute, price after the 60th minute Bundles: Credit minutes, lower rates Subscriptions: recurring bundles Promotions and incentives End of month transfers, expiries Flexible rating strategies in different markets

Slide 48

Slide 48 text

"It's just an algorithm"

Slide 49

Slide 49 text

Missing Metaphor: Buckets

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

Mental Model ~ Visual Model ~ Implementation Model

Slide 53

Slide 53 text

New opportunity: Long lead time to change pricing => Lively experimentation with pricing

Slide 54

Slide 54 text

System Metaphors (XP) are too ambitious

Slide 55

Slide 55 text

Metaphors are not specifications

Slide 56

Slide 56 text

Small, local metaphors

Slide 57

Slide 57 text

How to find metaphors? It's not magic, it's awareness

Slide 58

Slide 58 text

Modelling is spending time with the problem

Slide 59

Slide 59 text

Obsess over language

Slide 60

Slide 60 text

Visualise different models (structural, temporal, spatial...)

Slide 61

Slide 61 text

Grasp the underlying principles of the problem and the domain

Slide 62

Slide 62 text

«[A paradigm change] can happen in a millisecond. All it takes is a click in the mind, a falling of scales from the eyes, a new way of seeing.»8 8 "Thinking in Systems", Donella H. Meadows, 2008

Slide 63

Slide 63 text

Thank you — verraes.net @mathiasverraes verraes.net/workshops dddeurope.com