Stack overflow is the world's largest programming quiz site, and most programmers are more or less in touch with it: even if you've never asked or answered it, don't forget that in search of a lot of technical questions, the first page of the results is often linked to a stack Overflow's problem.
A lot of people's first impression of stack overflow is that many programming problems can be found on top of professional answers, too bull. But when the problem does not find the right answer, and go to the above to ask new questions, some people may find their problems are cruel downvote, even closed, and eventually deleted. What's more, I find myself forbidden to ask questions again. This is the other side of stack overflow: to some extent it is unfriendly to novices.
I am personally a stack overflow active user (this (Http://stackoverflow.com/users/1009479/yu-hao) is me), currently reputation over 80K, participated in a lot of off/ Delete Issue poll (Close issue requires 5 rep more than 3 K users to vote, delete issue requires 3 or more reps more than 10K users to vote). This article was written to share my experience and to talk about how to effectively ask questions on stack overflow.
What kind of subject can I ask?
Everyone knows that Stack overflow is a question and answer community for programming classes, but someone really thinks of it as a generic question and answer community, asking questions that are completely unrelated. In fact, Stack Overflow is a series of brothers website (currently has 100+), collectively known as Stack Exchange, covers many topics, such as mathematics, physics, chemistry and other scientific classes, server management, Latex, database and other computer classes, Chinese, Russian, Japanese and other language classes, For a detailed list look here, don't let the good question ask the wrong place oh.
Topics allowed include: Specific programming issues, software algorithm-related, usually only software tools related to programmers.
Some topics are more easily mistaken, such as general computer operation problems, should go to Super User (popular Linux/unix, and Ubuntu and Independent site), professional server problems, should go to server Fault. None of this is a programming class problem, although many programmers work on the job (think "How to fix a computer?"). "is a programming problem?"). For example, the same editor, Vim/emacs/atom related problems are possible, because basically only programmers will use these tools, and word/Notepad related to the general can not.
What kind of problem should avoid asking
Programming related is not enough, the Stack Overflow requires that the problem must be "practical, answerable questions based on actual problemsthis you face".
What does that mean? First of all, open-ended questions are not allowed, such as "Why do you like PHP?", Next door Quora will be more suitable for the object. Second, the question should not be long enough to answer, and if a question is expected to be answered sufficiently to write a book, it is likely to be closed. A variety of resource-seeking issues should be avoided, such as "What kind of Python library can be used to complete a job," or "learn which book C + + should choose?" "And so on, because the answer is subjective, and it's easy to attract ads. Finally, the problem is not based on hypothetical assumptions, but on practical problems.
It is important to note that you may have seen a number of violations of the above-mentioned issues, and a great amount of browsing, especially for resource-seeking issues, non-programming-related computer problems, and so forth. What is the reason for this? Originally, the early stack overflow rules are relatively loose, there is no super user and other sites. These questions are often asked 08/09 years ago, most of which have now been closed.
If you follow the rules above, you should ask the right place for your questions. The following continues to talk about the specific needs to be aware of the content.
Stack overflow is not a forum, its goal is to be a super database of programming questions and answers, so each problem is not only to help the questioner himself, but more importantly, hope that in the future can help everyone who meets the same problem.
Therefore, content unrelated to the problem is considered a noise, including: greeting (such as Hi, hello, good afternoon, Dear coders, etc.), thank you (such as Thanks, any help would is appreciated etc), no necessary background (such as I ' m a newbie in C # etc.), your signature, etc.
Some may not understand why such a provision, especially not to express gratitude. The reason for the Stack overflow community is that for those who are willing to read and try to answer your questions, the best way to express gratitude is to upvote helpful answers and choose one of them as an answer. Each sentence has an added extra reading time, and a problem may be read by a large number of people. More relevant discussions can be found here (http://meta.stackexchange.com/q/2950/224257) and here (http://meta.stackexchange.com/q/2950/224257).
Similarly, when someone answers your question, do not add useless comments, such as simply expressing gratitude, "+1", or chatting. The only use of comments is to clarify the question.
As an English-speaking community, it is in English to interact with others in questions, answers or comments.
Unless the level of English is really bad, grammar is not the most worrying, because it does not need to be perfect. Stack overflow is free to edit other people's Questions/answers (if the editor is less than 2K, it needs to be reviewed before it takes effect). There are a lot of people who are passionate about editing issues, including fixing possible grammatical errors. One thing I want to say is to make sure that the spelling of the word is correct as much as possible. Even for people who are not good at English, it only takes a little more time to check it out, but it represents respect for people who read your questions. Even a lot of native English speakers do not pay attention to the spelling, they will write I ' m IM, the Want to the wanna and other informal English, which will reduce the probability of the question answered.
Ask yourself a few questions before sending a question:
Have you done enough research? Some people do not even read the introductory guide 10 minutes to ask questions, ask questions can have how much value?
Have you tried searching? At least try Google and site search, probably the same question already has the answer
Have you tried debug? Write your idea or debug process in a question, or you'll probably see a few comments "tried anything?" or "we don t do your homework" after the problem was downvote to the appalling. Because most people are the questioner who refuses to answer without trying.
tags : A problem can be added to the label, most of the problems are related to a specific programming language, the label of the language is usually necessary, otherwise the relevant language of the followers may not see the problem at all.
a good title : In general, the title should try to describe the specific problem in the language of the introduction. For example, C # number confusion is a counter example, if changed to why does using float instead of int give me different results then all of my inputs is Integers? It's going to be more concrete.
For programming class problems, there are problems that do not require code to express clearly, but most of the problems require code to express clearly. "I declared a variable, called a few functions, and then its value changed, why?" "Such a question, the hell knows the answer."
Provide code to note: Do not post, do you want the answer to the keyboard to reproduce your problem? Also do not just post the link outside the station, if the external links can provide some additional convenience features, but also on the basis of the code attached to the link.
For what kind of code to provide, Stack overflow gives a reference to the standard: MCVE, Minimal, complete, and verifiable example
Minimal: The smallest, that is, as far as possible to remove and the problem unrelated parts. If you put up a hundreds of-line code, few people would take the time to look closely. The process of constructing a minimized example is itself a debug process.
Complete: As a whole, a simple judgment is: can someone else see the problem and reproduce the problem by duplicating the code you provided?
Verifiable: Verifiable, describing the problem as specific as possible, "the code doesn ' t work" is a bad description. If compiling however, add compile error message, if run error, also need to add specific error message, if the result is inconsistent with your expectation, to say clearly what your expected result is, why think so.
Stack Overflow Editor is markdown format, if you are not familiar with, suggest to learn, because Markdown really is a only 10 minutes can learn the language.
Most of the formatting problems are in the place of the code, if you find that your code is normal text, but not syntax highlighting and other functions, then you are probably the format is mistaken. The most convenient way is to select all the code and then press CTRL + K on the keyboard.
It is possible that your question will be answered in a few minutes, or someone may have questions about the problem and ask you to explain it in the comments. Can comment @ They explain that if the problem is really not clear enough, edit your question. Finally, if you find a solution and no one gives it, answer your own questions. Self-answer is an act of encouragement.
After reading the above my nagging, is not also feel the stack overflow to Novice's unfriendly? But this is one of the costs of maintaining high-quality content, and there must be a mechanism to keep low-quality problems from flooding, and more people will be willing to take the time to answer good questions. I hope everyone can get the answer to their questions, and have the opportunity to talk about how to answer questions.
Reprint please specify the source of this article: http://www.infocool.net/kb/OtherDB/201606/157047.html
Play the question of Stack Overflow