The Power of a Systems Approach
What makes for a useful methodology or philosophy is its ability to predict future events accurately. Almost every approach can tell a good story by describing and explaining past events with selective perception and post-hoc analysis.
My goal in this post is to elucidate exactly what a "systems approach" means, and why I use this approach to problem-solving. I don't use any specific framework or device but instead draw from many sources and my own experience. In this first post, I'll cover a few main tenets of my philosophy for problem-solving: systems thinking, considering secondary effects, and realist analysis.
Thinking in Systems
Systems thinking is about looking at specific problem not in isolation, but the environment that the problem lives in. To illustrate this, we'll look at the process of hiring software engineers.
The problem of hiring software engineers is simple; given a pool of candidates, hire the best ones for your company. This happens through a series of filtering mechanisms, a common one is the code interview. take their cues from successful larger companies and do things such as ask questions you might find in Cracking the Coding Interview. However, just cargo-culting the interview process of Google is likely going to filter out quality candidates for your company, just because they're not the right candidate for some other company's process.
Understanding the context of a company's goals is easy enough, but systems thinking means we don't just think of a company in a vacuum. It has customers, competitors, state actors, and any number of other possible influences. Part of the challenge of systems thinking is separating the signal from the noise and not wasting time on immaterial influences. Let's think about some outside influences for our first example, employee screening. What other context might shape how a company does screening?
Imagine the company just blindly copying the Google's interview process, but this time the company actually does actually need exactly that kind of programmer. It seems this would be a good company to just wholesale copy a process, right? However, that company is not Google, and thus doesn't have the power to draw the same candidates that Googlel does. So if you're trying to hire employees that would pass a Google interview, you're going to bias toward a specific kind of candidate, and that specific kind of candidate would probably rather be working for Google; that means at best you're going to end up with a subset of those candidates, the subset that failed to pass Google's interview. Given this outside context, it might be better to consider a different approach to target candidates that are a better fit for your company within the context of the hiring market.
Understanding Tradeoffs
In the last section we looked at how the larger context can influence our decisions, but equally as important are how our decisions can influence our context. Systems thinking doesn't end at your decision or implementation, it extends to the effects those decisions make on other parts of the company or situation generally. Every decision made comes with a cost (a decision with only benefits is not a decision), and failure to understand this can lead to bigger problems than whatever the initial decision was trying to solve.
A very simple example of this is when someone from upper management calls for a new regular status meeting just to catch themselves up on something. This is great for the person calling the meeting; they have everyone involved in a project, ready to be called on on a weekly basis. For the company, though, what is the cost of having 5 or 10, or even more people joining a meeting for the sole purpose of a status update? It's a lot, and it's even more if you consider the cost of interruption and the discontent of an unproductive meeting.
A Mindset, not a Framework
My approach to systems thinking is not a framework or formula with steps to always achieve the right result, but instead a box of tools I reach for when presented with a complex problem. I continue to hone my skills by checking my predictions against reality, and updating my worldview when I make wrong assumptions.