【学习技巧 - 提问】提问的智慧(如何通过向他人提问获取帮助)

【学习技巧 - 提问】提问的智慧(如何通过向他人提问获取帮助)

前言

我们不讳言我们对那些不愿思考、或者在发问前不做他们该做的事的人的蔑视。

那些人是时间杀手 —— 他们只想索取,从不付出,消耗我们可用在更有趣的问题或更值得回答的人身上的时间。我们称这样的人为失败者(losers) (由于历史原因,我们有时把它拼作 lusers)。

我们在现实中会遇到很多问题,尤其是学习编程时问题更是常见,但是非常多的人提问的方式却让人无语。

例如:截一张图直接丢给你然后问你什么错(只有异常其他什么信息都没)、还有人直接让答者帮忙调试代码找bug(这谁顶得住,难道会给测试费用?)。

时间就是生命,无端地浪费别人的时间,其实是无异于谋财害命的。——鲁迅

切记,每个人的时间都是很珍贵的。故此写下这篇博客,希望对提问者有所启发。

以下主要为编程问题的解决,生活中的大部分问题也类似。

一、提问之前

回答者可不喜欢有人不禁思考就提出问题,无意义的提问只会占用大家的时间。提问之前请下尝试以下方法:

  • 尝试先思考一下看有没有思路(自己检查一下,多半是不仔细的问题)。
  • 尝试使用搜索引擎,baidu、google、bing...总有一个可用的搜索引擎。(可以解决编程时的99%的问题,如果没有找到满意的答案,请确定搜索的关键词是否正确)。
  • 尝试去阅读手册(或称为官方文档)寻找答案,手册里面有很多可以帮助到你的信息。
  • 尝试阅读源码,也许在源码中可以找到答案。

别说下面的搜索引擎你一个都不认识!自己选一个先尝试自己解决。

image

二、如何提问

当你提出问题的时候,请先表明你已经做了上述的努力;这将有助于树立你并不是一个不劳而获且浪费别人的时间的提问者。如果你能一并表达在做了上述努力的过程中所学到的东西会更好,因为我们更乐于回答那些表现出能从答案中学习的人的问题。

运用某些策略,比如先用 Google 搜索你所遇到的各种错误信息(既搜索 Google 论坛,也搜索网页),这样很可能直接就找到了能解决问题的文件或邮件列表线索。即使没有结果,在邮件列表或新闻组寻求帮助时加上一句 我在 Google 中搜过下列句子但没有找到什么有用的东西 也是件好事,即使它只是表明了搜索引擎不能提供哪些帮助。这么做(加上搜索过的字串)也让遇到相似问题的其他人能被搜索引擎引导到你的提问来。

别着急,不要指望几秒钟的 Google 搜索就能解决一个复杂的问题。在向专家求助之前,再阅读一下常见问题文件(FAQ)、放轻松、坐舒服一些,再花点时间思考一下这个问题。相信我们,他们能从你的提问看出你做了多少阅读与思考,如果你是有备而来,将更有可能得到解答。不要将所有问题一股脑拋出,只因你的第一次搜索没有找到答案(或者找到太多答案)。

准备好你的问题,再将问题仔细的思考过一遍,因为草率的发问只能得到草率的回答,或者根本得不到任何答案。越是能表现出在寻求帮助前你为解决问题所付出的努力,你越有可能得到实质性的帮助。

当你自己尝试解决问题无果后,你可能需要他人的帮助

提问之前,先不要着急。先思考一下你要提问的问题(这点非常重要),别自己都搞不清楚问题是什么就去问别人!

你的提问有多认真,收到的回答就有多认真。

举例:网页点击某按钮时报错(报异常)

  1. 你做了什么操作导致了这个错误或异常的截图(gif会更好)。
  2. 截图报错信息和相关的地方。简洁语言描述如何产生的报错(请减少没用的信息,用简洁的语言概括)。
  3. 语言描述你尝试过什么方式,与获得的结果(例如,你搜索了某某关键词却没有帮助。这可以表明你并不是一个浪费别人时间的人)。

三、注意事项

1.礼貌

礼貌提问,礼貌回复。

假如你盛气凌人的去提问,我想别人不回答也不奇怪。

BTW:如果问题得到解决,个人推荐标记一下已解决。顺便附上解决方式,以便后人遇到该问题时可以有相关资料查阅(同理,你搜索到的答案也是别人解决过后分享出来的)。

2.好问题与蠢问题

蠢问题:

我可以在哪儿找到关于 Foonly Flurbamatic 的资料?

这种问题无非是搜索而已。

聪明问题:

我用 Google 搜索过 "Foonly Flurbamatic 2600",但是没找到有用的结果。谁知道上哪儿去找对这种设备编程的资料?

这个问题可以知道提问者已经尝试去解决问题,去搜索,但是没有得到实质的结果。也许他真的遇到了问题,需要有人帮助。

3.假设问题未解决或得不到答案

如果仍得不到回答,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。没有回应不代表你被忽视,虽然不可否认这种差别很难区分。

没有回复并不代表你被忽略了,因为该问题可能暂时没找到解决方法,或者看到你问题的人不知道答案,也有可能他在忙。

四、如何更好地回答问题

我想每一个回答者一定都被别人帮助过,或者说别人的分享启发了自己。因此愿意分享知识,为他人答疑解惑。

如果你是一个回答者,请不要吝啬你的答案,大方的分享出去帮助其他人吧。回答的时候也有一些小技巧,参考下面这段引用文字。

态度和善一点。问题带来的压力常使人显得无礼或愚蠢,其实并不是这样。

对初犯者私下回复。对那些坦诚犯错之人没有必要当众羞辱,一个真正的新手也许连怎么搜索或在哪找常见问题都不知道。

如果你不确定,一定要说出来!一个听起来权威的错误回复比没有还要糟,别因为听起来像个专家很好玩,就给别人乱指路。要谦虚和诚实,给提问者与同行都树个好榜样。

如果帮不了忙,也别妨碍他。不要在实际步骤上开玩笑,那样也许会毁了使用者的设置 —— 有些可怜的呆瓜会把它当成真的指令。

试探性的反问以引出更多的细节。如果你做得好,提问者可以学到点东西 —— 你也可以。试试将蠢问题转变成好问题,别忘了我们都曾是新手。

如果你决定回答,就请给出好的答案。当别人正在用错误的工具或方法时别建议笨拙的权宜之计(wordaround),应推荐更好的工具,重新界定问题。

正面的回答问题!如果这个提问者已经很深入的研究而且也表明已经试过 X 、 Y 、 Z 、 A 、 B 、 C 但没得到结果,回答 试试看 A 或是 B 或者 试试 X 、 Y 、 Z 、 A 、 B 、 C 并附上一个链接一点用都没有。

帮助你的社区从问题中学习。当回复一个好问题时,问问自己如何修改相关文件或常见问题文件以免再次解答同样的问题?,接着再向文件维护者发一份补丁。

如果你是在研究一番后才做出的回答,展现你的技巧而不是直接端出结果。毕竟授人以鱼不如授人以渔。

其他

参考:

《提问的智慧》(中文):https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md