How to ask for help
Tags: beginners, productivity
Published: 2020-11-04 21:07:25


Asking questions well is one of the most important skills to develop as a new professional. Really great communication will help you get mentors, and increase your productivity.

Here's the 3 things you should be doing when asking a question

:bow: Start with a soft opener, and don't be a robot troll.

:exclamation: Explain the situation and the complication.

:book: List what you have tried to resolve the 

Working on a team, or individually there will always be occasions when you need to seek help from someone.  You could be asking about why a decision is made, or how to get a component to work, or maybe it seems completely broken!

If you've been around software for any number of days you will have had experience with some really bad answers. Perhaps it seems like certain people are guarding information, or maybe they just seem like a bit of a troll.

This raises the question. How do you get a better answers to your questions?

**:bow: Start with a soft opener**

Establish that your question is being asked by a real person! Introduce yourself if you are a stranger. Throw in a complement about the tool/technology in question. Ask them about their pet/hobby/weekend.

Most importantly, never :poop: on any code, you should never assume that code someone else is wrong, even when you're at a 80% confidence that it is. Situations where you need to explain that code is wrong, you should still phrase it as if it is right, but explain why it looks wrong. You will be surprised how often a 80% certainty that something is wrong will turn out to be right.

**:exclamation: Explain the situation and the complication**

Explain your high level goal and then summarize what your approach has been. Before someone can answer your question, they need the context to understand what you are doing. When I am asking a question, I like to use it as an opportunity to get some more related knowledge. As a junior engineer, I found that in many situations I would gain a lot of valuable knowledge beyond the scope of my question when providing the right background context to the question.

At the end of this, you need to get to your question, make it as short and bold as possible. You are able to do this now due to the explanation and friendliness in your communication.

**:book: List what you have tried**

You should always list out what you have tried to solve your problem. Again, this show's respect to the answerer by letting them avoid many iterations to determine how you should debug the situation.

There is another meta benefit to this.  The process of listing out what you have tried will help you brain storm different ways to self resolve. In the process of forming your question you may realize that the question does not need to be answered because you come up with a way to solve your own problem.

Finally, the person answering can help you get better by pointing out other avenues of investigation for solving this type of problem. This is kind of gold quality you can get from a great answer that really rises your skill as a developer.

## Examples

> **Bad** uat.foo.acme.org api is down.


> **Good** Hi Jane :wave:
> I'm working on some new features for facebook99 and for some reason all my requests are being thrown from foo.acme.org.
> I have tried connecting through CURL, and I've tried our UAT site and the integration seems to be down, and my development instance isn't responding either!
> Can you help me out check the integration is working?


> **Bad** How do I get this shitty code generation to work? IT ALWAYS BREAKS :angry:


> **Good** Hi Team,  I've been working on an urgent feature for $XCompany; and this has been tested and validated on my developer instance by the customer. Now I need to merge this feature and I'm getting this really strange error 79 code from the CI system. $XCompany expects the release to be today so I'm urgently needing some help here :grimacing:
> **Can someone please help me resolve this and give me a little bit of history on the codegen module?**
> I've tried running codegen locally and it works.
> I'm using the standard developer machine for testing
> I've updated the modules on the project so they _should_ be up to date in CI.
> The feature has been revieiwed {here is the merge request}.

The age old developer aphorism of 'garbage in' 'garbage out' applies here. If you are getting bad answers, you may be asking bad questions.