This image was selected as a picture of the we...

At the end of last year, I told one of my students that I thought one of the most valuable things that studying Computer Science teaches you is about systems.  And I explained that I meant that broadly.  Sure, you might learn about specific systems in the process of doing CS work, but just getting the opportunity to do that opens up the whole concept that multiple systems exist everywhere and often, those systems have to work together.  You can even take this out of the realm of technology.  Every institution has systems at work, made up of people.  There are official and unofficial systems.  If you’ve worked in technology systems, you can apply the problem-solving strategies you apply to technology to systems made up of people.  Often people think there’s a technology problem at work, when really it’s a people problem.  I experienced this several times in my previous job.  Sometimes people would think that a system couldn’t do something when really it was that the people running the system either didn’t know how to make it work or didn’t want to relinquish control over their system.  Or often what I see is that people try to make a new technology bend to an old human-created process instead of rethinking the process.

Thinking in systems doesn’t mean removing the human element from the equation.  Far from it.  What it means is that you understand humans don’t work in isolation and neither does technology.  Technology is designed and used by humans and if it doesn’t work the way you want, it might be time to consider the humans in the equation and not think, “Technology doesn’t work right.”  Likewise, if you see a human process that’s not working, it might be time to think about the underlying system the process exists in.  Maybe it’s time to change it, to put in a new process, to try to disrupt the system so that the humans can operate better in it (however you define better).

Thinking systemically allows you to think about issues as interconnected and bigger than just one person or small group of people.  It allows you to see the bigger picture.  It allows you to appreciate that there even is a bigger picture.  It goes to the heart of some society’s biggest issues.  Racism isn’t about just a group of people who are being discriminated against.  It’s about a system that allows that discrimination to happen.  Same for sexism, poverty, the income inequality gap, and climate change, to name just a few.  You can’t fix those problems by fixing one small thing.  You have to fix the system.

Fixing the system might seem daunting, might seem impossible even, but this is where computation can help–to bring it back to CS.  Computational power has allowed us to take data about systems and examine it more closely.  It’s allowed us to simulate changes to the system and see if they might be effective before we implement a change in the real world.  It gives us power where we didn’t have it before.  I said above that you can’t fix problems by fixing a small thing, but that’s a bit misleading.  You can sometimes, and computation has showed us how sometimes a small change has big effects.  We wouldn’t have known that without computation allowing us to see that impact, in part, by understanding how a small thing fits into a larger system.  Understanding that everything is part of a system (or multiple systems) in the first place allows us to follow these paths of thought and then allows us to let computers do some of the heavy lifting in helping us solve some of our biggest problems.

2 Replies to “Systems”

  1. Thanks for this post!

    It’s striking to me that many of the people I know (and read about) who have a CS/coding background are very good at that kind of “systems thinking” when it comes to that specific domain of whatever coding project they’re working on. At the very same time, many of them — a dismaying number, in my experience — seem resistant or even hostile to bringing that same ability to discussions of what you describe here as “society’s biggest issues”. Is that also your experience?

  2. I do sometimes find that to be the case, and I also find the occasional sys admin who forgets that their stuff interacts with 12 other systems and so they can’t go willy nilly creating things. These are often self-taught people. I’m explicit about the systems thinking in my upper level courses. We talk about how the systems we’re using work together and often the metaphor to “real life” comes up fairly naturally.

Comments are closed.