Step One: Help Others
I’ve always found the most fulfillment from helping others. Going all the way back to high school, I would almost always be the first to help. Often, it was because I knew the answer (bit of a know-it-all, and some hated me for it), but I always felt like that’s what I should do. It was ingrained into me, even though I could never figure out why. I would risk not getting my work done to help others, even though that never ended up becoming a reality it always felt right.
Helping others can come at a cost. Adam Grant talks about this extensively in his book Give and Take (which I highly recommend). He talks about classifying people as “givers”, “takers”, and “matchers”. The interesting point is that on a spectrum of performance, givers are primarily at the extremes. They either help everyone else so much they fail to get their own work done, or they help everyone just enough (or just in the right way) that it significantly increases the performance of the overall team. While Grant explores many great ways that people help others without putting their own work at risk, I think the interesting thing about this is figuring out how to help in the right way. A favorite saying for this comes to mind:
Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
While this isn’t perfect (as sometimes people just really need the proverbial fish), it does get at the core of how I find helping others to be the most effective (if they care to learn, which is an entirely different topic). Teach them to problem solve. Honestly, it is one of the most important parts of software development interviews (and many other positions centered around “thought work”). The programming languages you know don’t matter if you can’t use them to solve problems. They are just tools in your toolbelt. But is there a way to improve your own problem solving skills before asking others to teach you how to fish? I think so.
There is a common group of sayings in the software development world called “rubber duck debugging” (see also: cardboard dog debugging). The idea is pretty simple. Before asking someone else for help and explaining your problem to them, explain it to a rubber duck. The key part of this is that you should explain it out loud. The reasoning behind it is that you engage a different part of your brain when verbalizing your problem, it often can help you think about the problem from a different angle. I can’t tell you the number of times I’ve walked into a co-workers office, started explaining a problem, and then before they even get a chance to get a word in I stop and go “never mind, I figured it out”. One time I heard my manager laughing basically the entire walk back to my desk. In a similar vein, while helping others, you solidify your understanding of a topic and find gaps in your thinking. This all comes back to explaining it out loud. Needing to explain how a system/language/tool/etc. works helps you realize how much you really understand it.
I want to continue this thinking from a slightly different angle. In helping others, you often help yourself. Trying to help someone else with a problem that you are struggling with can actually help you think differently about the problem. It removes your own thoughts and reservations around a problem and can help you see possible solutions more clearly. People often say, “I’m really good at helping others with their problems, even when I can’t solve my own” (I’m obviously paraphrasing here). The main reason there is that you don’t have the same doubts and negative thoughts running through your head when helping someone else. You are only focused on helping that person find a solution.
All of this to say, helping others still isn’t the solution to the world’s problems or even your own. As an engineer, I know that there is never just one solution to a problem. There are better solutions and worse solutions, but never a single solution. Even amongst the better solutions, there are tradeoffs, and none will be perfect. There might be one with the most acceptable tradeoffs for your situation though. On the other hand, I do think if it involves helping others, then it is a step in the right direction. In a world more isolated and disconnected than ever in recent memory, giving a little of your time to help others will pay off in the long run.