Slide 1

Slide 1 text

Navigating Sociotechnical Complexity with DDD and Friends Xin Yao, Keynote JAX London, 2024

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

Craft Impact

Slide 4

Slide 4 text

I imagined a neat and tidy software career

Slide 5

Slide 5 text

Variables Algorithms

Slide 6

Slide 6 text

Software is logical, and "compiles" Right or wrong answer a mathematically provable range of optimal solutions or at least Deterministic solution

Slide 7

Slide 7 text

The universe is a giant clock. The laws of nature act like gears and springs, causing everything to move in a predictable and orderly way. -- Issac Newton (Not exactly, but kinda the exact words)

Slide 8

Slide 8 text

My first real-​ life software project Fixed price software delivery in a consultant team Thorough requirement spec from client Client analysts answering our queries, mostly by email Software architecture blueprint upfront Waterfall - Project lead had regular checkin with client Great team - we delivered on time! Domain: insurance workflow

Slide 9

Slide 9 text

We applied design patterns

Slide 10

Slide 10 text

Single Responsibility Principle Open/Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle Image Credit: Robert Ecker We applied SOLID principles

Slide 11

Slide 11 text

But, our software never made it to the users

Slide 12

Slide 12 text

The client's analysts misunderstood (and oversimplified) core user needs. We made the wrong interpretation of the client analysts' email response to our questions. The client's business sponsor didn't align with the parent company about starting the project. No one told us a mandatory frontend framework had to be used. Rewrite considered too costly. Project X dropped, shelved, and forgotten. We (the consultant team) got paid well. We got praised for on-​ time delivery. Lots of tech learning and experiences, so why are we not feeling happy? So what was the rub

Slide 13

Slide 13 text

Design cannot happen in a closed system My existential conundrum Long way from neat and tidy to useful software <> "giant clock"

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

How do I increase my odds of understanding, and impacting the larger decisions around software? Architect Developer Career crossroad - context & systems awareness Software swims in a system of systems

Slide 16

Slide 16 text

Ubiquitous Attention to Language (UL) [Sociotechnical pattern from DDD] Test Software for a complex domain requires all involved to have a deep, shared understanding of the domain.

Slide 17

Slide 17 text

Visual Collaborative Modeling [Sociotechnical pattern from DDD] See the forest and the trees

Slide 18

Slide 18 text

Who work and create value together? Who else do we need to align understanding with? DDD DDD is a sociotechnical craft 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

Slide 19

Slide 19 text

DDD Process DDD is used as methods and/or process Methods Principles, Patterns, Practices Facilitate change & communication (design discipline) Domain-​ driven discovery is sometimes employed as a process model in change initiatives www.infoq.com Start Your Architecture Modernization with Domain-Driven Discovery Successful projects start with robust discovery. What if your project is modernizing your tangled old legacy system or migrating all your workloads to the cloud? This article presents a guided approach to starting your next architecture modernization pr…

Slide 20

Slide 20 text

A DDD workshop series Strategic Design (models) Tactical design (models) Visual Collaborative Modeling Problem space Solution space

Slide 21

Slide 21 text

Impactful software Req., code, test, deploy, run Scientific modeling The 1st sociotechnical chasm "The 1st sociotechnical chasm" Collaborative languaging & modeling Context & Systems awareness Software-​ Centric Craft Technical Complexity Social Complexity (A part becoming aware of the whole)

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

In reality, you often get this

Slide 25

Slide 25 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 26

Slide 26 text

In the context of Architecture Modernization (aka. splitting the monolith)

Slide 27

Slide 27 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 28

Slide 28 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 29

Slide 29 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 30

Slide 30 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 31

Slide 31 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 32

Slide 32 text

Which conversations are we missing? (the social, the relational, the contextual) 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?

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Real collaboration - we build on each other's moves www.andycleff.com Helping Team Members Stretch Their Communication Muscles: Kantor Four Player Model It takes many different behaviors to make a team hum. Kantor's four player model is a great a way to help a team improve their communication.

Slide 35

Slide 35 text

Daily reflective conversation Credit: Milestone Systems, Systems Architecture Team Team daily stand-​ up prompts what is going on? what needs attention now? Where are we going? Where is my place in the story? How is my team a team? What does good look like? What is meaningful for me? (Agency) Example: 7 Elements of Visual Management Purposeful models Software-​ centric design Discoveries Decisions Shared understanding Tactical Cultural Strategic

Slide 36

Slide 36 text

Prompts for collaboration Roadmaps Backlogs Plans Dailys Meetings Retrospectives Workshops Design artifacts, events, processes as

Slide 37

Slide 37 text

Impactful software systems Req., code, test, deploy, run Scientific modeling Another cross over the bridge "The 2nd sociotechnical chasm" Collaborative languaging & modelilng Context & systems awareness Software-​ Centric Craft Software-​ Centric Craft Model work as purposeful systems Social Relational Craft Social discovery & conversation skills Impactful human systems "The 1st sociotechnical chasm" Impactful whole work

Slide 38

Slide 38 text

Lead with the WHY, not the WAY Architect for sociotechnical coherence Credit: John Cutler

Slide 39

Slide 39 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 dance and when to hold our poses, in service to the WHOLE system.

Slide 40

Slide 40 text

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