<p>I'm not an SO user - but I've got a bit of experience elsewhere in the network.</p>

<p>The thing I've found that that the folk who get the most out of it are not the ones who ask questions - its the ones who post good answers. </p>

<p>Rather than encouraging folk to use it as a <em>helpdesk</em> it should be an <em>analytical tool</em>. Pick a question (with no answer?) - Use it as an example point out the problems in the user's approach to the question, and work through a solution.</p>

<p>The <em>act</em> of asking a question itself should be a tool for teaching and analysing a problem - <a href="https://superuser.com/questions/342107/getting-macro-keys-from-a-razer-blackwidow-to-work-on-linux">This is my favourite question</a> - and it solves a <em>class</em> of issues and tries to talk about a problem solving process. While I failed, it still is useful for others as is.  </p>

<p>So "Ok, here's the problem, lets work it through, lets <em>document</em>, lets work through it" should come before a question.  </p>

<p>So, the problem here is that "asking on SO" isn't a skill - asking the right questions, the right way at the right time is. </p>

CC BY-SA 3.0
2017-08-27T06:39:35.817Z
I guess, asking the right questions is the right approach for life in general, but I don't know if that is what is being discussed here. Your answer is neither here nor there and it does not even touch the topic at hand :(
Jay
CC BY-SA 3.0
2017-08-27T06:41:36.300Z
Well, to "teach" stack overflow isn't a useful goal. To teach people to ask better questions and their steps is. That it so happens that it makes for better questions and the occasional rubber duckery is the point I'm trying to make here. Even if, god forbid, SE goes away, these are skills that carry over anywhere
Journeyman Geek
CC BY-SA 3.0
2017-08-27T06:43:21.993Z
I agree with your point. we are both on the same page there. Its just not relevant to this question. If there is another question (or you could create one) that says 'How to teach asking the right questions', then your answer would be right there in the sweet spot.
Jay
CC BY-SA 3.0
2017-08-27T06:44:09.887Z
But the way to use SE efficiently *is* to ask the right questions, and use answers to sharpen one's skills in solving problems. That's how I've benefited from it over time
Journeyman Geek
CC BY-SA 3.0
2017-08-27T06:46:38.147Z
Ha..ha...okay okay, live and let live is my policy :P your thoughts might help others because you know, opinions and views is what we want in this community. I may not agree with the answer being relevant, but I respect your contribution.
Jay
CC BY-SA 3.0
2017-08-27T06:05:23.547Z
2017-08-27T06:05:23.547Z
Journeyman Geek
<p>I don't think the core issue is that some students are bad at using Stack Overflow -- I view that more as a symptom of a deeper root problem. When somebody doesn't seem to be able to productively ask questions on Stack Overflow, I think that one or more of the following core issues are at play:</p>

<ol>
<li><p>They don't really understand what it means to self-learn and independently research. After all, suddenly switching to independent work can be jarring after being hand-held through learning for the past N years.</p></li>
<li><p>They're not efficient communicators. Perhaps they care only about coding but not writing so ignored some of their teachers? Perhaps they were taught only to write essays or short answers where the main goal is to meet some word limit?</p></li>
<li><p>They're not familiar with online etiquette and norms.  In particular, when you ask for help in person, it's often ok to ask small questions or ask for general help when stuck. However, that kind of thing is often considered disrespectful, not just on Stack Overflow but many other technical forums -- you're expected to "front-load" your question so you don't waste people's time.</p></li>
<li><p>They're unwilling or too impatient to read. After all, Stack Overflow's help center defines exactly what's ok or not. (A perhaps more charitable interpretation is that not all students have fully tuned their ability to tell what must be carefully read vs what can be ignored.)</p></li>
<li><p>They're ineffective debuggers and so <em>can't</em> figure out a way to distill their issue into a specific question, even if they wanted to.</p></li>
<li><p>They don't know how to gracefully accept criticism and feedback when they inevitably do make a misstep.</p></li>
</ol>

<p>So, given all this, I think trying to directly teach students to use Stack Overflow is probably a waste of time. There are deeper issues you need to tackle first. I would instead recommend doing some mixture of the below:</p>

