沦陷今生 发表于 2008-4-12 09:16:29

【提问的智慧】

写在前面的话:
首先感谢所有用户对火车头采集器的支持,让火车头采集器得以持续的发展,本文将从一个技术者回答问题的角度,来阐述如何通过有智慧的提问,快速获得需要的答案.
本文在Eric Steven Raymond的翻译原文基础上做了一定修改.


引言

在技术论坛,所提技术问题的回答很大程度上取决于你提问的方式与解决此问题的难度。

在下文将采取如下名称定义:会提问者(聪明者),不会提问者(普通者),技术专家(黑客)。

程序的应用已经很广泛,你通常可以从其它更有经验的用户而不是(黑客)那得到回答。这是好事,他们一般对新手常有的毛病更容忍一点。当然,使用下文提到的方法,通常能最有效地得到问题的解答。

第一件需要知道的事是(黑客)喜欢难题和激发思考的好问题,如果用户能提出一个有趣的问题让他们咀嚼玩味,他们会感激你。一个好的问题是种激励与礼物,帮助他们发展认知,揭示没有注意或想过的问题。

除此外,(黑客)有时候遇到简单问题就表现出敌视或傲慢,有时他们看起来还对新手和愚蠢的用户有条件反射式的无礼,但并不真正是这样。

(黑客)只是毫无歉意地敌视那些提问前不愿思考、不做自己该做之事的人。这种人就象时间无底洞──他们只知道获取,不愿意付出,他们浪费了时间,这些时间本可用于其它更值得回答的人和更有趣的问题。他们将这种人叫做 “不会提问者”(普通者)。

(黑客)注意到许多人只想用他们写的东西,他们对学习技术细节没有兴趣。对大多数人而言,计算机只是种工具,是种达到目的的手段。他们要生活并且有更要紧的事要做,他们承认这点,也从不指望每个人都对这些让他们着迷的技术问题感兴趣。不过,他们回答问题的风格是为了适应那些真正对此有兴趣并愿意主动参与问题解决的人,这一点是不会变的。如果这都变了,他们就会在技术上不再那么犀利。

(黑客)多数是自愿者,从自己繁忙的生活中抽时间来回答问题,有时会力不从心。因此,他们会无情地滤除问题,特别是那些看起来象是(普通者)的,以便更有效地把回答问题的时间留给那些(聪明者)如果你认为这种态度令人憎恶、以施惠者自居或傲慢自大,请检查你的假设,他们并未要求你屈服─事实上,假如你做了该做的努力使之成为可能,(黑客)中的大多数人非常乐意平等地与你交流并欢迎你接纳他们的文化。试图去帮助那些不愿自救的人对他们简直没有效率,不懂没有关系,但愚蠢地行事不行。

所以,你不必在技术上很在行才能吸引(黑客)的注意,但你必须表现出能引导你的姿态─机敏、善于思考、善于观察、乐于主动参与问题的解决。如果你做不到这些使你与众不同的事情,我们建议你付钱跟别人签商业服务合同,而不是要求(黑客)无偿帮助。如果你决定向他们求助,你不会想成为一名(普通者),你也不想被看成一个(普通者)。得到快速有效回复的最好方法是使提问者看起来象个聪明、自信的人,并且暗示只是碰巧在某一特别问题上需要帮助。

[ 本帖最后由 沦陷今生 于 2008-4-12 13:04 编辑 ]

沦陷今生 发表于 2008-4-12 09:16:36

提问前

提问前

在通过电子邮件、论坛发帖提技术问题之前,做以下事情:
尝试搜索互联网以找到答案
尝试搜索论坛文章以找到答案
尝试阅读教程区教程以找到答案
尝试自己检查或试验以找到答案
尝试请教懂行的朋友以找到答案
如果你是程序员,尝试阅读源代码以找到答案
提问时,请先表述你已经做了上述事情,这将有助于建立你不是寄生虫与浪费别人时间的印象。最好再表述你从中学到的东西,(黑客)喜欢回答那些表现出能从答案中学习的人。
使用某些策略,比如用Google搜索你遇到的错误提示,可能就直接找到了解决问题的文档。即使没有结果,在电子邮件或论坛发帖提问题时提一句“我在Google中查过下列句子但没有找到什么有用的东西”也是件好事。
准备你的问题,彻底地思考。轻率的提问只能得到轻率的回答,或者压根没有。在提问时,越是表现出做过思考并在努力解决问题,你越有可能得到实际帮助。
注意别提错问题。如果提问基于错误的假设,某(黑客)多半会一边想"愚蠢的问题..",一边用按照问题字面的无用答案回复你.
永远不要假设你有资格得到解答。你没有这种资格,毕竟你没有为此服务付费。如果你能够提出有内容、有趣和激励思考的问题──那种毫无疑问能够向社区贡献经验而不仅仅是消极地要求从别人那获取知识的问题,你将“挣到”答案。
另一方面,表明你能够也乐意参与问题的解决是个很好的开端。“有没有人能指个方向?”、“我这还漏点什么?”、“我应该查哪些网站?”通常要比 “请给出我可以用的完整步骤”更容易得到回复,因为你表明了只要有人能指个方向你就很乐意完成剩下的过程。

