Regardless of whether you’re a complete beginner or an experienced programmer, chances are you’ve had to ask questions before. The most common form of this is going on Google to look up an error message, something you’ve surely done by now. You’ve probably also noticed that there are some ways you can formulate your questions on search engines that will give you better results than others like searching for “add element list python” as opposed to “how do I add an element to a list in python” (although search engines have gotten really good at handling the latter one nowadays too). But in a lot of cases, just Googling the error doesn’t help us so we resort to asking a real person, and much like a search engine, there are ways to make your experience with this much more pleasant by changing the way you form your question.
What’s a bad question
Before we can understand how to start asking good questions, we have to go over what a bad one looks like so we can avoid it in the future. Bad questions are considered bad because they do not communicate the intended idea efficiently or clearly.
Truly bad questions lead to a lot of back and forth between the person who needs help and the helper, which often start to resemble a police interrogation where the asker tries to withhold as much information as possible (for some reason) and must be asked for details one by one instead of providing it themselves.
Examples of bad questions
FantasticProgrammer: I’m making a bot and it gives some errors, anyone help?
IncredibleProgrammer: I’m trying to send a message but it says
cannot read property 'send' of undefined, help?
PhenomenalProgrammer: This isn’t working.
Pythonasync def brrr():passbrrr(money_printer)
GreatProgrammer How to install node.js in ubuntu?
Let’s go over what’s wrong with each one of these.
Asking to ask
Amazing programmer has a question but they haven’t even started asking it. It’s the question before the question. This wastes your own time as well as the helpers time, don’t ask to ask. If you just post your question in one go, by the time someone who can help you sees it their response won’t be “yes?”, it will probably be the solution to your problem.
This usually comes from frustration but FantasticProgrammer hasn’t provided even the slightest bit of information about what the problem is. It’s impossible to help them without a followup question.
IncredibleProgrammer provides more information than the previous person and sometimes this will be such a common problem that someone will be able to tell them what the problem is with almost no context but that’s rarely the case and figuring out what the problem is from just this much information is difficult.
A code sample helps, but helpers who haven’t mastered mind reading need more context to be able to offer a solution to your problem. “It’s not working” isn’t enough context, make sure you’re specific about your problems and what your expected outcomes are unlike PhenomenalProgrammer.
Keep in mind that people who are helping you are people and not a search engine. “How to install node.js in ubuntu?” is a question that should be asked on Google and not towards real people. If you have problems with installing node.js after Googling, you should definitely include that in your question so it’s easier to know where you are at with the problem without needing to prompt you for more details. Help the people who want to help you.
What’s a good question
Here’s a mental checklist that I try to keep track of when asking for help.
- Written in one single message
- Has sources for things I’ve looked up
- Error messages (if any)
- What I expected to happen
- What actually happened