<ol>
<li>Incorporate more independent work into your curriculum (partly to make them less reliant on getting help from teachers and partly so they're more likely to run into questions worth asking).</li>
<li>Explicitly make good technical writing one of the goals of your class. Assign lab reports or writeups and grade students based on how effectively they've balanced completeness, concision, and clarity. (Perhaps this can be coordinated across different departments? Science classes often require lab reports, English/writing classes are a thing...). You could also tie this in with academia: make them write research papers.</li>
<li>Have your own discussion board where you answer questions. This way, students get some practice writing questions in a friendlier and more tolerant environment -- if somebody asks a poor question, you can prompt them for details to make the question a better one. As time progresses, get more strict: flat-out refuse to answer duplicate questions and the like.</li>
<li>Teach students a variety of debugging strategies. Show them how to use a debugger (and walk through several examples). Explain how to do printf debugging in a principled way. Teach them <a href="http://it.toolbox.com/blogs/tricks-of-the-trade/binary-debugging-21819" rel="noreferrer">binary debugging</a>. When they ask for help, teach them problem-solving strategies instead of directly helping them with their problem (where applicable). Teach them how to pin down and verify preconditions/postconditions/invariants. Teach them how to write (good) tests.</li>
<li>Make your students used to receiving feedback. Don't just grade their code based on correctness or whatever: grade on style, conduct code reviews... That said, your students are probably already used to being critiqued after spending N years in school, so perhaps there's nothing extra that needs to be done here...</li>
</ol>

<p>(Unfortunately, I don't really know how you can rewire people so they'll actually read things. As I understand it, that's an unsolved problem in the general case.)</p>

<p>I realize these answers are sort of a cop-out -- you were asking how to teach people to effectively use Stack Overflow, and my answer was basically "don't use Stack Overflow". But in the long term, I do think it'll be for the best. The hope is that once they've graduated, they'll have learned the meta-skills needed to effectively and professionally communicate not just on Stack Overflow, but in other technical forums or at their workplace.</p>

CC BY-SA 3.0
2017-08-26T18:24:16.560Z
`They're not familiar with online etiquette and norms.` -- Or they're saddled with bad habits from participating in other online forums.
Robert Harvey
CC BY-SA 3.0
2017-08-26T23:02:29.737Z
Adding to issue #5 (recommendation #4) - [How to debug small programs](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) is absolutely essential. If a student (or anyone) can't explain precisely what part isn't working, then they're not ready to ask on SO.
alexanderbird
CC BY-SA 3.0
2017-08-27T08:59:08.353Z
The link to BInary debugging really uses some annoying ad practices, popping up random screens while you're reading the text
Ferrybig
CC BY-SA 3.0
2017-08-27T15:26:09.847Z
@Ferrybig -- oh, does it? (I use adblock so can't really tell). If you (or anybody else) can find an alternate link, I'm happy to replace it.
Michael0x2a
CC BY-SA 3.0
2017-08-26T06:25:03.920Z
2017-08-26T23:11:12.467Z
2017-08-26T23:11:12.467Z
Michael0x2a
<p>Unfortunately I need to question the very premise of your post. </p>

<p>Consider the following scenario (suggests Socrates). Suppose that a teacher is asking a student questions. Suppose further that the student has access to a perfect Oracle. Suppose that the Oracle will correctly answer any question to which the answer is known. </p>

<p>Suppose for each question asked of the student, the student consults the Oracle. Since in most situations a teacher is unlikely to ask a question for which he or she doesn't already know the answer, the Oracle itself knows and gives that correct answer to the student. The student then transmits the answer back to the teacher. </p>

<p>What has been gained by anybody? </p>

<p>The teacher learned nothing new. The student has been nothing but a courier between the Oracle and the teacher. The student needs to learn nothing in this transaction and even if he/she tries to memorize everything all they wind up with is a disjoint set of "facts" rather than any skill. </p>

<p>Tasks are posed to students not to get answers or to create programs, but to elicit a change in the mental state of the student. We try to prepare students to answer questions to which no one knows the answer and to create programs that have never before been done. We do this by posing tasks that are in fact known to have answers/solutions but those answers and solutions are not known to the student. We want the student to treat the problem as if it is a really hard problem so that they will work through the difficulties - increasing their mental abilities through practice. </p>

<p>Suppose you spend a year or two never using your left arm in any way. Never even lift your hand or flex your muscles. What will happen? Of course, the muscles will atrophy. The same is true of your brain. If you don't use it you will find that it has turned to mush. </p>

<p>The answers you get on Stack Overflow (SO) are the answers of experts. They are like an Oracle. If someone knows how to do it, you may well find the answer on SO. But if you haven't worked on the problem yourself you are just a scribe or a courier of information. </p>

<p>You will never be able to solve hard problems unless you solve problems that seem hard to you. You will never be able to advance the art if you haven't practiced on things that require hard work.</p>

<p>Sometimes the "right" answer is the "wrong" answer. </p>

<hr>

<p>I agree that SO has its uses, but anything that makes it seem like a panacea is problematic. It is useful to experts who need to produce something external to themselves and need to get past the hard bits efficiently. It can be harmful to students who need to produce a change in their own brains, which can only come from working through the hard bits. Efficiency is not a major goal of education. Efficiency will come, but it comes only from practice.   </p>

<hr>

<p>I don't believe that looking something up on wikipedia is the same as asking SO. Wikipedia probably has the answers you want (as does your textbook) but you have to work to figure out the details. It will give you background from which you can probably tweak an answer, rather than getting an answer directly. </p>

<hr>

<p>A discussion group can work together to figure out answers to some questions. If the members are all novices this is not the same as consulting an Oracle and you learn different skills in any case. </p>

<hr>

<p>More valuable than SO is asking your teacher to help get you over the hard bits. He or she can evaluate what it is you really need and either answer the question or send you off on a quest. So again, not the same as an Oracle. </p>

<hr>

<p>A personal note (no, I'm not Socrates, though it seems like we were contemporaries). I became an expert in using Calculus by graphing literally hundreds of rational functions (quotients of polynomials) by using the information from the first two or three derivatives of the function. I did this completely manually, on paper. Today there is a web site that would do it for me and graphing calculators that will do it. I could do thousands of rational functions (instead of merely hundreds) but I would learn nothing at all. I would be just an observer. I would not have been able to predict the shape of such a function as I once could do pretty effectively. I might be an expert user of a particular web site, but that wouldn't have much effect on my brain. </p>

CC BY-SA 3.0
2017-08-26T12:13:23.627Z
2017-08-26T12:13:23.627Z
Buffy
<p>A very good question and a fair one as pretty much all of us face it when suggesting students to use StackOverflow in our class and they "bug" it out of curiosity just to post their assignments (often verbatim).</p>

<p>Because of restriction of gaining some points before getting a certain privilege and down-voting, students can't abuse it too much, but here are few suggestions which come to my mind for effective use of StackOverFlow in class. </p>

<ol>
<li>Students must go through the Overview (earning "Informed" badge) to get some understanding of SO's mechanism.</li>
<li>Give them an assignment on something like: "<em>Which were Top Posts in this week and why?</em>", "<em>Which questions were down-voted and how will you differentiate them with the rest?</em>" or something like "<strong><em>Take Posts by new users (say less than 2 month old members) and check which ones had positively scored posts and what do you think made those posts stand out from other new users?</em></strong>" - I think these assignments will inspire them to understand what is a "Good Post" on StackExchange - I started using StackOverflow when I entered in Pedagogical career and even it took me a few months to understand how to ask a good question. I think we can use our own examples as well.</li>
<li><strong>Show your Research</strong> - It should be the slogan of our class if we want a student to take full advantage of StackOverflow(Exchange).</li>
<li><strong>Be Specific</strong> - Never ask two/multiple questions in same post. I remember my first post on StackOverflow was a pretty good question but I ruined it by asking a totally irrelevant question in the same post (<em>and realized my mistake a few down-votes later</em>)</li>
<li><strong>IMPORTANT</strong> - Everything on StackOverflow(Exchange) is licensed under Creative Commons License and once you post a thing, even if you delete/edit it's content, its never deleted absolutely (look at revisions history of any post) - so think a lot before posting any sensitive thing.</li>
</ol>

CC BY-SA 3.0
2017-08-26T02:39:34.377Z
2017-09-10T00:46:25.443Z
2017-09-10T00:46:25.443Z
Failed Scientist
<p>I am new to the StackExchange network, and by far, the biggest roadblock has been the reputation problem. The entire StackExchange network is designed to keep out those who are not patient. </p>

<p>When I am teaching my students to use StackOverflow, boring or not, I tell them to have patience. I tell them that until they get 100 points, they may not actually be able to use stack to the fullest. So, first up is patience.</p>

<p>Second, I ask them to take advantage of the network bonus. My primary use of the StackExchange network is StackOverflow but I was getting bored of the restrictions on me. Then, I found this network 'CS Educators' and found that I might perform better here. Only a few days later, I crossed 200 points here, and that immediately bumped me up from a basic user on every network, especially the main StackOverflow. Now, I have all the privileges. </p>

<p>So, I ask my students to participate in any of the stack network sites. Some students are good, they can participate in puzzle sites. Other are good with tv, then, I ask them to participate there. I tell them to overcome the initial 'stack gate' like this. </p>

<p>After this, its the same guidelines as doing a proper Bing/Google search. search specific words, use the right tags, and be as specific as you can get or don't post the question (and avoid getting down voted). </p>

CC BY-SA 3.0
2017-08-28T00:13:23.370Z
I'd be interested in hearing which formal new-user restrictions you find most constraining. Or if not a formal restriction what cultural artifact. Some thought was put into the question of *"How can we protect the network without preventing new users from using it?"* and your feeling seems to be that the resulting rules are failing to meet that goal.
dmckee --- ex-moderator kitten
CC BY-SA 3.0
2017-08-28T03:20:01.397Z
The part about upvoting and the commenting was severely restricting. I remember a year ago when I joined stack, I left because of that only to return 2 weeks ago. Even then, I was frustrated with the restrictions. Especially on stack, where earning reputation is insanely difficult, these two things can be demotivating.
Jay
CC BY-SA 3.0
2017-08-30T17:41:01.197Z
@nocomprende Hm. Self-answers (well good self-answers to good questions—we don't care for astroturfing) are actively encouraged on [physics.se] (my most used site) and they used to be on Stack Overflow when I was active there (admittedly it's been while). I suspect that there is some culture shock at work here. Those of us who joined Stack Overflow in the beta had both guidance from the podcasts and *time* to adjust to a culture still forming.
dmckee --- ex-moderator kitten
CC BY-SA 3.0
2017-08-30T19:30:17.660Z
@nocomprende I was active on Stack Overflow until about four years ago, when the culture had settled down. But that aside, the reason you come to SE and the reason for the SE exists don't need to be the same thing. SE exists to (among other things) make the internet a better place by collecting good answers to good questions. A well constructed self-answer can aid that part of the mission, but site cultures vary which can lead to culture shock. That is something that should be addressed, but systematically rather than in response to individual events.
dmckee --- ex-moderator kitten
CC BY-SA 3.0
2017-09-14T21:52:01.027Z
Thanks for pointing out the network bonus. I'd known about it but hadn't thought of mentioning it to my students. FWIW, it's pretty easy to gain reputation in English Language Learners.
Ellen Spertus
CC BY-SA 3.0
2017-08-26T06:21:53.787Z
2017-09-10T01:17:03.323Z
2017-09-10T01:17:03.323Z
Jay
<h1>How to teach students, how to ask for help.</h1>

<p>I think the question is the same as “How do I teach students, how to ask for help?”.</p>

<p>I would get them to practice in class, with pen and paper. Some exercises could include:</p>

<h2>Practice answering</h2>

<p>Teacher collects some good questions from SO, that are relevant to what pupils have been learning, and prints them out, without answers.</p>

<p>To explain in own words what the question is asking. Ask pupils to produce good answers to the questions. Peer review answers, produce a 2nd draft. etc.</p>

<h2>Judge questions</h2>

<p>Teacher collects some good and bad questions from SO.</p>

<p>Students have go group into good and bad. Students have to explain what is wrong. etc.</p>

<h2>Create questions</h2>

<p>Students are given a task that they can not do, and have to produce a question so that they can learn how to complete the task.</p>

<p>Optionally the class can be split into 2 each half learns a different thing, then get a task that only the other half can do. </p>

<h1>Tips for writing questions</h1>

<p>Be clear, proof read (if you can not be bothered to read it, then how can you expect any one else to).</p>

<p>Remember context. People can not read minds over the internet. The person reading your question is probably not in your class. They have no idea what it is that you are trying to do.</p>

<ul>
<li>Include what it is that you are trying to achieve.</li>
<li>Include how you are trying to achieve it.</li>
<li>Show what you tried: The exact text, not what you think the typed.</li>
<li>Show what went wrong: The error message, or incorrect output.</li>
</ul>

<p><em>use copy and paste (or select, paste) for the last two</em>.</p>

<ul>
<li>If the problem is big, then cut it down to size. 
But this is <strong>important</strong>, re-run the cut down code, and post this code, and its outputs.
Often you will find the answer your self when doing this.</li>
</ul>

CC BY-SA 3.0
2017-08-26T17:59:48.877Z
2017-08-26T17:59:48.877Z
ctrl-alt-delor
<p>When a student comes to me with a question that neither of us can answer, I ask her to post it on Stack Overflow. (An example would be if she's trying to do something in Android that I've never done and that isn't well documented.) Some students are timid about posting online, so they need a little hand-holding and encouragement, which I provide by pointing them to resources on how to write a good question, giving them feedback on their question before they post it, making any needed edits after they post it (letting them know what I've changed), and voting it up, which I can legitimately do, because I've vetted the question. Usually, they get helpful answers. If it's a particularly tricky problem that's holding them up, I offer a bounty. These experiences help build their confidence and skills.</p>

CC BY-SA 3.0
2017-09-10T01:15:15.500Z
I have seen your questions on StackOverflow and they really look well-researched ones! Can you please expand a bit on it's "secrets" here? I would love to hear that part.
Failed Scientist
CC BY-SA 3.0
2017-08-26T19:13:40.113Z
2017-08-26T19:13:40.113Z
Ellen Spertus
<p>As evidenced by the numerous poorly asked questions by students on Stack Overflow, it is clear that many students have difficulty understanding <em>how</em> to ask questions there.</p>

<p>Even as teachers, we often seem to have difficulty asking questions on Stack Overflow and other Stack Exchange sites.</p>

<p>There have been flawed attempts with teachers assigning "ask a question and up vote another student's answer" which conflict the "vote on good material, not the user" (along with often asking really awful questions that get down voted and deleted).  Those questions tend to invoke the ire of the Stack Overflow employees and diamond mods and leave everyone involved with a sour taste in their mouth.</p>

<p>As students get out into the industry, they may find that having a good understanding of how to search and ask questions on Stack Overflow to be a valuable tool.  So, how do we teach how to use Stack Overflow?</p>

<p>Neglecting teaching how to use Stack Overflow in today's world is as bad as not teaching a student how to use a debugger and relying on the industry to teach the basics of software engineering and the tools available and expected to be used with a modicum of proficiency.</p>

<p>The lack of ability to teach Stack Overflow is also symptomatic of an inability to ask questions generally. Really, we need to teach students to ask the right questions, on Stack Overflow and elsewhere. How can I teach students to ask good questions, on and off Stack Overflow?</p>

CC BY-SA 3.0
2017-08-26T12:22:57.833Z
While this is an interesting question, it doesn't seem to be about teaching. Fixing the question asking flow for new users has been the topic of many discussions on meta stack overflow, and that's where questions about stack overflow belong.
thesecretmaster
CC BY-SA 3.0
2017-08-26T12:29:12.607Z
@thesecretmaster Seems to be about teaching to me. This would not be on-topic on Meta Stack Overflow, because it's not about Stack Overflow *policies* as such, more about how a teacher can introduce the usage of a certain resource (Stack Overflow) in order to help students learn. It would seem clearly on-topic if the question was "How to more efficiently teach using Wikipedia/a book/insert other resource?", so I feel it's also on-topic if about Stack Overflow.
Aurora0001
CC BY-SA 3.0
2017-08-26T19:50:43.273Z
Interesting. As a student I've never been taught how to use SO or any other community, for that matter. But I think this question is really interesting in the broader sense of "How to more efficiently teach students how to ask good questions?" which is a quite wider ability. Also considering that SO is not about computer science but only about programming.
Andrea Lazzarotto
CC BY-SA 3.0
2017-08-26T21:14:45.560Z
Be aware that some CS academic settings don't put any focus on specific tools (debugger, stack overflow, visual studio, etc). Those are too subject to change over time. Perhaps consider what your course is about, and if something like this should be taught. I would only imagine this being appropriate if it were a VERY general CS class, and even then the subject should be about asking technical questions, certainly not using SO.
Clay07g
CC BY-SA 3.0
2017-08-27T13:27:02.533Z
Please don't just teach them how to use SO effectively - teach them in general about [the smart way of asking questions](http://catb.org/~esr/faqs/smart-questions.html) and [how to write the perfect question](https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). This art is applicable to any other platform as well.
Bergi
<lesson-ideas><undergraduate>
How to teach Stack Overflow more efficiently?
# How to teach Stack Overflow more efficiently?

(Asked by: username_0 on 2017-08-26)

As evidenced by the numerous poorly asked questions by students on Stack Overflow, it is clear that many students have difficulty understanding *how* to ask questions there.

Even as teachers, we often seem to have difficulty asking questions on Stack Overflow and other Stack Exchange sites.

There have been flawed attempts with teachers assigning "ask a question and up vote another student's answer" which conflict the "vote on good material, not the user" (along with often asking really awful questions that get down voted and deleted). Those questions tend to invoke the ire of the Stack Overflow employees and diamond mods and leave everyone involved with a sour taste in their mouth.

As students get out into the industry, they may find that having a good understanding of how to search and ask questions on Stack Overflow to be a valuable tool. So, how do we teach how to use Stack Overflow?

Neglecting teaching how to use Stack Overflow in today's world is as bad as not teaching a student how to use a debugger and relying on the industry to teach the basics of software engineering and the tools available and expected to be used with a modicum of proficiency.

The lack of ability to teach Stack Overflow is also symptomatic of an inability to ask questions generally. Really, we need to teach students to ask the right questions, on Stack Overflow and elsewhere. How can I teach students to ask good questions, on and off Stack Overflow?

**Tags:** lesson-ideas, undergraduate

> **Comments:**
> **username_1**: While this is an interesting question, it doesn't seem to be about teaching. Fixing the question asking flow for new users has been the topic of many discussions on meta stack overflow, and that's where questions about stack overflow belong.  
> **username_2**: @username_1 Seems to be about teaching to me. This would not be on-topic on Meta Stack Overflow, because it's not about Stack Overflow *policies* as such, more about how a teacher can introduce the usage of a certain resource (Stack Overflow) in order to help students learn. It would seem clearly on-topic if the question was "How to more efficiently teach using Wikipedia/a book/insert other resource?", so I feel it's also on-topic if about Stack Overflow.  
> **username_3**: Interesting. As a student I've never been taught how to use SO or any other community, for that matter. But I think this question is really interesting in the broader sense of "How to more efficiently teach students how to ask good questions?" which is a quite wider ability. Also considering that SO is not about computer science but only about programming.  
> **username_4**: Be aware that some CS academic settings don't put any focus on specific tools (debugger, stack overflow, visual studio, etc). Those are too subject to change over time. Perhaps consider what your course is about, and if something like this should be taught. I would only imagine this being appropriate if it were a VERY general CS class, and even then the subject should be about asking technical questions, certainly not using SO.  
> **username_5**: Please don't just teach them how to use SO effectively - teach them in general about [the smart way of asking questions](http://catb.org/~esr/faqs/smart-questions.html) and [how to write the perfect question](https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). This art is applicable to any other platform as well.  

---

## 7 answers

### Answer by username_8 on 2017-08-26. Score: 33

I don't think the core issue is that some students are bad at using Stack Overflow -- I view that more as a symptom of a deeper root problem. When somebody doesn't seem to be able to productively ask questions on Stack Overflow, I think that one or more of the following core issues are at play:

1. They don't really understand what it means to self-learn and independently research. After all, suddenly switching to independent work can be jarring after being hand-held through learning for the past N years.
2. They're not efficient communicators. Perhaps they care only about coding but not writing so ignored some of their teachers? Perhaps they were taught only to write essays or short answers where the main goal is to meet some word limit?
3. They're not familiar with online etiquette and norms. In particular, when you ask for help in person, it's often ok to ask small questions or ask for general help when stuck. However, that kind of thing is often considered disrespectful, not just on Stack Overflow but many other technical forums -- you're expected to "front-load" your question so you don't waste people's time.
4. They're unwilling or too impatient to read. After all, Stack Overflow's help center defines exactly what's ok or not. (A perhaps more charitable interpretation is that not all students have fully tuned their ability to tell what must be carefully read vs what can be ignored.)
5. They're ineffective debuggers and so *can't* figure out a way to distill their issue into a specific question, even if they wanted to.
6. They don't know how to gracefully accept criticism and feedback when they inevitably do make a misstep.

So, given all this, I think trying to directly teach students to use Stack Overflow is probably a waste of time. There are deeper issues you need to tackle first. I would instead recommend doing some mixture of the below:

1. Incorporate more independent work into your curriculum (partly to make them less reliant on getting help from teachers and partly so they're more likely to run into questions worth asking).
2. Explicitly make good technical writing one of the goals of your class. Assign lab reports or writeups and grade students based on how effectively they've balanced completeness, concision, and clarity. (Perhaps this can be coordinated across different departments? Science classes often require lab reports, English/writing classes are a thing...). You could also tie this in with academia: make them write research papers.
3. Have your own discussion board where you answer questions. This way, students get some practice writing questions in a friendlier and more tolerant environment -- if somebody asks a poor question, you can prompt them for details to make the question a better one. As time progresses, get more strict: flat-out refuse to answer duplicate questions and the like.
4. Teach students a variety of debugging strategies. Show them how to use a debugger (and walk through several examples). Explain how to do printf debugging in a principled way. Teach them [binary debugging](http://it.toolbox.com/blogs/tricks-of-the-trade/binary-debugging-21819). When they ask for help, teach them problem-solving strategies instead of directly helping them with their problem (where applicable). Teach them how to pin down and verify preconditions/postconditions/invariants. Teach them how to write (good) tests.
5. Make your students used to receiving feedback. Don't just grade their code based on correctness or whatever: grade on style, conduct code reviews... That said, your students are probably already used to being critiqued after spending N years in school, so perhaps there's nothing extra that needs to be done here...

(Unfortunately, I don't really know how you can rewire people so they'll actually read things. As I understand it, that's an unsolved problem in the general case.)

I realize these answers are sort of a cop-out -- you were asking how to teach people to effectively use Stack Overflow, and my answer was basically "don't use Stack Overflow". But in the long term, I do think it'll be for the best. The hope is that once they've graduated, they'll have learned the meta-skills needed to effectively and professionally communicate not just on Stack Overflow, but in other technical forums or at their workplace.

> **Comments:**
> **username_9**: `They're not familiar with online etiquette and norms.` -- Or they're saddled with bad habits from participating in other online forums.  
> **username_10**: Adding to issue #5 (recommendation #4) - [How to debug small programs](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) is absolutely essential. If a student (or anyone) can't explain precisely what part isn't working, then they're not ready to ask on SO.  
> **username_11**: The link to BInary debugging really uses some annoying ad practices, popping up random screens while you're reading the text  
> **username_8**: @username_11 -- oh, does it? (I use adblock so can't really tell). If you (or anybody else) can find an alternate link, I'm happy to replace it.  

---

### Answer by username_16 on 2017-08-26. Score: 8

# How to teach students, how to ask for help.

I think the question is the same as “How do I teach students, how to ask for help?”.

I would get them to practice in class, with pen and paper. Some exercises could include:

## Practice answering

Teacher collects some good questions from SO, that are relevant to what pupils have been learning, and prints them out, without answers.

To explain in own words what the question is asking. Ask pupils to produce good answers to the questions. Peer review answers, produce a 2nd draft. etc.

## Judge questions

Teacher collects some good and bad questions from SO.

Students have go group into good and bad. Students have to explain what is wrong. etc.

## Create questions

Students are given a task that they can not do, and have to produce a question so that they can learn how to complete the task.

Optionally the class can be split into 2 each half learns a different thing, then get a task that only the other half can do.

# Tips for writing questions

Be clear, proof read (if you can not be bothered to read it, then how can you expect any one else to).

Remember context. People can not read minds over the internet. The person reading your question is probably not in your class. They have no idea what it is that you are trying to do.

* Include what it is that you are trying to achieve.
* Include how you are trying to achieve it.
* Show what you tried: The exact text, not what you think the typed.
* Show what went wrong: The error message, or incorrect output.

*use copy and paste (or select, paste) for the last two*.

* If the problem is big, then cut it down to size.
  But this is **important**, re-run the cut down code, and post this code, and its outputs.
  Often you will find the answer your self when doing this.


---

### Answer by username_12 on 2017-08-26. Score: 7

Unfortunately I need to question the very premise of your post.

Consider the following scenario (suggests Socrates). Suppose that a teacher is asking a student questions. Suppose further that the student has access to a perfect Oracle. Suppose that the Oracle will correctly answer any question to which the answer is known.

Suppose for each question asked of the student, the student consults the Oracle. Since in most situations a teacher is unlikely to ask a question for which he or she doesn't already know the answer, the Oracle itself knows and gives that correct answer to the student. The student then transmits the answer back to the teacher.

What has been gained by anybody?

The teacher learned nothing new. The student has been nothing but a courier between the Oracle and the teacher. The student needs to learn nothing in this transaction and even if he/she tries to memorize everything all they wind up with is a disjoint set of "facts" rather than any skill.

Tasks are posed to students not to get answers or to create programs, but to elicit a change in the mental state of the student. We try to prepare students to answer questions to which no one knows the answer and to create programs that have never before been done. We do this by posing tasks that are in fact known to have answers/solutions but those answers and solutions are not known to the student. We want the student to treat the problem as if it is a really hard problem so that they will work through the difficulties - increasing their mental abilities through practice.

Suppose you spend a year or two never using your left arm in any way. Never even lift your hand or flex your muscles. What will happen? Of course, the muscles will atrophy. The same is true of your brain. If you don't use it you will find that it has turned to mush.

The answers you get on Stack Overflow (SO) are the answers of experts. They are like an Oracle. If someone knows how to do it, you may well find the answer on SO. But if you haven't worked on the problem yourself you are just a scribe or a courier of information.

You will never be able to solve hard problems unless you solve problems that seem hard to you. You will never be able to advance the art if you haven't practiced on things that require hard work.

Sometimes the "right" answer is the "wrong" answer.

---

I agree that SO has its uses, but anything that makes it seem like a panacea is problematic. It is useful to experts who need to produce something external to themselves and need to get past the hard bits efficiently. It can be harmful to students who need to produce a change in their own brains, which can only come from working through the hard bits. Efficiency is not a major goal of education. Efficiency will come, but it comes only from practice.

---

I don't believe that looking something up on wikipedia is the same as asking SO. Wikipedia probably has the answers you want (as does your textbook) but you have to work to figure out the details. It will give you background from which you can probably tweak an answer, rather than getting an answer directly.

---

A discussion group can work together to figure out answers to some questions. If the members are all novices this is not the same as consulting an Oracle and you learn different skills in any case.

---

More valuable than SO is asking your teacher to help get you over the hard bits. He or she can evaluate what it is you really need and either answer the question or send you off on a quest. So again, not the same as an Oracle.

---

A personal note (no, I'm not Socrates, though it seems like we were contemporaries). I became an expert in using Calculus by graphing literally hundreds of rational functions (quotients of polynomials) by using the information from the first two or three derivatives of the function. I did this completely manually, on paper. Today there is a web site that would do it for me and graphing calculators that will do it. I could do thousands of rational functions (instead of merely hundreds) but I would learn nothing at all. I would be just an observer. I would not have been able to predict the shape of such a function as I once could do pretty effectively. I might be an expert user of a particular web site, but that wouldn't have much effect on my brain.


---

### Answer by username_13 on 2017-08-26. Score: 6

A very good question and a fair one as pretty much all of us face it when suggesting students to use StackOverflow in our class and they "bug" it out of curiosity just to post their assignments (often verbatim).

Because of restriction of gaining some points before getting a certain privilege and down-voting, students can't abuse it too much, but here are few suggestions which come to my mind for effective use of StackOverFlow in class.

1. Students must go through the Overview (earning "Informed" badge) to get some understanding of SO's mechanism.
2. Give them an assignment on something like: "*Which were Top Posts in this week and why?*", "*Which questions were down-voted and how will you differentiate them with the rest?*" or something like "***Take Posts by new users (say less than 2 month old members) and check which ones had positively scored posts and what do you think made those posts stand out from other new users?***" - I think these assignments will inspire them to understand what is a "Good Post" on StackExchange - I started using StackOverflow when I entered in Pedagogical career and even it took me a few months to understand how to ask a good question. I think we can use our own examples as well.
3. **Show your Research** - It should be the slogan of our class if we want a student to take full advantage of StackOverflow(Exchange).
4. **Be Specific** - Never ask two/multiple questions in same post. I remember my first post on StackOverflow was a pretty good question but I ruined it by asking a totally irrelevant question in the same post (*and realized my mistake a few down-votes later*)
5. **IMPORTANT** - Everything on StackOverflow(Exchange) is licensed under Creative Commons License and once you post a thing, even if you delete/edit it's content, its never deleted absolutely (look at revisions history of any post) - so think a lot before posting any sensitive thing.


---

### Answer by username_7 on 2017-08-26. Score: 5

I am new to the StackExchange network, and by far, the biggest roadblock has been the reputation problem. The entire StackExchange network is designed to keep out those who are not patient.

When I am teaching my students to use StackOverflow, boring or not, I tell them to have patience. I tell them that until they get 100 points, they may not actually be able to use stack to the fullest. So, first up is patience.

Second, I ask them to take advantage of the network bonus. My primary use of the StackExchange network is StackOverflow but I was getting bored of the restrictions on me. Then, I found this network 'CS Educators' and found that I might perform better here. Only a few days later, I crossed 200 points here, and that immediately bumped me up from a basic user on every network, especially the main StackOverflow. Now, I have all the privileges.

So, I ask my students to participate in any of the stack network sites. Some students are good, they can participate in puzzle sites. Other are good with tv, then, I ask them to participate there. I tell them to overcome the initial 'stack gate' like this.

After this, its the same guidelines as doing a proper Bing/Google search. search specific words, use the right tags, and be as specific as you can get or don't post the question (and avoid getting down voted).

> **Comments:**
> **username_14**: I'd be interested in hearing which formal new-user restrictions you find most constraining. Or if not a formal restriction what cultural artifact. Some thought was put into the question of *"How can we protect the network without preventing new users from using it?"* and your feeling seems to be that the resulting rules are failing to meet that goal.  
> **username_7**: The part about upvoting and the commenting was severely restricting. I remember a year ago when I joined stack, I left because of that only to return 2 weeks ago. Even then, I was frustrated with the restrictions. Especially on stack, where earning reputation is insanely difficult, these two things can be demotivating.  
> **username_14**: @nocomprende Hm. Self-answers (well good self-answers to good questions—we don't care for astroturfing) are actively encouraged on [physics.se] (my most used site) and they used to be on Stack Overflow when I was active there (admittedly it's been while). I suspect that there is some culture shock at work here. Those of us who joined Stack Overflow in the beta had both guidance from the podcasts and *time* to adjust to a culture still forming.  
> **username_14**: @nocomprende I was active on Stack Overflow until about four years ago, when the culture had settled down. But that aside, the reason you come to SE and the reason for the SE exists don't need to be the same thing. SE exists to (among other things) make the internet a better place by collecting good answers to good questions. A well constructed self-answer can aid that part of the mission, but site cultures vary which can lead to culture shock. That is something that should be addressed, but systematically rather than in response to individual events.  
> **username_15**: Thanks for pointing out the network bonus. I'd known about it but hadn't thought of mentioning it to my students. FWIW, it's pretty easy to gain reputation in English Language Learners.  

---

### Answer by username_15 on 2017-08-26. Score: 4

When a student comes to me with a question that neither of us can answer, I ask her to post it on Stack Overflow. (An example would be if she's trying to do something in Android that I've never done and that isn't well documented.) Some students are timid about posting online, so they need a little hand-holding and encouragement, which I provide by pointing them to resources on how to write a good question, giving them feedback on their question before they post it, making any needed edits after they post it (letting them know what I've changed), and voting it up, which I can legitimately do, because I've vetted the question. Usually, they get helpful answers. If it's a particularly tricky problem that's holding them up, I offer a bounty. These experiences help build their confidence and skills.

> **Comments:**
> **username_13**: I have seen your questions on StackOverflow and they really look well-researched ones! Can you please expand a bit on it's "secrets" here? I would love to hear that part.  

---

### Answer by username_6 on 2017-08-27. Score: 1

I'm not an SO user - but I've got a bit of experience elsewhere in the network.

The thing I've found that that the folk who get the most out of it are not the ones who ask questions - its the ones who post good answers.

Rather than encouraging folk to use it as a *helpdesk* it should be an *analytical tool*. Pick a question (with no answer?) - Use it as an example point out the problems in the user's approach to the question, and work through a solution.

The *act* of asking a question itself should be a tool for teaching and analysing a problem - [This is my favourite question](https://superuser.com/questions/342107/getting-macro-keys-from-a-razer-blackwidow-to-work-on-linux) - and it solves a *class* of issues and tries to talk about a problem solving process. While I failed, it still is useful for others as is.

So "Ok, here's the problem, lets work it through, lets *document*, lets work through it" should come before a question.

So, the problem here is that "asking on SO" isn't a skill - asking the right questions, the right way at the right time is.

> **Comments:**
> **username_7**: I guess, asking the right questions is the right approach for life in general, but I don't know if that is what is being discussed here. Your answer is neither here nor there and it does not even touch the topic at hand :(  
> **username_6**: Well, to "teach" stack overflow isn't a useful goal. To teach people to ask better questions and their steps is. That it so happens that it makes for better questions and the occasional rubber duckery is the point I'm trying to make here. Even if, god forbid, SE goes away, these are skills that carry over anywhere  
> **username_7**: I agree with your point. we are both on the same page there. Its just not relevant to this question. If there is another question (or you could create one) that says 'How to teach asking the right questions', then your answer would be right there in the sweet spot.  
> **username_6**: But the way to use SE efficiently *is* to ask the right questions, and use answers to sharpen one's skills in solving problems. That's how I've benefited from it over time  
> **username_7**: Ha..ha...okay okay, live and let live is my policy :P your thoughts might help others because you know, opinions and views is what we want in this community. I may not agree with the answer being relevant, but I respect your contribution.  

---

