How to Ask for Help as a Software Engineer?
This post would probably read more like a rant. After having made all these mistakes while asking for help from people around me, there are a couple of things that I learnt about it.
I recently read an article about a similar topic but more focused on the tone instead of the how to: A social psychologist explains how to ask for help without making it weird
In a Software Engineering setting though, there are some other things that help as well. Not all questions are created same, so all points are not valid for all question types.
Search before you ask
Even before you decide to ask someone for help, search for it first. Every org today has some sort of a wiki and a DM tool like Slack that allow you to search. Most code bases have a README and a git history you can search. Look for your issue through these things before you reach out for help.
Ask the appropriate Person
Identify who can best help you and approach them. If you have a product related question, and ask it to your manager, chances are that he’ll direct you to the PM. Learn to identify the appropriate person directly and approach them.
Don’t just say “Hi”
The worst way to ask someone for something is to start with a Hi. No context, just Hi. It is just a distraction. If someone gets a Hi as a ping, they’ll open the notification and then wait for you to type.
You’ve disrupted their flow, just so that they can wait for you to type out your actual query.
An even worse way I’ve seen people approach this is sending a Hi and waiting for a reply to ask their question. This again is a waste of time for both people involved.
Don’t ask to ask, just ask
You: Can you help me with a question?
After 10 mins:
The above conversation is fine when done once or twice, but when you need to ask for help from same person multiple times every day, it becomes noise. Just ask away.
In most organizations, there are company wide channel dedicated to answering questions about a particular domain within the company. Many people, especially junior SDEs, think they’re being polite when they ask to ask in such a channel/mailing list. It actually has the opposite effect.
Don’t say “Call?” for every question
Having a call for answering a bunch of questions is fine, but if you ping people every time with a “Hi, call?”, they’ll probably become wary of it. Calls are not async and break flow, which most people hate. Async »> Sync for most cases.
But sometimes, calls just make sense, if you’ve had a back and forth 7-8 times, its probably better to jump on a call instead and save a few hundred keystrokes for the both of you.
Give Enough Context
Hi Person, do you know how I can run the /xyz endpoint?
Unless you’ve already been asking/talking to the person about this specific part of your project, chances are they would ask some follow up questions.
The best way to avoid too much back and forth, empathize with them. When you ask anyone for help, stand in their shoes and think, if someone had asked me this question what other information would I need to effectively answer their question in the first attempt?
Attach just enough context, don’t leave them without any, nor drown them with unnecessary fluff.
- Which codebase?
- Which module?
- Which class?
- What are you trying to achieve?
- What problem have you faced?
Once you frame your question, reread it before sending to confirm it isn’t confusing for them.
The Most Important Part: Show effort.
As a dev, your main work is to solve problems. You cannot just outsource it to someone else. If you come to any peer or your manager with questions but have not actually tried a few things on your own before, you’ll probably be seen as lazy.
If you’re not willing to work on your problem, why are you expecting the other person to?
Keep notes of everything you try. When asking for help, list down things you’ve tried in a chronological order so that the other person can just skip over those.
Most times as a dev, keeping notes and articulating your question well will probably solve the query without needing help. I’ve had multiple incidents where as I was typing out my question, realized a way I could solve a particular problem.
Asking for decisions
Sometimes you don’t need to ask a question, but ask for a decision posed as a question. For example, asking a PM if we should include some sort of validation for a text box on a page.
If it is straight forward enough, the decision maker can answer you right away if you have enough context attached. Without context you’d again have a lot of back and forth.
Try not to Ask the Same Question Twice
Once you have a question answered by someone, document it if it is something others could benefit out of. Otherwise, put it in your personal notes, to look up for reference in case you think you might need it in future. This prevents you from asking same thing multiple times and also doesn’t need you to remember it.
Maintaining notes as a dev helped me a ton in avoiding mistakes and asking repetitive things. It also builds a personal arsenal of tools, commands, techniques and FAQ answers for myself. You can check out Become a better Programmer: Take Notes for how to get started with taking notes.
Still not getting answers?
Asked for help 5 times in past week and didn’t get a good response any time? Maybe revisit the questions you asked, evaluate them on the above points and reframe them so that they are:
- Easier to respond to(Eg. multiple questions posed as bullet points)
- Precise(To the point, and not very wide questions whose answer is going to be “it depends”)
- Written effectively(Grammer, structure, etc.)