Slide 1

Slide 1 text

Navigating sociotechnical complexity with DDD & friends Xin Yao, KanDDDinsky 2024, Berlin

Slide 2

Slide 2 text

DDD & architecture consultancy DDD Output + Reflective conversations + Collective change capacity + [A little about me] Change Smuggler, through DDD and architecture Xin Yao @settling_mud [email protected] @[email protected] /in/xinxin/ delay + delay Independent consultant delay Software quality & changeability + delay + Technical improvement Social improvement DDD +

Slide 3

Slide 3 text

Sociotechnical complexity Sociotechnical patterns Today's path Navigating sociotechnical complexity with DDD & friends Sociotechnical change practice

Slide 4

Slide 4 text

Sociotechnical complexity Sociotechnical patterns Today's path Navigating sociotechnical complexity with DDD & friends Sociotechnical change practice

Slide 5

Slide 5 text

A complex reality permeated by software Software industry matures Every business is a software business Aging companies with aging software Compounding social and technical complexity

Slide 6

Slide 6 text

Decouple and Connect the paradox in large-​ scale software development

Slide 7

Slide 7 text

Who work and create value together? Who else do we need to align understanding with? DDD DDD was born sociotechnical Credit: Paul Rayner, Eric Evans What software are we building? Why are we building it? How do we build and connect software - for long-​ term changeability? Strategic Design Tactical design Visual Collaborative Modeling (models) (models) Ubiquitous (attention to) Language ... to decouple and connect business complexity technical complexity social complexity

Slide 8

Slide 8 text

Many shades of complexity in software work How do we talk about things being complex in different ways?

Slide 9

Slide 9 text

Complex is not the same as Complicated A B C A B C D System properties predictable The whole is greater than the sum of its parts Knowable through analysis ("Sense, Analyze") Many moving parts sum up to the whole Plans & Policies ("Respond") Knowable through interaction ("Probe") System properties emergent, unpredictable Experiments & Patterns ("Sense, Respond") Repeatable, Consistent ("Scale best practice") Unrepeatable ("Hindsight does not lead to foresight") A B C D E x emergent new element disappeared relation emergent relation Cause -> Effect A B C Complicated Complex Emergence unintended change in relation Credit: Cynefin, Dave Snowden new element new relation unintended change in element

Slide 10

Slide 10 text

A B C A B C D System properties predictable The whole is greater than the sum of its parts Knowable through analysis ("Sense, Analyze") Many moving parts sum up to the whole Plans & Policies ("Respond") Knowable through interaction ("Probe") System properties emergent, unpredictable Experiments & Patterns ("Sense, Respond") Repeatable, Consistent ("Scale best practice") Unrepeatable ("Hindsight does not lead to foresight") A B C D E x emergent new element disappeared relation emergent relation Cause -> Effect A B C Complicated Complex Emergence unintended change in relation Credit: Cynefin, Dave Snowden new element new relation unintended change in element Ferrari vs. Brazilian rain forest

Slide 11

Slide 11 text

Are organizations working with software more like complex or complicated systems?

Slide 12

Slide 12 text

Are organizations working with software often managed as complex or complicated systems?

Slide 13

Slide 13 text

Is a software system more of a complex or complicated system?

Slide 14

Slide 14 text

Work is a social system with technical subsystems as parts Social systems (Complex) Technical systems (Complicated/Liminal*) [software] [organization] Business environment (Complex) *liminal: in between complex and complicated (credit: Dave Snowden) [Open Sociotechnical System]

Slide 15

Slide 15 text

Fluency Stage Technical practice vs. social/sociotechnical practice Evolution Genesis Custom Product Commodity (+rental) (+utility) 1 2 3 4 Technical innovation Mature technical practice Everything evolves with time Social practice? Sociotech practice? ? software design Novel Emerging Good Best

Slide 16

Slide 16 text

If the ancient Greeks could come back now and walk among us, they would not understand much of our technology and our science. It would be very foreign. But they would be quite at home in our social problems - wars, politics, economics, various kinds of difficulties. ~ Jay Forrester We haven't evolved much in our understanding of social systems

Slide 17

Slide 17 text

