《提问的智慧》自我理解精简版

前言

原文链接:https://github.com/FredWe/How-To-Ask-Questions-The-Smart-Way
How To Ask Questions The Smart Way

Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen

本指南英文版版权为 Eric S. Raymond, Rick Moen 所有。

简介

本文的主题:主要要是针对在论坛上如何向他人提问

在原文的基础上,进行自行理解精简内容,便有此文。

提问前该做的事情

文中举例的“黑客”——你的提问者(技术层级高于你的人)。

我们不讳言我们对那些不愿思考、或者在发问前不做他们该做的事的人的蔑视。那些人是时间杀手 -– 他们只想索取,从不付出,消耗我们可用在更有趣的问题或更值得回答的人身上的时间。

你所提问的对象可能会厌恶你的问题,但是也得思考自己是否做到了“自己该做的事情”——这跟你的技术水平如何并没有必然的联系,然后自身还需要在提出问题的时候表现出——能引导你变得解决问题的特质 – 机敏、有想法、善于观察、乐于主动参与解决问题。否则就是让我们在做你应该做的事情(浪费我们的时间)。

毕竟你向别人提问,单提问这个服务,你并没有为这个服务支付任何的报酬。那么如何让别人为你“提供这一服务呢”,那就需要你提的问题是一个一个有潜力能贡献对提问社区做出贡献的问题,而不是单单的做一个伸手党只顾索取。

在你准备要通过电子邮件、新闻群组或者聊天室提出技术问题前,请先做到以下事情:

  1. 尝试在你准备提问的论坛的旧文章中搜索答案。

  2. 尝试上网搜索以找到答案。

  3. 尝试阅读手册以找到答案。

  4. 尝试阅读常见问题文件(FAQ)以找到答案。

  5. 尝试自己检查或试验以找到答案

  6. 向你身边的强者朋友打听以找到答案。

  7. 如果你是程序开发者,请尝试阅读源代码以找到答案

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

不要 在不合适的论坛发送提问帖子(入门问高级,高级问入门)。

另一方面,表明你愿意在找答案的过程中做点什么是一个非常好的开端。谁能给点提示?我的这个例子里缺了什么?以及我应该检查什么地方请把我需要的确切的过程贴出来更容易得到答复。因为你表现出只要有人能指个正确方向,你就有完成它的能力和决心。

别假设一个提供丰富内容的网页的作者会想充当你的免费顾问。不要对你的问题是否会受到欢迎做太乐观的估计 – 如果你不确定,那就向别处发送,或者压根别发。

如何在提问前使用自救手段

别像机关枪似的一次"扫射"所有的帮助渠道,这就像大喊大叫一样会使人不快。要一个一个地来。

Stack Exchange 已经成长到超过一百个网站,以下是最常用的几个站:

  • Super User 是问一些通用的电脑问题,如果你的问题跟代码或是写程序无关,只是一些网络连线之类的,请到这里。
  • Stack Overflow 是问写程序有关的问题。
  • Server Fault 是问服务器和网管相关的问题。

如何提问

如果英文是你的外语(Second language),提示潜在回复者你有潜在的语言困难是很好的:

English is not my native language; please excuse typing errors.

  • 英文不是我的母语,请原谅我的错字或语法

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

用清晰、正确、精准并语法正确的语句描述问题。

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

尽量去揣测一个“黑客”会怎样反问你,在他提问的时候预先给他答案。

话不在多而在精

尽可能的提供有效的信息,过滤掉无效的信息,为回答者减轻信息筛选的工作量。

这样做的用处至少有三点。
第一,表现出你为简化问题付出了努力,这可以使你得到回答的机会增加;
第二,简化问题使你更有可能得到**有用**的答案;
第三,在精炼你的bug报告的过程中,你很可能就自己找到了解决方法或权宜之计。

描述问题症状而非猜测

别动辄声称找到Bug,尤其是伴随着与实际问题含糊不清的描述时更令人反感。

告诉“黑客”们你认为问题是怎样造成的并没什么帮助。(如果你的推断如此有效,还用向别人求助吗?),因此要确信你原原本本告诉了他们问题的症状,而不是你的解释和理论;让“黑客”们来推测和诊断。如果你认为陈述自己的猜测很重要,清楚地说明这只是你的猜测,并描述为什么它们不起作用。

针对诊断者而言,这并不是一种怀疑,而只是一种真实而有用的需求,以便让他们看到的是与你看到的原始证据尽可能一致的东西,而不是你的猜测与归纳的结论。所以,大方的展示给我们看吧!

按发生时间先后列出问题症状

描述目标而不是过程

经常寻求技术帮助的人在心中有个更高层次的目标,而他们在自以为能达到目标的特定道路上被卡住了,然后跑来问该怎么走,但没有意识到这条路本身就有问题。结果要费很大的劲才能搞定。

别要求使用私人电邮回复

