Slide 1

Slide 1 text

@kenny_baas Towards Autonomous Aligned Teams with Domain-Driven Design Kenny Baas-Schwegler

Slide 2

Slide 2 text

@kenny_baas

Slide 3

Slide 3 text

@kenny_baas “If the architecture of the system and the architecture of the organization are at odds, the architecture of the organization wins” —Ruth Malan

Slide 4

Slide 4 text

@kenny_baas

Slide 5

Slide 5 text

@kenny_baas

Slide 6

Slide 6 text

@kenny_baas Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization's communication structure. — Mel Conway

Slide 7

Slide 7 text

@kenny_baas

Slide 8

Slide 8 text

@kenny_baas Label 1 Website Label 2 Website API GATEWAY Label 3 Website Business 3 Business 2 Business 1 CRM Datawarehouse Data API

Slide 9

Slide 9 text

@kenny_baas [In our study at Thoughtworks we found] work takes an order of magnitude longer when it leaves a team. — James Lewis (@boicy)

Slide 10

Slide 10 text

@kenny_baas “A loosely coupled software architecture and org structure to match” is a key predictor of: 1. Continuous Delivery Performance 2. Ability to scale org and increase performance linearly

Slide 11

Slide 11 text

Order Payment Packaging

Slide 12

Slide 12 text

@kenny_baas

Slide 13

Slide 13 text

@kenny_baas

Slide 14

Slide 14 text

@kenny_baas https://www.martinfowler.com/articles/microservices.html

Slide 15

Slide 15 text

@kenny_baas

Slide 16

Slide 16 text

@kenny_baas To communicate effectively, the code must be based on the same language used to write the requirements - the same language that the developers speak with each other and with domain experts - Eric Evans

Slide 17

Slide 17 text

@kenny_baas https://www.huffingtonpost.co.uk/entry/american-tweets-about-great-british-bake-off_uk_61733eaee4b03072d6f6d012

Slide 18

Slide 18 text

@kenny_baas

Slide 19

Slide 19 text

@kenny_baas We all know or should know that language is fluid, liquid, subject to the whims of the people. Language evolves, as it should. Because language changes to accommodate new users, the older users resist and complain. http://tednellen.blogspot.com/2013/04/language-is-fluid.html

Slide 20

Slide 20 text

@kenny_baas It is not the domain experts knowledge that goes to production, it is the assumption of the developers that goes to production - Alberto Brandolini

Slide 21

Slide 21 text

@kenny_baas Instead of one canonical language, create multiple bounded languages

Slide 22

Slide 22 text

@kenny_baas Business Architects Developers

Slide 23

Slide 23 text

@kenny_baas

Slide 24

Slide 24 text

@kenny_baas

Slide 25

Slide 25 text

@kenny_baas

Slide 26

Slide 26 text

@kenny_baas A straight line between 2 points corresponds to a compass direction in reality..

Slide 27

Slide 27 text

@kenny_baas A straight line between 2 points corresponds to a compass direction in reality.. • Except for points located in Greenland • Except for points located in Africa

Slide 28

Slide 28 text

@kenny_baas A model is a simplified representation of a thing or phenomenon that intentionally emphasizes certain aspects while ignoring others. Abstraction with a specific use in mind. — Rebecca Wirfs-Brock

Slide 29

Slide 29 text

@kenny_baas Business Architects Developers

Slide 30

Slide 30 text

@kenny_baas Stop communicating business change in system boundaries (unit of deployment like in microservices, monolith) Start communicating business change in contextual boundaries that form the bounded context (purpose, need, responsibility)

Slide 31

Slide 31 text

@kenny_baas

Slide 32

Slide 32 text

@kenny_baas

Slide 33

Slide 33 text

@kenny_baas

Slide 34

Slide 34 text

@kenny_baas

Slide 35

Slide 35 text

@kenny_baas Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization's communication structure. — Mel Conway

Slide 36

Slide 36 text

@kenny_baas

Slide 37

Slide 37 text

@kenny_baas

Slide 38

Slide 38 text

@kenny_baas

Slide 39

Slide 39 text

@kenny_baas

Slide 40

Slide 40 text

@kenny_baas

Slide 41

Slide 41 text

@kenny_baas https://www.eventstorming.com/

Slide 42

Slide 42 text

@kenny_baas https://www.eventstorming.com/ Mortgage request received Mortgage application passed Tender signed Declaration rejected

Slide 43

Slide 43 text

@kenny_baas

Slide 44

Slide 44 text

@kenny_baas

Slide 45

Slide 45 text

@kenny_baas https://www.eventstorming.com/

Slide 46

Slide 46 text

@kenny_baas https://www.eventstorming.com/

Slide 47

Slide 47 text

@kenny_baas

Slide 48

Slide 48 text

@kenny_baas What influences our grouping of the domains? ● Customers ● Resources ● People ● Team cognitive load ● Cohesion of change ● Change rate ● Culture ● Business strategy and their value streams ● Software architecture ● Organisation structure ● Knowledge & Practice ● ….. ● Aka Contextual!

Slide 49

Slide 49 text

@kenny_baas

Slide 50

Slide 50 text

@kenny_baas Using collaborative modelling to build a shared understanding of your domain and use it to guide your design _is_ the philosophy behind DDD though. The rest is principles, patterns, and practices. — Mathias Verraes https://verraes.net/2021/09/what-is-domain-driven-design-ddd/

Slide 51

Slide 51 text

@kenny_baas

Slide 52

Slide 52 text

@kenny_baas https://www.martinfowler.com/articles/microservices.html

Slide 53

Slide 53 text

@kenny_baas

Slide 54

Slide 54 text

@kenny_baas Domain-Driven Design enables teams to have agency

Slide 55

Slide 55 text

@kenny_baas #CatTax @kenny_baas Baasie.com xebia.com/blog/author/kbaas/ https://speakerdeck.com/baasie Agile Alliance report: https://www.agilealliance.org/resources/experience-reports/towards-auton omous-aligned-teams-with-domain-driven-design/ https://virtualddd.com/