[ 本帖最后由 沦陷今生 于 2008-4-12 13:05 编辑 ]

沦陷今生 发表于 2008-4-12 09:16:39

提问时

提问时


仔细挑选目标
要对在哪提问留心,如果你做了下 述事情,多半会被一笔勾销或被看成“普通者”:


[*]张贴与板块主题完全无关的问题
[*]在面向高级技术问题的板块上提非常初浅的问题,或者反之。
[*]在太多不同的新闻组同时交叉张贴
[*]给既非熟人也没有义务解决你问题的个人张贴你私人的联系方式

为保护通信的渠道不被无关的东西淹没,(黑客)会除掉那些没有找对地方的问题,你不会想有这种经历的。
向陌生的人直接发送信息是不明智的。譬如,不要假设一个富含信息的网页的编写者想充当你的免费顾问,不要对你的问题是否会受到欢迎做乐观的估计──如果你不确定,向别处发或者根本别发。
张贴前先翻翻已有的帖子可以帮助你感受一下论坛行事的方式。事实上,张贴之前搜索与你问题相关的关键词是个很好的主意,也许就找到答案了。即使没有,也能帮助你整理出更好的问题。
别象机关枪似的一次性“扫射”所有的帮助通 道,那就象大嚷大叫并使人不快。一个一个地来。

弄清楚你的主题!一般来说,在仔细挑选的讨论区中提问更容易得到有用的回复。有许多理由支持这一点,一是看潜在的回复者有多少,二是看论坛的参与者有多少,(黑客)更愿回答能启发多数人的问题。

可以理解,老练的(黑客)和一些流行软件的作者正在收到超出他们承受能力的不当消息。就象那根多出来就可以压垮骆驼背的稻草一样,你的加入也可能会使情况走向极端─已经好几次了,一些流行软件的作者退出了对其软件的支持,因为伴随而来的涌向其私人邮箱的大量无用消息变得无法忍受。

[ 本帖最后由 沦陷今生 于 2008-4-12 10:16 编辑 ]

沦陷今生 发表于 2008-4-12 09:16:41

使用明确而有意义的主题

使用明确而有意义的主题

在邮件列表、新闻组或网页论坛中,主题是你在五十个或更少的字符以内吸引有资格的专家注意的黄金机会,不要用诸如“请帮我”(更别提大写的“请帮 我!!!!”,这种主题的消息会被条件反射式地删掉)之类的唠叨浪费机会。不要用你痛苦的深度来打动我们,相反,要在这点空间中使用超级简明扼要的问题 描述。
使用主题的好惯例是“对象──偏差”(式的描述),许多技术支持组织就是这样做的。在“对象”部分指明是哪一个或哪一组东西有问题,在“偏差”部分 则描述与期望 行 为不一致的地方。


愚蠢:

救命啊!我的笔记本视频工作不正常!


明智:

XFree86 4.1扭曲鼠标光标,某显卡MV1005型号的芯片组


更明智:

使用某显卡MV1005型号芯片组的XFree86 4.1的鼠标光标被扭曲


编写“对象──偏差”式描述的过程有助于你更具体地组织你的问题。是什么被影响了?仅仅是鼠标光标或者还有其它图形?只在XFree86中出现?或 只是在其4.1版中?是针对某显卡?或者只是其MV1005型号的芯片组?一个(黑客)只需看一眼就能够立即明白什么是你遇到的问题,什么是你自己的问题。

[ 本帖最后由 沦陷今生 于 2008-4-12 20:23 编辑 ]

沦陷今生 发表于 2008-4-12 09:16:43

使之更易回复