Scientific management A most impactful industrial age legacy 1856-1915 Frederick Taylor (1856-1915) In the past the man has been first; in the future the system must be first. Management is a true science, with laws as exact and as clearly defined as the fundamental principles of engineering.

Slide 18

Slide 18 text

Professional planners provide a grand design of work Material, capital & people with skills as production factors Design of work Production factor

Slide 19

Slide 19 text

Assign skills to work posts to optimize labor productivity and economic efficiency

Slide 20

Slide 20 text

Scientific management has been rebranded a lot of times, and the most modern version is ...

Slide 21

Slide 21 text

The Inverse Conway Maneuver Target architecture boundaries Team boundaries The new black in organization design Sociotechnical mirroring

Slide 22

Slide 22 text

(Example: governance process in a corporate change initiative) Our default social intervention mode is analytical divide-​ and-​ conquer

Slide 23

Slide 23 text

Our management language is full of engineering metaphors Fix problem Drive change Control process Align thinking Scale practice Measure performance Run a company Produce outcome

Slide 24

Slide 24 text

Most of us acknowledge that social systems are more complex, uncertain and unpredictable ... Complex is not the same as Complicated

Slide 25

Slide 25 text

The traits of complexity are anxiety inducing. Our human brain is hard-​ wired to fear the uncertain, unpredictable, uncontrollable, ambiguous. But we don't want to think of our work as a Brazilian rain forest a randomly evolving mess of emergent relations that keep changing

Slide 26

Slide 26 text

We would rather treat organizations as complicated systems - many moving parts and relations, but predictable, plannable, controllable. We are drawn to solutions that promise to divide-​ and-​ conquer human communication as decomposable software APIs. We wish our organizations were complicated Ferraris

Slide 27

Slide 27 text

Planning and process - a collective defense against our existential anxiety about uncertainty No one loves big, hairy plans. But, reality gets more complex & uncertain - inducing stress We need plans to break down big problems into manageable parts We cannot step into the future without a plan ... and processes to align the many moving parts, people and tasks Plans & processes make us feel safer, in control, on the same page Credit: Steve Hearsum

Slide 28

Slide 28 text

We identify with our "role" and feel alienated playing our "part" at the same time The planning roles The executing roles (Example: governance process in a corporate change initiative)

Slide 29

Slide 29 text

Downgrade social complexity to technical complication? Large-​ scale Agile practice Sociotechnical mirroring Agile frameworks Inverse Conway Spotify model Learned helplessness Skepticism Unknowability A big divide Pessimism Dehumanizing Lack of agency Reorg Transformation initiative

Slide 30

Slide 30 text

Sociotechnical complexity Sociotechnical patterns Today's path Navigating sociotechnical complexity with DDD & friends Sociotechnical change practice

Slide 31

Slide 31 text

Collaborative Modeling (COMO) [Sociotechnical pattern from DDD] See the forest and the trees

Slide 32

Slide 32 text

We cannot find optimal software boundaries with DDD Confession of a Change Smuggler in a complex domain with ever-​ changing business logic just

Slide 33

Slide 33 text

Everybody wants this! Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context

Slide 34

Slide 34 text

In reality, you often get this

Slide 35

Slide 35 text

Premature convergence Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context

Slide 36

Slide 36 text

In the context of architecture modernization (aka. splitting the monolith)

Slide 37

Slide 37 text

Component A Component B DoThis (a, b, c, d) Process 1 Service A Process 1 Process 2 Service B DoThis (a, b, c, d) Monolith (Micro)Services Decoupling by microservices?

Slide 38

Slide 38 text

Component A Component B DoThis (a, b, c, d) Process 1 Service A Process 1 Process 2 Service B ThisRequested (a, b, c, d) ThisCompleted (a, b, c, d) Monolith Event-​ Driven Decoupling by messaging?

Slide 39

Slide 39 text

Component A Component B DoThis (a, b, c, d) Process 1 Next tech trend du jour ? Cloud repatriation - back to modular monolith? Monolith MFE? BFF? Actor?

Slide 40

Slide 40 text

It's so easy to go for superficial boundaries and drop the deep conversations about logical coupling ... and the underlying social boundaries and power distribution COMO workshops for quality conversations not fixed outcomes

