Sociotechnical Design Heuristics
There are thousands of ways we can shape the software systems we build and organise our teams around them. Yet there is no flowchart we can simply follow to find the optimal design. Sociotechnical systems are complex systems formed of complex systems - market are complex, organisations are complex, and software systems are complex.
There is no flowchart or step-by-step guide to architecting social systems. Instead we must turn to heuristics, clues that help us to consider the competing design pressures.
Thousands of heuristics exist which is an impractical number to iterate through each time we make a design choice. Fortunately, I believe there are five primary, top-level heuristics that give us a manageable mental model.
Primary Heuristic 1: Align with Business Value
We should align boundaries in sociotechnical systems to optimise ROI.
- Align with investment strategy
- Align with growth strategy
- Align with key revenue streams
- Align with evolutionary stage (the Simon Wardley heuristic)
- Isolate high-leverage shared capabilities
- Organise for responsiveness in differentiator capabilities
- Optimise for future potential
- Separate engagement and revenue
Primary Heuristic 2: Align with Business Domain
We should align boundaries in sociotechnical systems with our business processes to minimise dependencies and promote sustainable development practices.
- Align with rate of change
- Align with source of change
- Align with transactional boundaries
- Align with domain experts
- Align with historical domain boundaries
- Minimuse cardinality
- The marry-me heuristic (if there is a high coupling between parts, combine them)
Primary Heuristic 3: Optimise for Social Needs
Sociotechnical design choices impact the purpose, autonomy, and mastery of the individuals contributing to the system. We should treat social needs with as much importance as any others.
- Align with social cohesion
- Align organisational and technical boundaries
- Minimise social complexity
- Minimise gap between between delivery teams and end users
- Optimise for intrinsic motivation
- The Dan Pink heuristic (optimise for autonomy, mastery, purpose)
Primary Heuristic 4: Respect Technical Constraints
Couplings in technology introduce dependencies between teams there we should consider the technical constraints when designing team boundaries.
- Align with existing architecture
- Design for replaceability
- Isolate legacy
- Isolate by security needs
- Isolate by performance or scalabilty requirements
- Isolate for risk containment
Primary Heuristic 5: Optimise for User Experience
User experience is a key impact on customer satisfaction and market share and the design of sociotechnical systems influences the user experience.
- Align with products
- Align with user journeys
- Align with end users
- Align with market verticals
- Organise for UX consistency