Engineers are problem-solvers by trade. If you stretch the definition of the word a bit to include "this thing isn't built yet" and "we don't know what the problem is yet" as "problems," that's pretty much all we do. (That's not to say that's something exclusive to engineers. For example, if you pretend that politicians aren't overwhelmingly corrupt and indeed want to make things better, then their work would be extremely similar in nature to that of an engineer.) It's easy to become laser-focused on just solving one problem and then another and then another and then another, as quickly and efficiently as possible. But that doesn't always produce the right outcome.
Any good software developer will recognize the importance of not causing more problems (bugs) in the process of fixing existing problems. That should hopefully be obvious to someone before their first day on the job. But when you start to stretch the definition of "problem" a bit, I think that fact remains just as true, but not nearly as obvious. Eventually we learn to make things better holistically instead of just fixing bugs as independent tasks.
Let me explain with a theoretical example that came to mind today. A bunch of people in my office are regularly using a service that delivers lunch from local restaurants each day. They drop the lunch off in bags at the front desk, and recently enough people have been ordering from this service that they've needed to set up a separate table to hold all of the ordered lunches. Now imagine that the service becomes more popular, to the point that it's being an inconvenience to other people who need that space for something else, or it looks unprofessional to visiting customers. Now it's a problem.
The easy solution to the problem is to ban personal food delivery services—no more delivery services, no more pile of bags of lunch cluttering up the lobby. Problem solved! Except it's not really; solving that problem just created a new one, namely that all of those people who were using the lunch delivery service now have to find another way to get lunch. Maybe they waste more time driving somewhere, or maybe they get something that they don't really like from a food truck, or at least they're really annoyed at that arbitrary decision to ban delivery services. Solving the first problem just created a new one.
A better problem-solver would recognize the desire for a lunch delivery service, and instead of banning it, find a new place to store the delivered lunches where they're out of view of clients, but still convenient to access.
But probably the right solution for this problem is to analyze why the problem occurred in the first place. Why was that delivery service so popular? Once you've identified that, it opens up a much broader array of solutions to consider. Maybe the correct solution is just to encourage more food trucks, so that people have a more interesting variety of meals to choose from. Maybe it's to have someone hand-deliver lunch to offices so that dozens of people don't have to independently make trips to pick up their food. Maybe it's something else that you'd never have thought of because you were just solving the problem of some bags being in the way. Really solving the core problem instead of just fixing the first obvious symptom is often more efficient in the long run, and almost always a lot more satisfying.
I feel like I do a pretty good job at that kind of advanced problem solving at work and in general technical endeavors. But what I really feel like I'm starting to get better at is applying that knowledge to non-technical things. If your friend does something that really pisses you off, or they seem to be making terrible self-destructive life decisions, those probably aren't the real problems. Finding a way to passive-aggressively get back at your friend, or nag them about it, is the work of a junior problem-solver. But trying to understand what life circumstances led them to behave the way that they did so that you can attack the actual problem that needs to be solved—that's expert-level problem solving. (Of course, not everyone wants you to solve their problems, but maybe all you need to do is to be aware, yourself, that there is a problem, and that's enough to help guide your friend and improve their life.)
When I put it that way, I suppose I'm basically describing empathy. That's a talent that I have certainly not been blessed with. Far from it: I don't understand why people act the way they do, I can't easily imagine things from someone else's perspective, and I don't pick up on emotions or subtle hints. But I can solve problems. Instead of fixing every problem that crops up in my human interactions individually as efficiently as possible—be it an argument, a friend who needs advice, an inconsiderate person ahead of me in line, or so on—maybe some of the more important ones could use some advanced problem-solving skills, so I can find the better solution instead of just causing more problems. I can investigate, and ponder, and try to understand why things turned out the way they did—that's something I know how to do. (I'm far from an expert in the realm of my own interpersonal interactions, but I've gotten good at analyzing other people's problems and getting at the root of things, at least.)
I feel like I'm starting down that road. It's a tough trail to follow, but it's a little bit happier and more peaceful and more rewarding here.