Liu Sida's Homepage

Machine Learning & Human Learning

© 2014. liusida All rights reserved.

如何问一个好问题?

本文翻译自StackOverflow.com,原文链接(英文)

首先,我们很愿意帮助你。为了提高你获得回答的机会,这里有几个小提示:

先搜索,再搜索。

把你找到的东西记下来。就算你在搜索的时候找不到其他有用的答案,把你搜到的跟你问题有关的链接放进来并说明为什么没有回答你的问题,这样能够让来回答的人更明白你问题的意思。

写一个能够准确概括你问题的标题

标题是潜在回答者首先看到的东西,如果你的标题没有引起他们的兴趣,他们是不会点进去读到你其他内容的。你可以这样:

举一些例子:
* :C# Math Confusion
* :Why does using float instead of int give me different results when all of my inputs are integers?
* :[php] session doubt
* :How can I redirect users to different pages based on session data in PHP?
* :android if else problems
* :Why does str == “value” evaluate to false when str is set to “value”?

在贴代码之前,先描述问题。

在正文里,先把你标题写的问题关键点展开详细描述。讲明白你是怎么遇到这个问题的,讲明白你自己在解决这个问题时遇到了什么困难。你问题里的第一段是潜在回答者第二样看到的东西,所以尽可能写的明确一些。

帮别人重现这个问题

不是所有的问题都要贴代码的。但如果你遇到的问题是关于你正在写的代码的,你可以贴一部分。但是别把你整篇整篇的代码贴进来!如果你贴的代码是你工作代码的话,公司可能找你麻烦,而且在别人要跑代码重现问题时候,你贴整篇代码还包含了很多无关的东西需要他们去去掉。你可以这样:

选择一些相关的标签

选择与你的问题相关的标签,比方说是什么语言、什么库、某个特定的API等等。你在标签输入框里打字的时候,系统会提示你一些标签,请确认你仔细阅读了那些标签的描述,确保标签跟你的问题有关系。如何选择标签可以看 What are tags, and how should I use them?

发帖之前,再检查一遍

好了,你准备好发帖提问了,稍等,来做一个深呼吸,然后把你的帖子从头读到尾。假装你第一次看到这个帖子,能看懂帖子问的是什么吗?尝试在一个全新的环境重现这个问题,就靠你帖子里提供的信息行吗?把你漏掉的细节加一下,再读一遍。好,现在最后再来看一下你的标题,是不是还是说的是你的这个问题!

发帖吧,并保持反馈

发帖之后,先不要急着关掉浏览器,开一段,看看有没有人留言。如果你漏了什么明显的东西,你可以修改问题贴,把它加加进来。如果有人回答了,就抓紧试一下,然后给个反馈。

找 Help asking 帮忙

经过如上这些努力,你的问题贴还是没人回答的话,别失望,学会怎么问问题是很值的,而且不是一晚上就能学会的。这里还有一些材料可以继续学习:
* Writing the perfect question
* How do I ask and answer homework questions?
* How to debug small programs
* Meta discussions on asking questions
* How to ask questions the smart way — long but good advice.

翻译者按

假若我们这么认真的对待问题,不仅能让回答者感动并好好回答,有时候问题都感动得自己化解掉了,根本不需要发帖就解决了。