What Exactly is Systems Thinking?
Systems Thinking makes software development more efficient

This week I held a few workshops within my organization to explain what Systems Thinking is and some of the common tools used in Systems Thinking, supported by an ongoing classic case study from my organization.
While gathering material for these workshops, two common questions often came up.
- Will you guide us through the design of an e-commerce system, an instant messaging system, or any system in this workshop?
- We don’t usually have the opportunity to redesign a system, so do we still need to learn systems thinking?
These questions are closely related. Essentially, they both ask whether Systems Thinking is the same as software architecture design.
The answer is definitely no.
Systems Thinking is a methodology that goes beyond software architecture design and can be applied to any situation and any problem.
So, what exactly is Systems Thinking? How does this relate to our daily routine?
What is System?
Before explaining the importance of Systems Thinking, let’s talk about what a system is.
Simply put, a system is a group of entities that are “interrelated” yet “independent,” working together toward a “common goal.”
The most important part of this sentence is the common goal.
A Chinese proverb describes “a plate of loose sand”, meaning even though everyone in the group is sand and on the same plate, you wouldn’t call it a system because there’s no goal.
Is a baseball team a system? Absolutely. Each member has specific roles, like infielders, outfielders, or pitchers, but they share the common goal of winning.
Now you know a system is not a software architecture.
What Are the Benefits of Learning Systems Thinking?
Let’s go back to the second question at the beginning of this article.
Why do we need to learn Systems Thinking? How will it be applied in daily routine?
While we may rarely get the chance to redesign software architecture — whether through decomposition or changes in data structure — we, as developers, frequently face the challenge of implementing various features and functionalities.
Have you ever thought about how to improve the productivity of your development when you have a large-scale project taking several months to complete?
How do you plan project progress when changes affect multiple files, modules, or even services? How can you batch tasks effectively or minimize the impact radius during a critical failure?
These are all areas of Systems Thinking, and they are issues that every engineer needs to face.
I have written an article in introduction to the decision making process, which is actually a practical application of Systems Thinking.

At the top of the pyramid is the “common goal” of the system.
The following diagram shows the iceberg model of Systems Thinking.

The events we observe in daily routine are just the surface. When things go wrong, how can we address them? Systems Thinking emphasizes that the deeper we delve into the underlying structures and mental models, the greater our influence becomes.
Conclusion
I’m not going to dig into the details of Systems Thinking too much in this article, after all, it’s not something to cover in a few words.
But this article should quickly answer two common questions.
- What is Systems Thinking?
- What are the benefits of learning Systems Thinking?
As software development becomes more complex and chaotic, it feels like venturing into darkness without direction. What we need is a light — a guiding beacon to illuminate our path and help us find clarity. That light is Systems Thinking.
Systems Thinking isn’t a skill limited to architects or managers; it’s a mindset every engineer, product owner, and leader can benefit from. Whether you’re tackling a multi-month project or debugging a critical issue, systems thinking can help you see the bigger picture and guide your decisions with clarity.
Originally published on Medium