Slide 41

Slide 41 text

Let's edit out the uncomfortable elements [Sociotechnical pattern inspired by DDD] Make the implicit explicit [technical design pattern] Make the undiscussable discussable [social design pattern] Collaborative Modeling --> Reflective Conversation Shame Guilt Anxiety Fear Resentment Blame

Slide 42

Slide 42 text

Component A Component B DoThis (a, b, c, d) Process 1 Component A Process 1 Process 2 Component B DoThis (a, b, c, d) Monolith (Micro)Services Social relational muscles to find software boundaries Have we discussed the social and technical implications of passing data around? that give us the true freedom of change

Slide 43

Slide 43 text

Which conversations are we missing? The 3 P's Conversation about Purpose What are we committed to creating together, rather than making less bad? Conversation about Paradoxes How can we call out the organizational politics and constraints, and still make difficult decisions? Conversation about Power How can we name our discomfort and feel powerful at the same time? The social, the relational, the contextual

Slide 44

Slide 44 text

Sociotechnical complexity Sociotechnical patterns Today's path Navigating sociotechnical complexity with DDD & friends Sociotechnical change practice

Slide 45

Slide 45 text

Sometimes the social+technical is just too big of an "official" scope of work DDD "process consultant" "process architect"

Slide 46

Slide 46 text

DDD Process DDD as a process to start & anchor conversations Methods Principles, Patterns, Practices Facilitate change & communication (design discipline) Domain-​ driven discovery is sometimes employed as a process model in change initiatives

Slide 47

Slide 47 text

Example: Architecture modernization work at Milestone Systems

Slide 48

Slide 48 text

Smuggle social sense-​ making in technical design processes (e.g. collaborative modeling sessions) [Sociotechnical change pattern]

Slide 49

Slide 49 text

* Action learning DDD concepts while building a domain language * Hands-​ on Strategic DDD in subdomain analysis exercise. * Hands-​ on Tactical DDD in real use cases - aggregate extraction, domain models, state machines and ports & adapters ... DDD Learning Outcome * Sense making (bridge pent-​ house and engine room) * Visual negotiation * Collaborative moves * My/our point of influence (agency) Social Outcome * Convergence on subdomain boundaries in the M&MS area * (Almost) Convergence on teams' subdomain ownership - as modernization baseline * Identified "don't belong here" subdomains Material Outcome Spread awareness Experience reports as lightning talks at All-​ Hands Example: Architecture modernization work at Milestone Systems

Slide 50

Slide 50 text

Safe-​ to-​ fail change probes as Trojan Mice in tech-​ fueled social systems "Trojan Mice" https://whatsthepont.blog/2020/02/09/trojan-​mice-​in-900-​seconds/ [Sociotechnical change pattern]

Slide 51

Slide 51 text

Smuggle small Trojan Mice inside a big Trojan Horse Large change program Small social change experiments [Sociotechnical change pattern] The original model The new model

Slide 52

Slide 52 text

Real collaboration - we build on each other's moves [Sociotechnical change pattern] David Kantor: Four Player Model Oppose Observe Move Follow Challenge Surface differences Devil's advocate Detached Perspectives Reflect Analyze Add Appreciate Support Expand Implement Set direction Break ice Propose idea Initiate action

Slide 53

Slide 53 text

In this talk, we muddled through these sociotechnical topics Complexity appreciation complex vs. complicated embedded sociotechnical model technical & social practices reversibility of Conway's Law Sociotechnical patterns decouple & connect collaborative modeling logical coupling undiscussables reflective conversations purpose, paradoxes & power (3Ps) Sociotechnical change practice probe, sense, respond safe-​ to-​ fail social experiments change smuggling Trojan Mice mediocre vs. real collaboration

Slide 54

Slide 54 text

Distributed, domain-​ driven, and event-​ driven software and human systems A globally choreographed dance where small dancers orchestrate solo steps in their local workflows, and in concert with each other. Inspiration: Udi Dahan We know when to move and when to hold our poses, in service to the WHOLE system.

Slide 55

Slide 55 text

Thank you [email protected] @[email protected] /in/xinxin/ @settling_mud