All Posts
Software Craft

Introduction to Systems Thinking and Escaping Common Systems Traps

Published on
May 1, 2024
Contributors
Aditya Sapate
Software Craftsperson - Tech Lead
Subscribe to our newsletter
Share
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.

TL;DR

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.

A causal loop diagram of coffee cup cooling, where a balancing loop is trying to bring the discrepancy between coffee’s temperature and room temperature to zero.

A causal loop diagram of Interest bearing bank account, where a reinforcing loop is in place which enables the growth of the money in the bank account as a constant fraction of itself.

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.

To achieve the desired consistency, the architect has introduced a policy to allocate more time to architecture reviews. However, developers are not pleased with this policy because it is adversely affecting delivery speed. In this system, when architects introduce new policies aimed at ensuring consistency and they prove to be effective, it tends to divert developers from their primary goal of speedy delivery.

The Way Out of the Policy Resistance Trap by Using Leverage Points

  1. Improve information flow: Communicate the mission; provide education on DDD.
  2. Change the rule and authority: Relax standards to focus on interoperability, introduce optional guidelines, and change the review process to consultation.
  3. Increase self-organization: Create a community of practice where individuals from development teams can provide input to standards and guidelines.
  4. Change goals and purpose: Elevate the purpose from “consistency” to goals that help development teams: delivery speed.
  5. 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

Key Takeaway

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.

Follow the Below Resources to Learn More about Systems Thinking

Thinking in Systems by Donella H. Meadows

Leverage Points

Keynote: Systems Thinking — Kent Beck & Jessica Kerr

LATEST BLOGS

Read More About Our Mindset

Discover how we are unlocking the pathways to innovative breakthroughs
View all