以“请向……回复”来结束问题多半会使你得不到回答。如果你觉得花几秒钟在邮件客户端设置一下回复地址都麻烦,我们也觉得花几秒钟考虑你的问题更麻烦。如果你的邮件客户端程序不支持这样做,换个好点的。如果是操作系统不支持所有这种邮件客户端程序,也换个好点的。
在论坛里,要求通过电子邮件回复是非常无礼的,除非你确信回复的信息也许是机密的(而且有人会为了某种未知的原因只让你而不是整个论坛知道答案)。如果你只是想在有人回复线索时得到电子邮件提醒,可以要求论坛发送。几乎所有论坛都提供诸如“留意本线索”、“有回复发送邮件”的功能。

[ 本帖最后由 沦陷今生 于 2008-4-12 20:25 编辑 ]

沦陷今生 发表于 2008-4-12 09:16:51

描述问题应准确且有内容

描述问题应准确且有内容


[*]仔细、清楚地描述问题的症状。
[*]描述问题发生的环境(主机,操作系统,应用程序,任何相关的),提供程序版本号(如:“PHPCMS SP6”、“DEDECMS V5.1.0”等)。
[*]描述提问前做过的研究及其理解。
[*]描述提问前为确定问题而采取的诊断步骤。
[*]描述最近对计算机或软件配置的任何相关改变。

尽最大努力预测别人会提到的问题,并提前备好答案。

[ 本帖最后由 沦陷今生 于 2008-4-12 20:31 编辑 ]

沦陷今生 发表于 2008-4-12 09:16:54

多不等于准确

多不等于准确

你应该(写得)准确且有内容,简单地将一大堆代码或数据“倾倒”在求助消息中达不到目的。如果你有一个很大且复杂的测试样例让程序崩溃,尝试将其裁剪得越小越好。
至少有三个理由支持这点。第一,让别人看到你在努力简化问题使你更有可能得到回复。第二,简化问题使你更有可能得到有用的回复。第三,在提"BUG"报告的过程中,你可能自己就找到了解决问题的方法或权宜之计.

[ 本帖最后由 沦陷今生 于 2008-4-12 20:35 编辑 ]

沦陷今生 发表于 2008-4-12 09:16:56

别动辄声称找到BUG

当你使用某个人开发的程序中遇到问题,除非你非常、非常的有根据,不要动辄声称找到了BUG。提示:除非你能提供解决问题的源代码补丁,或者对前一版本的回归测试表现出不正确的行为,否则你都多半不够完全确信。对于网页和文档也如此,如果你(声称)发现了文档的“BUG”,你应该能提供相应位置的替代文本。

记住,还有许多其它用户未经历你遇到的问题,否则你在阅读文档或网页搜索时就应该发现了(你在报怨前已经做了这些,是吧?)。这也意味着很有可能是你弄错了而不是软件本身有问题。

编写程序的人通常非常辛苦地使它尽可能完美。如果你声称找到了BUG,也就暗示他们做错了什么,而这几乎总会使人不快──即使你是对的, 在主题中嚷嚷“BUG”也是特别不老练的。

提问时,即使你私下非常确信已经发现一个真正的BUG,最好写得象是你做错了什么。如果真的有BUG,你会在回复中看到这点。这么做的话,如果真有BUG,维护者就会向你道歉,这总比你弄砸了然后欠别人一个道歉要强。

[ 本帖最后由 沦陷今生 于 2008-4-12 20:38 编辑 ]

沦陷今生 发表于 2008-4-12 09:17:03

低声下气不能代替自己应做之事



有些人明白他们不应该粗鲁或傲慢地行事并要求得到答复,但他们退到相反的低声下气的极端,“我知道我只是个什么也不是、什么也不懂的失败者, 但……”。这既使人困扰也没有帮助,当伴随着对实际问题含糊的描述时还特别令人反感。
别用低级灵长类动物的策略浪费大家的时间,相反,尽量清楚地表述背景事实和你的问题,这比低声下气更好地摆正了你的位置。
有时,论坛设有单独的初学者提问区域,如果你真的认为遇到了初浅的问题,到那去就是了,但一样别低声下气。


描述问题症状而不是猜测



告诉黑客你认为是什么导致了问题是没有用的(如果你的诊断理论是了不起的东西,你还会向他人咨询求助吗?)。所以,确保只是告诉他们问题的原始 症状,而不是你的解释和理论,让他们来解释和诊断。如果你认为陈述你的猜测很重要,清楚地说明这只是你的猜测并描述为什么它们不起作用。


愚蠢:

我在编译内核时接连遇到SIG11错误,怀疑主板上的某根电路丝断了,找到它们的最好办法是什么?
明智: 我组装的电脑(K6/233 CPU、FIC-PA2007主板(威盛Apollo VP2芯片组)、Corsair PC133 SDRAM 256Mb内 存)最近在开机20分钟左右、做内核编译时频繁地报SIG11错,但在头20分钟内从不出问题。重启动不会复位时钟,但整夜关机会。更换所有内存未解决问 题,相关的典型编译会话日志附后。



按时间先后罗列症状



刚出问题之前发生的事情通常包含有解决问题最有效的线索。所以,记录中应准确地描述你及电脑在崩溃之前都做了些什么。在命令行处理的 情况下,有会话日志(如运行脚本工具生成的)并引用相关的若干(如20)行记录会非常有帮助。
如果崩溃的程序有诊断选项(如-v详述选项),仔细考虑选择这些能在记录中增加排错信息的选项。
如果你的记录很长(如超过四段),也许在开头简述问题随后按时间先后罗列详细过程更有用。这样做,黑客在读你的记录时就知道该查哪些内容了。


描述目的而不是步骤



如果你想弄清楚如何做某事(而不是报告一个BUG),在开头就描述你的目标,此后才描述为此采取的措施所遇到的问题。
经常有这种情况,寻求技术帮助的人在脑袋里有个更高层面的目标,他们在自以为能达到目标的特定道路上被卡住了,然后跑来问该怎么走,但 没有意识到这条路本身有问题,结果要费很大的劲才能通过。
愚蠢: 我怎样才能让某图形程序的颜色拾取器取得十六进制的RGB值?
明智: 我正试图用自己选定数值的颜色替换一幅图片的颜色表,我现在唯一知道的方法是编辑每个表槽,但却无法让某图形程序的颜色拾取器取得十六进 制的RGB值。

第二种提法是明智的,它使得建议采用更合适的工具完成任务的回复成为可能。


别要求私下回复



黑客们认为问题的解决过程应该公开、透明,此过程中如果更有才能的人注意到不完整或者不当之处,最初的回复才能够、也应该被更正。同时,作为 回复者也因为能力和学识被其它同行看到而得到某种回报。
当你要求私下回复时,此过程和回报都被中止。别这样做,让回复者来决定是否私下回答──如果他真这么做了,通常是因为他认为问题编写太差或者太肤浅以至于对其它人无意义。
对这条规则存在一条有限的例外,如果你确信提问可能会导致大量雷同的回复时,那么“给我发电子邮件,我将为小组归纳这些回复”将是神奇的句子。试图 将邮件列表或新闻组从洪水般雷同的回复中解救出来是非常有礼貌的──但你应信守诺言。

[ 本帖最后由 沦陷今生 于 2008-4-12 20:49 编辑 ]

沦陷今生 发表于 2008-4-12 09:17:05

问题应明晰

漫无边际的问题通常也被视为没有明确限制的时间无底洞。最有可能给你有用答案的人通常也是最忙的人(假如只是因为他们承担了大多数工作的话),这些人对于没有限制的时间无底洞极其反感,所以他们也倾向于讨厌那些漫无边际的问题。

如果你明确了想让回复者做的事(如指点方向、发送代码、检查补丁或其它),你更有可能得到有用的回复。这可以使他们集中精力并间接地设定了他们为帮助你需要花费的时间和精力上限,这很好。

要想理解专家生活的世界,可以这样设想:那里有丰富的专长资源但稀缺的响应时间。你暗中要求他们奉献的时间越少,你越有可能从这些真正懂行也真正很忙的专家那里得到回答。

所以限定你的问题以使专家回答时需要付出的时间最少──这通常还与简化问题不一样。举个例,“请问可否指点一下哪有好一点的X解释?”通常要 比“请解释一下X”明智。如果你有什么代码不运行了,通常请别人看看哪有问题比叫他们帮你改正更明智。

别张贴家庭作业

黑客们善于发现“家庭作业”式的问题。我们大多数人已经做了自己的家庭作业,那是该你做的,以便从其经历中学习。问一下提示没有关系,但不是要求完整的解决方案。

如果你怀疑自己碰到了一个家庭作业式的问题,但仍然无法解决,尝试在用户组论坛或(作为最后一招)在项目的“用户”邮件列表或论坛中提问。尽管 黑客们会看出来,一些高级用户也许仍会给你提示。

删除无意义的问题

抵制在求助消息末尾加上诸如“有人能帮我吗?”或“有没有答案?”之类在语义上无任何意义东西的诱惑。第一,如果问题描述还不完整,这些附加的东西最多也只能是多余的。第二,因为它们是多余的,黑客们会认为这些东西烦人──就很有可能用逻辑上无误但打发人的回复,诸如“是的,你可以得到帮助”和“不,没有给你的帮助”

