Sociotechnical DDD Nick Tune | @ntcoding
“ Incremental Architecture is essential in a modern Agile development environment… — Allen Holub (@allenholub) ntcoding
ACCELERATING INNOVATION CYCLES Look for Signals From Expects The Market 陸 Engineering 🌏 🤪 📲 Great Customer The Domain 崙 倫 Teams Experience Aligned With A Model Of 🏜 Enabled By Developed By Software Architecture ntcoding
“ the key to incremental architecture is to build on a framework that can accommodate change… that framework is the domain.… By modeling the domain, you can more easily handle changes to the domain — Allen Holub (@allenholub) ntcoding
“A loosely coupled software architecture and org structure to match” is a key predictor of: 1. Continuous Delivery Performance 2. Ability to scale org and increase performance linearly ntcoding
“ [In our study at Thoughtworks we found] work takes an order of magnitude longer when it leaves a team. — James Lewis (@boicy) ntcoding
$ SOCIOTECHNICAL DDD The 5 Interconnected Elements Value 📲 🌏 Customer The Domain Experience 陸 🏜 Software The Organisation 崙 倫 Architecture ntcoding
AGENDA • The Costs of Coupling in Sociotechnical Systems • Sociotechnical DDD Heuristics & Patterns • Large Scale Sociotechnical DDD • Sociotechnical Adaptation • Becoming a Sociotechnical Architect ntcoding
The Cost of Coupling #1 in Sociotechnical Systems
Choosing when/where to add dependencies between components in a system is on of the most fundamental and key design challenges. ntcoding
Domain LUXURY HOLIDAYS
BONA FIDE GENERIC CONTEXTS ✉ ✉ ✉ ✉ ntcoding
DEPENDENCY DECISION CRITERIA ✅ Consumers have not lost any capabilities ✅ Consumers can focus on core areas ✅ Consumers not slowed by dependency ✅ Reduced duplication removes waste ntcoding
GOOD OR BAD REUSE? Luxury Mass Market Luxury Mass Market Experiences Holidays Experiences Holidays 💶 💶 💶 💶 💶 💶 💶 💶 Package Package Builder Builder Package Builder ntcoding
DEPENDENCY DECISION CRITERIA ❌ Consumers have lost capabilities ❌ Consumers blocked waiting for features ❌ Political battles ❌ Perception of duplication was false ntcoding
DECEPTIVE REUSE CONTEXTS Luxury Mass Market Luxury Mass Market Experiences Holidays Experiences Holidays 💶 💶 💶 💶 💶 💶 💶 💶 😮 😃 👺 Package Builder Package Builder Core Supportive Package Builder ntcoding
SHARED SERVICE CHECKLIST 1. Will consumers lose any capabilities? 2. Will consumers gain new capabilities? 3. Can consumers focus more on their strategic initiatives? ntcoding
SHARED SERVICE CHECKLIST 4. Will consumers be slowed down by the new dependency? 5.Will the shared service team be responsive? 6. Will the number of consumers be problematic? ntcoding
SHARED SERVICE CHECKLIST 7. Will the cost of migration be excessive? 8. Can consumers refuse to migrate? 9. Will the shared service improve business efficiency/eliminate waste? ntcoding
Sociotechnical DDD #2 Heuristics & Patterns
Domain FINANCIAL PRODUCTS
PRODUCT-ALIGNED Credit Cards Mortgages Loans ntcoding
SOCIOTECHNICAL DDD HEURISTIC Model the Domain From Multiple Perspectives ntcoding
EVENT STORMING
PRODUCTS VS CUSTOMER SEGMENTS Credit Cards Mortgages Loans 💱 Tier 1 Products 💱💱 Tier 2 Products 💱💱💱 Tier 3 Products ntcoding
SOCIOTECHNICAL DDD HEURISTIC Strive to Align Software and Teams with Business Value Boundaries (aka Core Domains) ntcoding
To design the optimal architecture, you need to know the business model. ntcoding
LEARN THE BUSINESS MODEL ntcoding
CORE, SUPPORTING, GENERIC DOMAINS Tier 3 Free Financial Products Advice (core) (supportive) Payments (generic) ntcoding
SOCIOTECHNICAL DDD HEURISTIC Balance Business Value Alignment with Domain Co-change ntcoding
HIGH CROSS-SERVICE CO-CHANGE Domain Dependencies Become Organizational Bottlenecks Tier 1 Service Tier 2 Service Tier 3 Service ntcoding
SOCIOTECHNICAL DDD HEURISTIC Understand the Social Impact of the Software Architecture ntcoding
ANTI-PATTERN: SELFISH SILOS 😢 😎 User feedback User Facing Team We’re always blocked! Stuck in the Middle Team We’re always blamed! “Users? Make up your mind agile Selfish Silo Team 🙊 What are hippies! they?” ntcoding
THE PINK CHECK Credit: Alberto Brandolini Architecture facilitates: ✅ Purpose ✅ Autonomy ✅ Mastery ntcoding
SOCIOTECHNICAL DDD HEURISTIC Map out the Politics ntcoding
ARCHITECTURE IS POLITICS You want autonomous end-to-end teams? One manager is going to lose some of their power. 👹⚔ 🤵🛢 Digital IT Enterprise IT UI API API UI API API ntcoding
https://medium.com/nick-tune-tech-strategy-blog/sociotechnical-design-variables-52b7048f7b62
SOCIOTECHNICAL DDD HEURISTIC Understand and Model the System at Different Levels ntcoding
Large Scale #3 Sociotechnical DDD
ntcoding
Domain GROCERY SHOPPING
LARGE SCALE PRODUCT ALIGNED Physical Online Mobile Bank Stores Shopping Shopping ntcoding
Why do I need 4 separate logins??!!
Why can’t I see my in- store, mobile, and web orders all in one place??!!
Why can’t I use my in-store loyalty points online??!!
LARGE SCALE CAPABILITY DUPLICATION Physical Online Mobile Bank Stores Shopping Shopping Identity Identity Identity Identity Orders Orders Orders Orders Loyalty Loyalty Loyalty Loyalty ntcoding
LARGE SCALE CAPABILITY ALIGNED Physical Online Mobile Bank Stores Shopping Shopping Identity Orders Loyalty ntcoding
PLATFORM ECOSYSTEM 📲 🖦 Experiences & Edge Services BFF BFF BFF API Platform Identity Orders Loyalty ntcoding
PRODUCTS VS CAPABILITIES Disclaimer: Lots of caveats here Products Capabilities Seamless overall user experience Optimised local user experience Single product innovation speed Business model innovation speed High programme-level Minimal programme-level coordination and negotiation coordination and negotiation Perceived cost centers P&Ls ntcoding
SOCIOTECHNICAL DDD HEURISTIC Organise Large Scale Structure Around Domain Cohesion ntcoding
DOMAIN COHESION Physical Online Mobile Bank Stores Shopping Shopping Identity Orders Orders Orders Loyalty Loyalty ntcoding
SOCIOTECHNICAL DDD HEURISTIC Join data outside the domain to preclude sociotechnical coupling ntcoding
JOIN DATA OUTSIDE THE DOMAIN Physical Store Orders 🖦 🖦 ‘My Orders’ Data Digital Page Warehouse Orders ntcoding
Sociotechnical #4 Adaptation
SOCIOTECHNICAL DDD HEURISTIC Connections are just as important as boundaries ntcoding
PERFECT BOUNDARIES! Sprint 1 Co-change Service A Service B Service C ntcoding
DEPENDENCIES ADAPT AS BUSINESS CONTEXT CHANGES Sprint 2 Co-change 🔦 Service A Service B Service C ntcoding
Don’t force yourself to get boundaries right at the first attempt. Make everybody a stakeholder in the outcome. ntcoding
Build team fluidity and adaption into the DNA of your culture. ntcoding
CLASSIC SOCIOTECHNICAL DDD PATTERNS Relationship patterns from the book S OH SK 🤞 ACL C Anti- Shared Kernel Open Host Customer Conformist corruption Service Supplier Layer ntcoding
REORG TO REMOVE DEPENDENCY ntcoding
BUILD RESILIENCE WITH ORG FLUIDITY Static team lead Rotating developer Sub-team 2 Sub-team 3 Typically 1 developer rotates per-team per- month Sub-team 4 Sub-team 1 ntcoding
NTCODING.CO.UK/BLOG ntcoding
Becoming a #5 Sociotechnical Architect
SOCIOTECHNICAL ARCHITECTS… 1. Domain-driven 2. Value-guided 3. Socially-aware 4. Technically-pragmatic 5. CX-focused ntcoding
SOCIOTECHNICAL ARCHITECT TOOLBOX 1. Event Storming 2. Business Model Canvas 3. The Pink Check 4. Mob Programming 5. User Research ntcoding
LET’S KEEP IN TOUCH… ntcoding.co.uk/sociotechnical DDD London Meetup @ddd_london ntcoding.co.uk/blog ntcoding.co.uk/speaking @ntcoding /in/ntcoding ntcoding
Recommend
More recommend