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
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.