When starting out as a software developer one of the biggest bits of advice you receive is knowing ‘when’ to ask for help. It is very easy to let our ego get in the way of reaching out for assistance with a coding challenge, an unusual error message, or even something as simple as getting stuck in the waiting room for a google hangout.
But while the ‘when’ tends to receive the most attention in the early stages of your career, I would argue that it is just as important to focus on two of the other 5Ws of Problem Solving as well… who and what.
So lets take a shallow dive into the who and what of problem solving:
Knowing who to reach out to is dependent on the situation, but in most cases it is best to start close and end wide. That means starting with the developers you work with on the most regular basis and most likely familiar with the code base.
This accomplishes three important things: First, there’s a good chance this challenge has been encountered before and can be resolved quickly. Second, since the developer you are asking is familiar with the code base you don’t have to spend a ton of time walking through the app to provide context for a developer is removed from the project. Third, it’s proactive communication with your team so that there are no surprises when a feature takes longer than expected.
If the developers in your closest zone of proximity are unable or unavailable to assist then this is a good time to expand the search for help. This can take one of several paths: A senior dev in the organization not familiar with your project, a community slack channel, or the go to of all go to’s ‘StackOverflow.’ I tend to reach out to help in that order. Reaching out to a senior dev not only builds their ego but it also justifies their salary, so make sure to hit them up often. (Did you know that the ‘in a meeting’ icon next to their slack handle means that they are already waiting to have a meeting with you regarding your code problem?) I have also found that pestering senior devs is a great way to introduce yourself prior to attending the annual company meeting.
Okay, so now that you have a friendly set of ears excited to hear all about your problems the big question is ‘what’ to ask. Not effectively knowing ‘what’ to ask can be a huge drain on everyone’s time. Clearly communicate what you are trying to accomplish. By doing this you are providing the context needed to look at your problem from a high level with a potential solution being completely different than your approach. Think of it this way… you are heating up a slice of leftover pizza. But the microwave is broken so you place it on the sidewalk and hope the sun will heat it up. It’s not working too well, so you call up your friend and say, “Hey, how can you increase the temp of concrete?” And then you and your friend spend the next week trying out ways to increase the temperature of concrete. Finally your friend asks, “Why are you trying to heat up the concrete?” And you say, “The microwave is broke and I need to heat up my pizza.” To which they shout through the phone, “Why don’t you just put it in the oven?!” See? If your friend had known ‘what’ you are trying to do, then they could have saved you a lot of time and provided a better solution.
Now some of you might ask what about the other W’s…. where and why. Hmmm, sounds like you have a ‘problem’ to solve. To that I encourage you to go ask somebody else.