How do you organise teams and align them with your software architecture? Do you design the teams first and the architecture later or vice-versa? Do you have even have guiding principles and techniques that help you to shape your organisation or are you driven by gut instinct and the structure of your previous company?
The Sociotechnical Architecture is a collection of heuristics, patterns, and techniques for co-designing and co-evolving software teams and software architectures aligned to the business strategy.
Included in the toolkit are domain-driven design techniques like Event Storming and the Bounded Context Canvas. The tools are about finding natural cohesion in the business domain which provides a platform for autonomous teams and services.
The toolkit also contains principles, like the 3 virtues of modularity, which help us to create a structured mental model of sociotechnical systems so that in any given situation we can think for ourselves and make contextually-relevant trade-offs. The toolkit also includes a variety of patterns for evolving architecture like slice and scale, along with heuristics for deciding when it’s the right time to evolve an architecture.