Understand Systems Thinking

It is surprisingly easy to get trapped in ways of thinking that limit your ability to progress.

When I started writing code as a teenager in the early 1980s on my trusty Commodore 64, the programs I created were linear and easy enough to reason about. I didn’t know it at the time but in hindsight I was learning a specific approach to thinking about software. That approach is reductionism, which I’m going to summarize as the idea that a complex system is just the sum of its parts.

Around the same time, I also started writing music. One of the things that I realized when I joined my first band was that all of my best music was created as part of a small team, typically three or four of us, and that that was also true for my band members. We could all write decent songs on our own, but they were somehow never as good as when we wrote them as a group. Musicians often talk about how the “sum is greater than the parts” and having written music for about 40 years, it remains the case for me.

I didn’t link this insight to my professional work until much later.

My early professional programming jobs involved working in a single monolithic enterprise codebase in an equally linear fashion to my early programs. Using reductionism to reason about the software I was building worked well for me. It stopped doing so when I started coding on my first distributed system, building an internet banking app ...

Get Understand Systems Thinking now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.