Skip to content

提问的智慧

提问的智慧

在提问之前

在你准备要提出问题前,请先做到以下事情:

  1. 尝试自己检查或试验以找到答案。
  2. 尝试上网搜索以找到答案。
  3. 尝试阅读常见问题文件(FAQ)以找到答案。
  4. 尝试阅读手册以找到答案。

如果你不假思索地提问,很大概率你得不到你想要的答案;即使你这次侥幸得到了正确解答,你肯定还会有更多的问题,而这些问题会越问越多。

当你提问时

描述目标而不是过程

如果你想弄清楚如何做某事(而不是报告一个 Bug),在开头就描述你的目标,然后才陈述重现你所卡住的特定步骤。

我经常遇到网友这样提问:我在写代码时报了一个 xxx 的错误,请问怎么解决? 我看到了一般会问:报错截图有吗? 。我不常看消息,下次回答就不知道是多少分钟之后了。

如果是把报错信息、详情、想要的结果都描述一遍,看到消息的时候就可以直接给出准确的解决方案。

去掉无意义的提问句

避免用无意义的话结束提问,例如在吗?你有时间吗?有人能帮我吗?这有答案吗?

首先:如果你对问题的描述不是很好,这样问更是画蛇添足。

由于这样问是画蛇添足,—— 而且通常会用逻辑上正确,但毫无意义的问题大概率得到毫无意义的答案。 例如:有时间没错,有人能帮你不,没答案

一般来说,避免用 是或否对或错有或没有 类型的问句,除非你想得到是或否类型的回答。

清楚明确的表达你的问题以及需求

不假思索的提问几乎都是时间黑洞,最有可能给你有用答案的人通常很忙(厉害的人需要完成的工作一般都会更多)。领导、负责人也讨厌与厌恶那些漫无边际的提问。

如果你明确表述需要回答者做什么(如提供指点、发送一段代码、检查你的补丁、或是其他等等),就最有可能得到有用的答案。因为这会定出一个时间和精力的上限,便于回答者能集中精力来帮你。这么做很好。

要理解专家们所处的世界,请把专业技能想像为充裕的资源,而回复的时间则是稀缺的资源。你要求他们奉献的时间越少,你越有可能从真正专业而且很忙的专家那里得到解答。

所以,界定一下你的问题,使专家花在辨识你的问题和回答所需要付出的时间减到最少,这技巧对你有用答案相当有帮助 —— 但这技巧通常和简化问题有所区别。因此,问我想更好的理解 X,可否指点一下哪有好一点说明?通常比问你能解释一下 X 吗? 更好。

如果你的代码不能运作,通常请别人看看哪里有问题,比要求别人替你改正要明智得多。

使用有意义且描述明确的标题

再多的跪求、在线等、标点符号、Emoji 或者特殊符号也解决不了你碰到的问题,反而会被黑客们“条件反射式地忽略”,简明扼要的标题是一个好问题的开始。

一个好标题范例是目标 —— 差异式的描述,许多技术支持组织就是这样做的。在目标部分指出是哪一个或哪一组东西有问题,在差异部分则描述与期望的行为不一致的地方。

X.org 6.8.1 的鼠标光标,在某牌显卡 MV1005 芯片组环境下 - 会变形。

另外,这一小节对在回复中提出新问题也给出了建议:无论是邮件列表还是网页论坛,尽量不要在回复中提出新问题,新问题就新发邮件或者新开帖子。

精确地描述问题并言之有物

  • 仔细、清楚地描述你的问题或 Bug 的症状。
  • 描述问题发生的环境(机器配置、操作系统、应用程序、以及相关的信息),提供经销商的发行版和版本号
  • 描述在提问前你是怎样去研究和理解这个问题的。
  • 描述在提问前为确定问题而采取的诊断步骤。
  • 描述最近做过什么可能相关的硬件或软件变更。
  • 尽可能的提供一个可以重现这个问题的可控环境的方法。

尽量去揣测给你解答问题的人会怎样反问你,在你提问之前预先将可能遇到的问题回答一遍。

以上几点中,当你报告的是你认为可能在代码中的问题时,给对方一个可以重现你的问题的环境尤其重要。当你这么做时,你得到有效的回答的机会和速度都会大大的提升。

重点

  1. 不要直接把错误直接发给我,单单一个错误我看不出错误。请把错误信息截图发给我。
  2. 对于思路混乱的问题,请先把思路理清楚之后再向我描述(别把我绕进去了)
  3. 与代码有关的问题,请直接把代码文件打包发给我(尤其是有很多文件时)
  4. 不代写代码,只解答问题