Sociotechnical DDD
Nick Tune | @ntcodingSociotechnical DDD Nick Tune | @ntcoding Incremental Architecture - - PowerPoint PPT Presentation
Sociotechnical DDD Nick Tune | @ntcoding Incremental Architecture - - PowerPoint PPT Presentation
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
“
ntcodingIncremental Architecture is essential in a modern Agile development environment…
— Allen Holub (@allenholub)ACCELERATING INNOVATION CYCLES
The Market Expects🤪📲
Great Customer Experience Enabled By🏜
Software Architecture Developed By崙 倫 陸 Engineering
Teams Look for Signals From🌏
The Domain A Model Of Aligned With“
ntcodingthe 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)“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)SOCIOTECHNICAL DDD
🏜
崙 倫 陸
$
Value📲
Customer Experience Software Architecture The Organisation🌏
The 5 Interconnected Elements The DomainAGENDA
- The Costs of Coupling in Sociotechnical
Systems
- Sociotechnical DDD Heuristics & Patterns
- Large Scale Sociotechnical DDD
- Sociotechnical Adaptation
- Becoming a Sociotechnical Architect
#1
The Cost of Coupling in Sociotechnical Systems
Choosing when/where to add dependencies between components in a system is
- n of the most fundamental
and key design challenges.
LUXURY HOLIDAYS
BONA FIDE GENERIC CONTEXTS
✉ ✉ ✉ ✉
DEPENDENCY DECISION CRITERIA
Consumers have not lost any capabilities
✅ ✅ ✅ ✅
Consumers can focus on core areas Consumers not slowed by dependency Reduced duplication removes waste
GOOD OR BAD REUSE?
Package Builder💶 💶 💶
Mass Market Holidays Package Builder💶
Luxury Experiences Mass Market Holidays💶 💶 💶 💶
Package BuilderDEPENDENCY DECISION CRITERIA
❌ Consumers have lost capabilities ❌ Consumers blocked waiting for features ❌ Political battles ❌ Perception of duplication was false
DECEPTIVE REUSE CONTEXTS
Package Builder Core💶 💶 💶
Mass Market Holidays Package Builder Supportive💶
Luxury Experiences Mass Market Holidays💶 💶 💶 💶
Package Builder😮 👺 😃
SHARED SERVICE CHECKLIST
- 1. Will consumers lose any capabilities?
- 2. Will consumers gain new capabilities?
- 3. Can consumers focus more on their
strategic initiatives?
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?
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?
#2
Sociotechnical DDD Heuristics & Patterns
FINANCIAL PRODUCTS
PRODUCT-ALIGNED
Credit Cards Mortgages LoansSOCIOTECHNICAL DDD HEURISTIC
Model the Domain From Multiple Perspectives
EVENT STORMING
PRODUCTS VS CUSTOMER SEGMENTS
💱 Tier 1 Products 💱💱 Tier 2 Products 💱💱💱 Tier 3 Products Credit Cards Mortgages LoansSOCIOTECHNICAL DDD HEURISTIC
Strive to Align Software and Teams with Business Value Boundaries (aka Core Domains)
To design the optimal architecture, you need to know the business model.
LEARN THE BUSINESS MODEL
CORE, SUPPORTING, GENERIC DOMAINS
Tier 3 Products (core) Free Financial Advice (supportive) Payments (generic)SOCIOTECHNICAL DDD HEURISTIC
Balance Business Value Alignment with Domain Co-change
HIGH CROSS-SERVICE CO-CHANGE
Tier 1 Service Tier 2 Service Tier 3 Service Domain Dependencies Become Organizational BottlenecksSOCIOTECHNICAL DDD HEURISTIC
Understand the Social Impact of the Software Architecture
ANTI-PATTERN: SELFISH SILOS
User Facing Team We’re always blocked! Stuck in the Middle Team We’re always blamed! Selfish Silo Team 🙊 Make up your mind agile hippies!😢 😎
“Users? What are they?” User feedbackTHE PINK CHECK
Credit: Alberto BrandoliniArchitecture facilitates:
✅ Purpose ✅ Autonomy ✅ Mastery
SOCIOTECHNICAL DDD HEURISTIC
Map out the Politics
ARCHITECTURE IS POLITICS
Enterprise IT Digital IT You want autonomous end-to-end teams? One manager is going to lose some of their power. UI API API UI API API👹⚔ 🤵🛢
SOCIOTECHNICAL DDD HEURISTIC
Understand and Model the System at Different Levels
#3
Large Scale Sociotechnical DDD
GROCERY SHOPPING
LARGE SCALE PRODUCT ALIGNED
Physical Stores Online Shopping Mobile Shopping BankLARGE SCALE CAPABILITY DUPLICATION
Physical Stores Online Shopping Mobile Shopping Bank Identity Orders Loyalty Identity Orders Loyalty Identity Orders Loyalty Identity Orders LoyaltyLARGE SCALE CAPABILITY ALIGNED
Physical Stores Online Shopping Mobile Shopping Bank Identity Orders LoyaltyPLATFORM ECOSYSTEM
Identity Orders Loyalty API Platform Experiences & Edge Services BFF BFF BFF📲
🖦
PRODUCTS VS CAPABILITIES
Products Optimised local user experience Single product innovation speed Minimal programme-level coordination and negotiation P&Ls Capabilities Seamless overall user experience Business model innovation speed High programme-level coordination and negotiation Perceived cost centers Disclaimer: Lots of caveats hereSOCIOTECHNICAL DDD HEURISTIC
Organise Large Scale Structure Around Domain Cohesion
DOMAIN COHESION
Physical Stores Online Shopping Mobile Shopping Bank Identity Orders Loyalty Orders Orders LoyaltySOCIOTECHNICAL DDD HEURISTIC
Join data outside the domain to preclude sociotechnical coupling
JOIN DATA OUTSIDE THE DOMAIN
Physical Store Orders Digital Orders🖦
‘My Orders’ Page Data Warehouse🖦
#4
Sociotechnical Adaptation
SOCIOTECHNICAL DDD HEURISTIC
Connections are just as important as boundaries
PERFECT BOUNDARIES!
Service A Sprint 1 Co-change Service B Service CDEPENDENCIES ADAPT AS BUSINESS CONTEXT CHANGES
Sprint 2 Co-change Service A Service B Service C🔦
Don’t force yourself to get boundaries right at the first
- attempt. Make everybody a
stakeholder in the outcome.
Build team fluidity and adaption into the DNA of your culture.
CLASSIC SOCIOTECHNICAL DDD PATTERNS
Shared Kernel Customer Supplier Open Host Service Conformist OH SK C S🤞
Relationship patterns from the book Anti- corruption Layer ACLREORG TO REMOVE DEPENDENCY
BUILD RESILIENCE WITH ORG FLUIDITY
Sub-team 1 Sub-team 2 Sub-team 3 Sub-team 4 Static team lead Rotating developer Typically 1 developer rotates per-team per- monthNTCODING.CO.UK/BLOG
#5
Becoming a Sociotechnical Architect
SOCIOTECHNICAL ARCHITECTS…
- 1. Domain-driven
- 2. Value-guided
- 3. Socially-aware
- 4. Technically-pragmatic
- 5. CX-focused
SOCIOTECHNICAL ARCHITECT TOOLBOX
- 1. Event Storming
- 2. Business Model Canvas
- 3. The Pink Check
- 4. Mob Programming
- 5. User Research
LET’S KEEP IN TOUCH…
ntcoding.co.uk/sociotechnical ntcoding.co.uk/blog ntcoding.co.uk/speaking
@ntcoding /in/ntcoding
DDD London Meetup @ddd_london