问题的解决过程应该公开、透明,此过程中如果更有经验的人注意到不完整或者不当之处,最初的回复才能够、也应该被纠正(好比工作情况珍姐的操作)。

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

漫无边际的提问近乎无休无止的时间黑洞。

询问有关代码的问题时

别要求别人直接对你的代码“云调试”,即具体指出哪里有问题,只能说给出提示。

最有效描述程序问题的方法是提供最精简的Bug展示测试示例(bug-demonstrating test case)。一小个程序片段能刚好展示出程序的异常行为,而不包含其他令人分散注意力的内容。

去掉无意义的提问句

避免用无意义的话结束提问,例如有人能帮我吗?或者这有答案吗?。黑客们会很厌烦你 – 而且通常会用逻辑上正确,但毫无意义的回答来表示他们的蔑视, 例如:没错,有人能帮你或者不,没答案

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

礼多人不怪,而且有时还很有帮助

彬彬有礼,多用感谢词。让大家都知道你对他们花时间免费提供帮助心存感激。

问题解决后

问题解决后,加个简短的补充说明

1、问题解决后,向所有帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向他们表示感谢

2、在问题的标题中包含已修正已解决或其它同等含义的明显标记,看见该问题的人便一眼了解问题的状态;

3、补充说明不必很长或是很深入;说明问题是怎样解决的,但大可不必将解决问题的过程复述一遍;

在“黑客”中,这种良好的后继行动实际上比传统的礼节更为重要,也是你如何透过善待他人而赢得声誉的方式,这是非常有价值的资产。

如果还是搞不懂

如果你看不懂回应,别立刻要求对方解释。像你以前试着自己解决问题时那样(利用手册,FAQ,网络,身边的高手),先试着去搞懂他的回应。如果你真的需要对方解释,记得表现出你已经从中学到了点什么。 【前提是那人可靠】

处理无礼的回应

很多黑客圈子中看似无礼的行为并不是存心冒犯。相反,它是直接了当,一针见血式的交流风格,这种风格更注重解决问题,而不是使人感觉舒服而却模模糊糊。

如果你觉得被冒犯了,试着平静地反应。如果有人真的做了出格的事,邮件列表、新闻群组或论坛中的前辈多半会招呼他。如果这**没有发生而你却发火了,那么你发火对象的言语可能在黑客社区中看起来是正常的,而**将被视为有错的一方,这将伤害到你获取信息或帮助的机会。

另一方面,你偶而真的会碰到无礼和无聊的言行。与上述相反,对真正的冒犯者狠狠地打击,用犀利的语言将其驳得体无完肤都是可以接受的。然而,在行事之前一定要非常非常的有根据。纠正无礼的言论与开始一场毫无意义的口水战仅一线之隔,黑客们自己莽撞地越线的情况并不鲜见。如果你是新手或外人,避开这种莽撞的机会并不高。如果你想得到的是信息而不是消磨时光,这时最好不要把手放在键盘上以免冒险。

如何避免扮演失败的提问者

在你提问的时候,可能会遇到攻击言语,而且攻击的言语中还会带点夹七夹八的颜色。遇到这种事情你不应该自哀自嚎。相反地,你该这么做:熬过去,这很正常。事实上,它是有益健康且合理的。

当有人评论你的一个说法有误或者提出不同看法时,坚持声称受到个人攻击也毫无益处,这些都是失败者的态度。

对于“黑客”们“友好”的问候(对问题还是有帮助的),如果你无法做到感谢,至少要表现地有点尊严,别大声哀嚎,也别因为自己是个有戏剧性超级敏感的灵魂和自以为有资格的新来者,就指望别人像对待脆弱的洋娃娃那样对你。

有时候,即使你没有搞砸(或者只是在他的想像中你搞砸了),有些人也会无缘无故地攻击你本人。在这种情况下,抱怨倒是真的会把问题搞砸。

如果真有来找麻烦的人,那么这些来找麻烦的人要么是毫无办法但自以为是专家的不中用家伙,要么就是测试你是否真会搞砸的心理专家。其它读者要么不理睬,要么用自己的方式对付他们。这些来找麻烦的人在给他们自己找麻烦,这点你不用操心。

也别让自己卷入口水战,最好不要理睬大多数的口水战 – 当然,是在你检验它们只是口水战,而并未指出你有搞砸的地方,且也没有巧妙地将问题真正的答案藏于其后(这也是有可能的)。

不该问的问题

能用搜索引擎还是用搜索引擎。

如果得不到回答

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

你可以通过其他渠道获得帮助,这些渠道通常更适合初学者的需要。

如何更好地回答问题

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

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

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

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

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

尽管对那些懒虫抱怨一声 RTFM 是正当的,能指出文件的位置(即使只是建议个 Google 搜索关键词)会更好。

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

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

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

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

相关资源

如果你需要个人电脑、Unix 系统和网络如何运作的基础知识,参阅Unix系统和网络基本原理

当你发布软件或补丁时,试着按软件发布实践操作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长臂人猿

客官们众筹请博主喝杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值