How to ask for help

2016-05-23

This may seem like an odd topic for a programmingish blog, but this is a significant job skill for all of us in the tech industry. Our jobs demand we learn things at a ferocious pace and starting for square one every time and doing the whole journey by ourselves isn't very efficient or fun.
We need to take advantage of the knowledge of those around us.

There's a big BUT here, though. We also have a responsibility to take seriously other people's time. That's what this post is about - how to get the help you need, without wasting anyone's time. It is largely about attitude and philosophy, but hopefully some techniques too. I'm someone who gets asked for help, but who also asks for help all the time. I'm sure I don't follow the advice I give here every time I wander by someone's desk with a "quick question", but I aspire to.

First, the whole core to asking for help properly is that you need to own your problem. If you go to look for help with the hope of transferring the problem to someone else, you aren't asking for help, you're asking for someone to do it for you. That may be valid if whatever you are dealing with truly isn't your job, but chances are it is just something new that has become your job. That's part of this industry - we all have to learn these things. Accept that, get help, learn. But remember it is your problem.

So, to start with, do your homework. Yes, there might be too much to learn - but don't expect someone to take you from zero. There is generally a chunk of vocabulary, base concepts and similar ideas that you need to get to grips on and almost everything has an intro website somewhere out there. Google or your favourite equivalent is your friend here - you aren't the first person to try to learn this stuff. You need to know enough to know what you're having trouble with before you ask for help.

Second, consider your resources. I personally consider a subscription to Safari Books (no, this is not a paid endorsement) as part of the cost of being in this industry and many companies also have subscriptions to that offering or other similar ones. Websites are great for timely information, but there's a substance to a good book that is tough to beat and instant access to a good book on something you're suddenly expected to be an expert in is very good for your confidence and may answer your questions before you need to go ask anyone else. If it is an internal application/module/class/configuration, obviously there's no books on that, but there is the source code, there is the bug tracking system and whatever you are using for process tracking (what's changed in this area, who did it?). There's likely the user-facing documentation, too - I'm always surprised when I talk to developers who haven't read the end-user documentation. Comments, internal docs, whitepapers, whatever - make sure you've at least looked for it.

This is starting to sound like an essay on how NOT to ask for help, which I guess is a fair cop. This isn't meant to discourage you from asking for help at all, though - I am just encouraging you to do your due diligence first. And, of course, it depends on the sort of thing you are asking about and the level of the help you are asking for - asking your teammate if she remembers the CSS directive to do X is a lot different than asking for a grounding on a major topic, especially from someone working on different things than you. In my office, we have a philosophy, which is fantastic, that everyone helps everyone - there's no-one that is off limits to help out. That does mean that you have that extra responsibility to help yourself before asking for help.

Ok, so you've done your homework and have a basic grounding, you've looked at the resources available to you - and you still need help. Cool - time to go ask for that help. But to whom to you go? The list of possible candidates is going to depend on your office culture (are there people off limits? Do you need to stay within your product teams? I hope not, but I know there's places where that is true. Why it shouldn't be true is another topic for a blog). Ok, so you have your list of people who probably can help - how do you pick who to go to? I'd say start with the most specific - if there's someone who's been tapped as the Subject Matter Expert (SME) for the office on that topic, that's a great starting point. If there isn't, I'd suggest to start with the most junior person that could help. There's a couple of reasons for that - first, the most senior people are often the busiest - they can help with such a wide range of problems that they are always in demand. The second reason is that helping people is a skill that everyone needs to develop and the more junior someone is, the more likely it is they still need to develop that skill.

Ok, you've got your grounding, chosen your volunteer and you've wandered over to their desk or sent the email. Now there's a fine line here - you want to get the information you need to get you over the barrier you've encountered, while minimizing the amount of their time you use. Take a pen and a notebook and write things down. If they draw you diagrams, take a picture of them.
I prefer to get the specific information I need, plus any hints I can glean from the expert about what lies ahead of me, then head back to my desk to put them into practice.

And that's the next big thing - use the information you just got as quickly as possible. You need to make sure you don't lose the knowledge you just got and no matter how good the notes you took are, without the context from the conversation you just had, they won't be nearly as useful. So use the notes while the conversation is still fresh. And don't got have the conversation when there's going to be a long time before you use it - no chats before a long weekend, for instance.

And if you hit another roadblock - start over. Do your homework and check your resources.. but this time, rather than going through the process to find someone to ask, it is often best to just go back to the same person (unless they've suggested a better option). For one thing, if you did as I suggested and put things into practice immediately, your problem is likely reasonably fresh in their mind as well, so it is more efficient to ask them rather than pick a new person. But do make sure you did your homework again - there's an easy habit to get into of going back and going back - do your best to not fall into it.

Remember, nobody wants you to spin your wheels, to be stalled trying to make progress (to mix my automotive metaphors). Ask for help - we all need to. Just get the most you can out of it.

-cdr