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

Navigating sociotechnical complexity with DDD &...

xinyao
October 05, 2024
200

Navigating sociotechnical complexity with DDD & friends

This is a new version of a namesake talk, delivered as keynote at JAX London, 2024.

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

October 05, 2024
Tweet

Transcript

  1. 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 +
  2. Software is logical, and "compiles" Right or wrong answer a

    mathematically provable range of optimal 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. 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
  9. 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
  10. 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.
  11. 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
  12. 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…
  13. A DDD workshop series Strategic Design (models) Tactical design (models)

    Visual Collaborative Modeling Problem space Solution space
  14. 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)
  15. You cannot find optimal software boundaries with DDD Confessions of

    a Change Smuggler in a complex domain with ever-​ changing business logic
  16. Premature convergence Bounded Context Bounded Context Bounded Context Bounded Context

    Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context
  17. 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?
  18. 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?
  19. 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?
  20. 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
  21. 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
  22. 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?
  23. 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?
  24. 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.
  25. 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
  26. 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
  27. 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.