[SE] #3. How to Win the Fight Against Complexity: Systems Thinking Patterns and Laws

This image is for Systems Thinking

 

The Power to See Complex Problems Simply: What is Systems Thinking? Have you ever felt overwhelmed by a massive problem, like a car’s electronic control system? We’ll provide a clear clue to unraveling that tangled mess through the core concepts, laws, and practical problem-solving patterns of systems thinking.

The products we create these days, especially in the automotive electronics field where I work, are the epitome of complexity. It’s not just once or twice that I’ve been stumped, with countless functions tangled together, not knowing where to even begin. There were times I even felt a sense of inadequacy, wondering, “Is this beyond my abilities?” I’m sure many engineers can relate. 😊

But before blaming the complexity, I realized there was a need to check my ‘way of thinking.’ My approach to problems changed completely after I learned about ‘Systems Thinking’—a perspective that sees the whole forest, not just the individual trees. Today, I want to share that useful knowledge of systems thinking in an easy and comfortable way.

 

Five Concepts to Penetrate the Essence of a System 🧐

The first step in systems thinking begins with understanding the basic concepts that make up our world. It might sound difficult, but when you look closely, they are things we encounter all the time.

  1. Abstraction: This is the skill of leaving only the core and boldly omitting the rest in a complex reality. Rather than creating a perfect model, it’s about simplifying to the minimum elements necessary for problem-solving.
  2. Boundary: It’s the ‘line’ that distinguishes what is part of the system and what is the external environment. How you set this boundary can completely change the scope of the problem and the method of solution.
  3. Change: Systems are not fixed; they are constantly changing. It’s important to read the patterns of how a system changes over time.
  4. Dualism: This is the concept that everything has two sides. You need to consider two complementary aspects together, like software and hardware or process and data, to see the whole picture.
  5. Encapsulation: This means bundling related things together and hiding the internals. It allows the outside to use it easily without knowing how the inside works. It’s also a core principle of Object-Oriented Programming (OOP).
💡 Good to Know!
These five concepts are not separate from each other. For example, you can extract important elements through ‘Abstraction,’ set a ‘Boundary,’ and then ‘Encapsulate’ the elements within it to build a structured system.

 

Image fx 21

The Immutable Laws that Govern Systems ⚖️

Just as there are laws for all things in the universe, systems also have laws that cannot be defied. Just knowing these two laws can help you draw the big picture of problem-solving.

Law Name Core Content
Law of Requisite Variety This principle states that for a system to effectively respond to the diversity of its external environment, the system’s interior must have an equivalent amount of variety. In short, complex problems require complex solutions.
Law of Requisite Simplicity This law states that any system should appear simple to the user. No matter how complex the internals are, the user must be able to use it simply. The smartphone is a great example!

 

Image fx 22

The Wisdom of Problem-Solving: System Patterns & Heuristics 🧠

It’s incredibly inefficient to start from scratch every time you face a new problem. Fortunately, there is wisdom passed down from senior engineers in the form of ‘Patterns’ and ‘Heuristics’.

Typical System Architecture Patterns 📝

  • Modularization: This involves dividing a system into independent ‘modules’ by function. This makes development and testing easier and prevents a problem in one module from spreading to others.
  • Layered Architecture: This is a method of dividing the system into several horizontal ‘layers.’ Each layer has a specific role and only communicates with the layers directly above and below it. The automotive software standard, AUTOSAR, is a prime example.
  • Integrated Control: This pattern reduces cost and space by integrating multiple functions into a single controller (ECU). It’s a method commonly used in modern cars.
⚠️ Watch Out! The Pitfall of Anti-Patterns
If there are good patterns, there are also bad ones, known as ‘Anti-Patterns.’ A classic example is ‘Escalation of Commitment,’ where you continue to push a wrong decision because of the sunk costs. Another is the ‘Big Ball of Mud,’ which describes code that has become a tangled mess due to unsystematic development. We must avoid these traps, right?

 

Image fx 23
💡

Systems Thinking Core Summary

Basic Concepts: Understand the system’s framework with Abstraction, Boundary, Change, Dualism, Encapsulation.
Core Laws: Design systems remembering the laws of Requisite Variety & Requisite Simplicity.
Practical Wisdom:
Increase efficiency using proven ‘patterns’ like Modularization and Layering.
Pitfalls to Avoid: Make better decisions by being wary of ‘Anti-Patterns’.

Frequently Asked Questions ❓

Q: Why is systems thinking important for engineers?
A: Because modern systems are so complex, it’s difficult to solve the entire problem by looking only at individual parts. Systems thinking helps you see the forest, not just the trees, allowing you to understand the interactions between components and the overall structure to find more fundamental solutions.
Q: Don’t the ‘Law of Requisite Variety’ and ‘Law of Requisite Simplicity’ contradict each other?
A: Great question! The two laws address different dimensions. The ‘Law of Requisite Variety’ pertains to the system’s ‘internal complexity,’ while the ‘Law of Requisite Simplicity’ relates to the ‘external interface’ experienced by the user. In other words, the inside should be sophisticated enough to handle a complex environment, but the part the user interacts with should be as simple and intuitive as possible.
Q: What kind of system pattern is the automotive standard AUTOSAR an example of?
A: AUTOSAR is a classic example of the ‘Layered Architecture’ pattern. It’s an excellent case study that enhances standardization and reusability in development by clearly dividing roles into multiple layers, such as hardware, basic software, and application software.

Today we explored systems thinking, a powerful tool for solving complex problems. It might feel a bit unfamiliar at first, but if you start applying the concepts and patterns introduced today to your work, you will surely develop a perspective that sees the essence of problems. I’m still in the process of learning, too. Let’s grow together! 😊

If you have more questions or want to share your experiences, please feel free to leave a comment!

Image fx 24

The Korean Version is here.

댓글 남기기