A Student's Guide to Asking Good Questions
Many students don't know how to ask good questions. This is okay, students are supposed to learn. This page is a succinct guide on asking good, effective questions that will help you get help faster and help other people want to help you more.
Do not ask for hand-holding
People like to help people who help themselves. If you try nothing and call it a day, people will just avert their gaze. Make an honest attempt before you ask anyone anything.
Explain what your problem is
Too many students will say something like "my code won't compile, anyone else get this error?" And the attachment will be an image of lots of warning code followed by a "Segmentation fault (core dumped)". Everyone will do a little groan when they see this. If you have generic or vague problems, expect generic or vague (or no) solutions.
Explain what you're trying to do, WHY you're trying to do it, THEN what you're doing
The X-Y Problem occurs when students are halfway on the right track: they have put honest effort into helping themselves and solving their "problem X," but got stuck along the way ("problem Y") and require help with it. If those providing help are not made aware the student is trying to solve problem X, confusion may result. After all, the solution to X could be a whole lot simpler. Luckily, this is simple to avoid. When asking, explain the big picture, explain how you got to the step you're stuck on and why you're doing it.
Don't tell us you're trying to make your itertools mumbo jumbo perform some obscure, probably redundant operation on an arbitrary NxMxP tensor. Say you're trying to implement a simple backpropagation algorithm, and people will kindly tell you "Maybe you should try this easy-to-read one-liner that contains little to no mumbo jumbo".
Read The Syllabus/Docs
Often, students may ask a question like "How do I do the assignment?" with no further elaboration. This is impossible for your fellow students to answer, and the best we can do is point you towards the instructions. Only nerds like reading, sure. But you're a student, and you're reading this. So you're probably a nerd too. (Click here). Nerds read their syllabus or project documentation. Why? Because it works. Probably 70 percent of your problems are perfectly explained in documentation. Read it before you ask people who have. Then, once you've read it, you'll be able to ask a more specific question such as "Where the header file containing the function definitions referred to in Step 6?"
Check if your question has been answered
This could mean a lot of things. Number one? Google. Google has the answers to everything, surprisingly. So ask your error questions there and let the jerks at stackoverflow from 10 years ago solve it for you. Are you on a class message board? Scroll up a bit, maybe someone has had the same problem as you (they probably have!). Put some work in.
Ask your question where all can see it
Whether it's a GroupMe/Discord/Matrix room for your class, an issue tracker, an online class chat, or a class discussion board, these spaces all serve an important purpose: a shared place for us students to discuss and learn from each other. Asking a question, discussing it, and getting an answer does not just serve you; it serves everyone else in the class who may encounter the same problem or learn new ideas from how you solved it (see the above point). Do not direct-message random members of the class with your questions, and even more importantly, do not delete your question after receiving an answer. It may seem embarrassing to feel you require assistance, but provided you've asked a specific, complete question, there is nothing to be embarrassed about and everyone stands to gain new knowledge. Even the most beginner questions may lead to discussion your fellow students can learn from, and chances are other people are wondering the same thing too.
Don't ask to ask, just ask
This is another type of vague question. Don't say things like "I have a question" or "Can someone please help me" without further elaboration, or things like "Is there anyone here who knows how pointers work?". Simply state your question. Then, anyone with the necessary knowledge and time will be able to answer it (or at least point you in a better direction) without second-guessing themselves first or delaying the problem-solving process more.
A great scholar came up with this perfect question template. Consider always using it.
"Hello, this is the problem I'm trying to solve."
"This is the output."
"This is what I've done so far."
"This is what I think is the issue, Is there anything wrong with my approach and how can I change it?"
Just think before you type and don't be annoying. Please.
Signed, a tired student.
"How To Ask Questions The Smart Way" by Eric S. Raymond