Introduction to Systems Thinking and Escaping Common System TrapsSystems Thinking Software Craftsmanship
There is no right or wrong answer in architecture - only trade offs.
—Fundamentals of Software Architecture By Mark Richards, Neal Ford.
Everything in software architecture is a trade-off, so the famous answer to every decision is “It depends”. It depends on the engineering practices and processes, the organization’s culture, business drivers, the developer’s skill sets and many other factors.
It is important to understand these systems to make the most effective interventions. How? With Systems Thinking.
Systems Thinking is a discipline for recognizing patterns and interrelationships in complex systems and finding more effective ways to influence those interrelationships.
It helps understand the structure of systems and identify problem-generating structures. In this blog, we explore the Policy Resistance archetype, where actors within a system resist rules or policies imposed on them.
To overcome this trap, leverage points such as improving information flow, changing rules and authority, increasing self-organization, changing goals and purpose, and shifting paradigms can be applied.
What is Systems Thinking?
Systems Thinking is a discipline for seeing wholes, recognizing patterns and interrelationships, and learning how to influence those interrelationships in more effective, efficient ways.
Systems Thinkers see the world of variables (quantifiable elements) and feedback loops: regulating mechanisms which drain, increase or balance these variables.
With the help of causal loop diagrams, we can map out the structure of these systems and identify what is keeping the system functional and archetypes, which are the problem-generating structures in the systems.
In this blog, we will explore a common archetype in a system and pinpoint strategic points for intervention within the system.
Policy Resistance archetype
In a multinational enterprise
- For consistency, the enterprise architect has issued a standard to use DDD for all development.
- The development team is slow in adopting, complaining that this is a bottleneck that reduces delivery speed.
- The architect tries to fix it with.
- Automated compliance checking.
- Spend more time on architecture review.
- Ask everyone to follow design specifications.
This is a common system trap called “Policy Resistance” occurs when the actors within the system “resist” the rules or laws imposed on them. The goals of the policy do not align with the goals of the actors.
The way out of the Policy resistance trap by using leverage points
- Improve information flow: Communicate the mission; provide education on DDD.
- Change the rule and authority: Relax standards to focus on interoperability, introduce optional guidelines, and change the review process to consultation.
- Increase self-organization: Create a community of practice where individuals from development teams can provide input to standards and guidelines.
- Change goals and purpose: Elevate the purpose from “consistency” to goals that help development teams: delivery speed.
- Shift the paradigm: Redefine the development team’s perception of architecture.
Where to apply Systems Thinking?
- Not everywhere!
- Issues that won’t go away
- Issues that get worse the more you try to fix them
- “Paradigm shifting” changes in technology or approach
By identifying patterns and problem-generating structures, we can strategically intervene and make more effective changes. It is a valuable approach for addressing persistent issues and driving paradigm-shifting changes in technology or approach.