Skip to content

Collected, succinct wisdom on how to ask questions from colleagues and friends

License

Notifications You must be signed in to change notification settings

chipturner/asking-questions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

How to (Effectively!) Ask Technical Questions

You're busy, something is broken, and you need help. Maybe you're confused, scared, or otherwise in a state of distress. Reaching out for help is great! But with a few tips you can be much more effective, learn some useful skills along the way, and solve your problem faster.

Imagine whoever you are asking desperately wants to help you but is also incredibly busy. How can you make their time the most impactful?

Read on.

The Steps

Start with Searching

Chances are, whatever problem you are having is not new. Someone else has hit it before.

You need to begin by investing some time, and the place to start is searching. Google, Stack Overflow are good public searches, and your company's wiki, shared documents, and Slack are all a good places for internal questions. You also can try GitHub searching for error messages and strings that may be helpful. Finally, some knowledge is locked away behind logins (Facebook, AWS Forums, etc)... search the appropriate ones there, too.

If done right, 99% of questions can be answered this way without ever needing to ask. Getting good at (ab)using search engines is a powerful skill to develop.

Succinctly Summarize the Problem

Okay, search didn't work. Time to ask your question.

Write a one sentence summary of your problem. Make it tight, clear, and with the right level of details. Include relevant links to charts (not just screenshots!) and other supporting information. The easier it is for someone to look at the same data and poke at it, the fewer round trips they will have in trying to help you (see below for the importance of this).

Describe Steps You've Taken

You've put some effort into solving the problem (right?), so describe them. Indicate things you tried, things you eliminated, things correlated, etc. Anticipate what people night need to know so they don't have to play table tennis with you to make progress.

Also reference manpages and other documentation you've consulted to confirm the behavior you're expecting vs what you are seeing.

Minimally Reproduce the Problem

If possible, reproduce the problem with the smallest possible example you can find. Yes, this means possibly writing a whole new case to reproduce it. Do it. No one is going to look at a huge pile of code they can't compile.

Make sure the audience can try your reproduction case, too. Sites like The Rust Playground or godbolt.org are great ways to share code that your audience can immediately poke at.

Respond Quickly to Clarifying Questions

Hopefully you won't need to clarify much but, in case you do, be quick in responding. Whatever kind soul tried to help you probably is busy and the faster you respond, the more engaged they will be and the more rewarding you will both find the response.

Things to Keep In Mind

Show Humility and Be Respectful

This is pretty obvious. Don't be a jerk. Asking for help is absolutely okay. It can feel like you're making yourself vulnerable, but it's okay. Show humility and the limits of your knowledge, be respectful in how you ask and respond, and thank whoever helped you.

But! Don't ask to ask a question. Just ask. You waste people's time if you ask to ask (see https://dontasktoask.com/ and https://www.nohello.com for more details).

Ask in the Right Place

Sometimes your question is perfect but you ask it in the wrong place or to the wrong person. Paging someone in the middle of the night for something that can wait a few hours is Not Cool. Dropping a question in the wrong forum or Slack channel is not very cool, either.

Look for the right place to ask. See if others ask similar questions and the responses they get. Be aware of your surroundings and try to fit the culture and processes around you.

Never ask questions over Direct Message. Always ask in public. Otherwise you are just bothering someone in a way that benefits no one else.

Write Better To Get More Help

Writing succinct, clear questions is critical to all forms of engineering. Make sure what you write is easily understood. This can be a challenge if you aren't asking a question in your native tongue, but the reality is, the easier your question is to read, the more likely you are to get a response. It may not be fair but it is reality.

Optimize for the reader. Hone this skill. It will payoff in other ways, too, not just when asking for help with PHP.

Minimize Round Trips

When you ask your question and provide more details, try to anticipate what someone might ask and provide it. Not only is this an optimization to get an answer faster, but it is respectful of the time of whoever is helping you. This makes your question better.

Satisfy the Audience

Someone helped you! Others may someday have the same problem! So come back and provide closure to your audience with whatever the root cause was... this is a form of showing respect to those who helped you and those who come along after you (since they will possibly find your question when they search!). So be sure to close that loop!

Pay it Forward

Hang around in the forums that help you and that you have expertise in, then answer questions. Be helpful. Create a culture around you of willingness to help but also a gentle culture of nudging people in how to ask better questions (say, by sharing this document!).

Internalize What You've Learned

Finally, learn from your process. Learn from the answer but also learn from the journey. Reflect on how you could have made it easier to get help and optimize for the next time. No matter how much you learn or how good you get at plying your trade, you will always need help and always be learning.

Useful Links and Further Reading

About

Collected, succinct wisdom on how to ask questions from colleagues and friends

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published