一般来说,避免提“是或否”类型的问题,除非你想得到 “是或否”类型的回答。

不要刻意标明问题紧急

这是你自己的问题,不要我们的。宣称“紧急”极有可能事与愿违:大多数黑客会直接删除这种消息,他们认为这是无礼和自私地企图得到即时与特殊的关 照。

有一点点局部的例外,如果你是在一些知名度很高、会使黑客们激动的地方使用程序,也许值得这样去做。在这种情况下,如果你有期限压力,也很有礼貌地提到这点,人们也许会有足够的兴趣快一点回答。

当然,这是非常冒险的,因为黑客们对什么是令人激动的标准多半与你的不同。譬如从国际空间站这样张贴没有问题,但代表感觉良好的慈善或政治原因这样做几乎肯定不行。事实上,张贴诸如“紧急:帮我救救这个毛绒绒的小海豹!”肯定会被黑客回避或光火,即使他们认为毛绒绒的小海豹很重要。

如果你觉得这不可思议,再把剩下的内容多读几遍,直到弄清楚了再发贴。

礼貌总是无害的

礼貌一点,使用“请”和“谢谢你的关注”或者“谢谢你的意见”,让别人明白你感谢他们无偿花时间帮助你。

坦率地说,这一点没有语法正确、文字清晰、准确、有内容和避免使用专用格式重要(同时也不能替代它们)。黑客们一般宁可读有点唐突但技术鲜明的臭 虫报告,而不是那种礼貌但含糊的报告。(如果这点让你不解,记住我们是按问题能教我们些什么来评价一个问题的)

然尔,如果你已经谈清楚了技术问题,客气一点肯定会增加你得到有用回复的机会。

(我们必须指出,本文唯一受到一些老黑客认真反对的地方是以前曾经推荐过的“提前谢了”,一些黑客认为这隐含着事后不用再感谢任何人的暗示。我们的 建议是 先说 “提前谢了”,事后再对回复者表示感谢。或者换种方式表达,譬如用“谢谢你的关注”或“谢谢你的意见”)。

问题解决后追加一条简要说明

问题解决后向所有帮助过的人追加一条消息,让他们知道问题是如何解决的并再次感谢。如果问题在邮件列表或新闻组中受到广泛关注,在那里追加此消息比 较恰当。

最理想的方式是向最初提问的线索回复此消息并在主题包含“已解决”、“已搞定”或其它同样意思的明显标记。在人来人往的邮件列表里,一个看见线索 “问题X”和“问题X-已解决”的潜在回复者就明白不用再浪费时间了(除非他个人觉得“问题X”有趣),因此可以用此时间去解决其它 问题。

你追加的消息用不着太长太复杂,一条简单的“你好──是网线坏了!谢谢大家──比尔”就比什么都没有要强。事实上,除 非解决问题的技术真正高深,一条简短而亲切的总结比长篇大论要好。说明是什么行动解决了问题,用不着重演整个排错的故事。

对于有深度的问题,张贴排错历史的摘要是适当的。描述问题的最终状态,说明是什么解决了问题,在此之后才指明可以避免的弯路。应避免的 弯路部分应放在正确的解决方案和其它总结材料之后,而不要将此消息搞成侦探推理小说。列出那些帮助过你的名字,那样你会交到朋友的。

除了有礼貌、有内容以外,这种类型的追帖将帮助其他人在邮件列表、新闻组或论坛文档中搜索到真正解决你问题的方案,从而也让他们受益。

除上述而外,此类追帖还让每位参与协助的人因问题的解决而产生一种满足感。如 果你自己 不是技术专家或黑客,相信我们,这种感觉对于你寻求帮助的老手和专家非常重要。问题叙述到最后不知所终总是令人沮丧的,黑客们痒 痒地渴望看到它们被解决。“挠痒痒”为你挣到的好报将对你下次再次张贴提问非常非常的有帮助。

考虑一下怎样才能避免其他人将来也遇到类似的问题,问问自己编一份文档或FAQ补丁有没有帮助,如果有的话就将补丁发给维护者。

在黑客中,这种行为实际上比传统的礼貌更重要,也是你善待他人而赢得声誉的方式,这是非常有价值的财富。

[ 本帖最后由 沦陷今生 于 2008-4-12 20:58 编辑 ]
页: [1] 2
查看完整版本: 【提问的智慧】