Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Navigating sociotechnical complexity with DDD a...

xinyao
May 19, 2024
26

Navigating sociotechnical complexity with DDD and friends

[Xin's keynote at JAX Mainz, April, 2024]

What is the first thing that comes to mind when you hear the word DDD – Domain-Driven Design? Geeky-sounding patterns like Aggregate and Ubiquitous Language? Walls decorated with colorful event storming stickies? A miracle cure to rescue change initiatives in large companies? Or are you thinking of a software development method born in the pre-cloud and pre-microservice era, which after 20 years still seems to be struggling to gain traction?

Xin has lived and breathed DDD and domain-driven architecture for more than a decade. Drawing on her own developmental journey, Xin makes a case for the rising relevance of DDD and adjacent practices in a post-modern world, where aging companies struggle with aging software, while adding new software and complexity to their IT portfolio. With good attractor effect, DDD is evolving from a software-centric design discipline to a multi-dimensional, sociotechnical design toolbox. Join Xin to reflect together on, how DDD and friends can be leveraged as powerful enabling constraints to help us see the system, share the system, and build the system in a reality of vast sociotechnical complexity and constant change.

xinyao

May 19, 2024
Tweet

Transcript

  1. DDD & architecture consultancy DDD output + + Sociotechnical design

    + Systems leadership + Who is Xin? Undercover change agent through DDD and architecture Xin Yao @settling_mud [email protected] @[email protected] /in/xinxin/ delay + delay Independent consultant
  2. Software is logical, and "compiles" Right or wrong answer a

    mathematically provable range of optimized solutions or at least Deterministic solution
  3. 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)
  4. 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
  5. Single Responsibility Principle Open/Closed Principle Liskov Substitution Principle Interface Segregation

    Principle Dependency Inversion Principle Image Credit: Robert Ecker We applied SOLID principles
  6. 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
  7. Design cannot happen in a closed system My existential conundrum

    Long way from neat and tidy to useful software <> "giant clock"
  8. Software's context is full of decisions that can go wrong

    Picks the wrong direction Builds things that don't matter Builds wrong things Incidents & outages Builds things the wrong way Credit: Jabe Bloom (adapted to context) Which area(s) do you see higher risks in your organization, where well-​ meaning decisions do not end up having the desired impact? Leadership (team) Product (team) Development (team) Operations (team) Architecture (team)
  9. Leadership (team) Product (team) Development (team) Operations (team) Architecture (team)

    Picks the wrong direction Builds things that don't matter Builds wrong things Incidents & outages Builds things wrong Decisions are interdependent The whole story How does each part understand the whole story? Architect Developer
  10. Software's context is full of human relations Credit: Henrik Kniberg

    (Adapted) Maker User Decision makers handoffs/intermediaries Time (Delay in feedback) Confused language enters software and hurts its maintainability
  11. Socio- technical Sociotechnical complexity Complexity in "Parts" (e.g. tasks, code,

    Jira tickets) Credit: University of Leeds (Sociotechnical Center) Complexity in "Relations" (e.g. interfaces, meetings, decisions, practices) Infrastructure People Technology Culture Processes /Procedures Goals / Metrics ...requires us to think in systems
  12. What many people fail to realize is that the relationship

    is the delivery system of anything we wish to accomplish. -- Peter Block
  13. Domain-​ Driven Design (DDD) as a practice Visually model the

    whole-​ part, part-​ whole relations
  14. Who work and create value together? Who else do we

    need to align understanding with? DDD DDD - Philosophy & Practices 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
  15. See the forest and the trees But not at the

    same time And not like this
  16. Complex Systems scale by decomposition to the lowest consistent level

    of granularity, and recombination, not by aggregation or imitation. -- Dave Snowden Knowledge is created, not shared Granular discovery Distributed cognition Dis-​ intermediation of data Principles of managing complexity (Credit: Dave Snowden)
  17. Linking strategy to everyday work Good experience with "the North

    Star Framework" input input input input North Star (The purpose) The value "bets" The work "bets" Opportunities Interventions My ticket leverage point solution agnostic, but opinionated actual work experiment epics stories 1-3 years 1-3 quarters 1-3 months 1-3 sprints Model of strategy Model of strategy deployment Strategic Design Visual Collaborative Modeling (models)
  18. squad Tribe A squad squad squad Tribe B squad A

    new initiative OKR OKR OKR OKR OKR OKR OKR A shared and deeper understanding of the "WHY" How does my contribution matter in the big picture, over time? Find my place in the story Strategic Design Visual Collaborative Modeling (models)
  19. Joy in work comes from understanding why your work is

    important. Not from work, but from the knowledge of who's going to use it. -- W. Edward Deming
  20. A DDD workshop series Strategic Design (models) Tactical design (models)

    Visual Collaborative Modeling the WHY the WAY
  21. Work-​ centric Sociotechnical complexity Work design Sociotechnical mirroring Agile process

    & tooling Inverse Conway Spotify model Learned helplessness Skepticism Unknowability A big divide Pessimism Non-​linearity Lack of agency
  22. Credit: Jim Benson See the Whole System Tactical info Strategic

    Info Cultural Info 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 Essential skill in Software design State Triggers Visualized work Direction Narrative Culture Professionalism Identity Emergencies Action Improvement Opportunity Discovery need Shared work Complex work Current WIP Who is working Who is collaborating What is ready for release What is stuck How is our psychological flow Strategy Plans & Backlogs Upcoming work options Onboarding Upskilling Team identity Interaction & meetings Human repair Social contracts Improvement Correction Learning Quality Who am I and what are my values? How is work meaningful? How is work developmental? Agency Spheres of influence Affordance Visualizing Work as a Social Architecture (UI layer) (Business layer) (Infrastructure layer)
  23. Share the Whole System 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
  24. Pervasive but non-​ invasive visual prompts See & discuss essential

    elements of work A visual feedback loop provide space to (+) Calm, profession, non-​ stressful way of working enables (+) Reveal gaps for improvement & learning increases psychological safety to (+) motivates the use of (+) "You can't fix what you can't see"
  25. Multi-​ year roadmap Visualize work as a system Linear Execution

    Governance Continuous Roadmapping (Now-​ Next-​ Later) In-​ the-​ moment systems leadership Think in Conditions-​ consequences Think in Means-​ ends Big Hairy Goal Target Architecture Blueprint From Prescriptive to Generative Architecture Build the system so it can take care of itself Reflective conversations & collective reasoning Gap Thinking Ideal Present Thinking Gap Thinking Credit: Jabe Bloom
  26. What if I am not a leader How do you

    change the world? One room at a time. Which room? The one you're in. ~ Peter Block
  27. Software-​ centric Sociotechnical complexity Work-​ centric Sociotechnical complexity Software design

    Work design DDD Product Thinking Strategy COMO DevOps Software Architecture DDD Reflective Conversation Visual modeling Sociotehnical Architecture Systems Thinking Complexity Theory Constraint modeling Languaging Sense making DDD & friends (i.e. adjacent practices) can be catalytic enablers in sociotechnical design. Emotioning
  28. What is needed in sociotechnical systems changes technological sophistication human

    sophistication modeling analysis simulation visualization synthesis categorization advocacy agency listening inquiry sociotechnical design emotional intelligence systems thinking system dynamics modeling technological advancements architecture institutional learning systems leadership productivity mental models constraints modeling affordance