提问的艺术,如何问才更可能获得想要的答案?

程序员要面对的变量很是多,这致使程序员会碰见各类各样的问题,为了节约时间提升效率,询问在这一方面有经验的程序员是个好主意。但若是想获得想要的 solution,你须要学习如何提问。
关于这个问题已经有了很是好的答案,原文连接html

这里转载,方便按目录翻阅和记忆。linux

提问以前

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

  1. 尝试在你准备提问的论坛的旧文章中搜索答案。
  2. 尝试上网搜索以找到答案。
  3. 尝试阅读手册以找到答案。
  4. 尝试阅读常见问题文件(FAQ)以找到答案。
  5. 尝试本身检查或试验以找到答案。
  6. 向你身边的强者朋友打听以找到答案。
  7. 若是你是程序开发者,请尝试阅读源代码以找到答案。

提问时

选择合适的论坛

当心选择你要提问的场合。若是你作了下述的事情,你极可能被忽略掉或者被看做失败者:程序员

  • 在与主题不合的论坛上贴出你的问题。
  • 在探讨进阶技术问题的论坛张贴很是初级的问题;反之亦然。
  • 在太多的不一样新闻群组上重复转贴一样的问题(cross-post)。
  • 向既非熟人也没有义务解决你问题的人发送私人电邮。

Stack Overflow

搜索,而后 在 Stack Exchange 问。github

近年来,Stack Exchange community 社区已经成为回答技术及其余问题的主要渠道,尤为是那些开放源码的项目。shell

由于 Google 索引是即时的,在看 Stack Exchange 以前先在 Google 搜索。有很高的机率某人已经问了一个相似的问题,并且 Stack Exchange 网站们每每会是搜索结果中最前面几个。若是你在 Google 上没有找到任何答案,你再到特定相关主题的网站去找。用标签(Tag)搜索能让你更缩小你的搜索结果。express

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

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

网站和 IRC 论坛

本地的使用者群组(user group),或者你所用的 Linux 发行版本也许正在宣传他们的网页论坛或 IRC 频道,并提供新手帮助(在一些非英语国家,新手论坛极可能仍是邮件列表), 这些地方是开始提问的好首选,特别是当你以为遇到的也许只是相对简单或者很普通的问题时。有广告赞助的 IRC 频道是公开欢迎提问的地方,一般能够即时获得回应。服务器

使用项目邮件列表

当某个项目提供开发者邮件列表时,要向列表而不是其中的个别成员提问,即便你确信他能最好地回答你的问题。查一查项目的文件和首页,找到项目的邮件列表并使用它。有几个很好的理由支持咱们采用这种办法:网络

  • 任何好到须要向个别开发者提出的问题,也将对整个项目群组有益。反之,若是你认为本身的问题对整个项目群组来讲太愚蠢,也不能成为骚扰个别开发者的理由。
  • 向列表提问能够分散开发者的负担,个别开发者(尤为是项目领导人)也许太忙以致于无法回答你的问题。
  • 大多数邮件列表都会被存档,那些被存档的内容将被搜索引擎索引。若是你向列表提问并获得解答,未来其它人能够经过网页搜索找到你的问题和答案,也就不用再次发问了。
  • 若是某些问题常常被问到,开发者能够利用此信息来改进说明文件或软件自己,以使其更清楚。若是只是私下提问,就没有人能看到最多见问题的完整场景。

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

在邮件列表、新闻群组或论坛中,大约 50 字之内的标题是抓住资深专家注意力的好机会。别用喋喋不休的帮帮忙跪求(更别说救命啊!!!!这样让人反感的话,用这种标题会被条件反射式地忽略)来浪费这个机会。不要妄想用你的痛苦程度来打动咱们,而应该是在这点空间中使用极简单扼要的描述方式来提出问题。

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

蠢问题:救命啊!个人笔记本电脑不能正常显示了!

聪明问题:X.org 6.8.1 的鼠标光标会变形,某牌显卡 MV1005 芯片组。

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

编写目标 —— 差别 式描述的过程有助于你组织对问题的细致思考。是什么被影响了? 仅仅是鼠标光标或者还有其它图形?只在 X.org 的 X 版中出现?或只是出如今 6.8.1 版中? 是针对某牌显卡芯片组?或者只是其中的 MV1005 型号? 一个黑客只需瞄一眼就可以当即明白你的环境你遇到的问题。

总而言之,请想像一下你正在一个只显示标题的存档讨论串(Thread)索引中查寻。让你的标题更好地反映问题,可以使下一个搜索相似问题的人可以关注这个讨论串,而不用再次提问相同的问题。

若是你想在回复中提出问题,记得要修改内容标题,以代表你是在问一个问题, 一个看起来像 Re: 测试 或者 Re: 新 bug 的标题很难引发足够重视。另外,在不影响连贯性之下,适当引用并删减前文的内容,能给新来的读者留下线索。

对于讨论串,不要直接点击回复来开始一个全新的讨论串,这将限制你的观众。由于有些邮件阅读程序,好比 mutt ,容许使用者按讨论串排序并经过折叠讨论串来隐藏消息,这样作的人永远看不到你发的消息。

仅仅改变标题还不够。mutt 和其它一些邮件阅读程序还会检查邮件标题之外的其它信息,以便为其指定讨论串。因此宁肯发一个全新的邮件。

在网页论坛上,好的提问方式稍有不一样,由于讨论串与特定的信息紧密结合,而且一般在讨论串外就看不到里面的内容,故经过回复提问,而非改变标题是可接受的。不是全部论坛都容许在回复中出现分离的标题,并且这样作了基本上没有人会去看。不过,经过回复提问,这自己就是暧昧的作法,由于它们只会被正在查看该标题的人读到。因此,除非你只想在该讨论串当前活跃的人群中提问,否则仍是另起炉灶比较好。

使问题容易回复

请将你的回复发送到……来结束你的问题多半会使你得不到回答。若是你以为花几秒钟在邮件客户端设置一下回复地址都麻烦,咱们也以为花几秒钟思考你的问题更麻烦。若是你的邮件程序不支持这样作,换个好点的;若是是操做系统不支持这种邮件程序,也换个好点的。

在论坛,要求经过电子邮件回复是很是无礼的,除非你认为回复的信息可能比较敏感(有人会为了某些未知的缘由,只让你而不是整个论坛知道答案)。若是你只是想在有人回复讨论串时获得电子邮件提醒,能够要求网页论坛发送给你。几乎全部论坛都支持诸如追踪此讨论串有回复时发送邮件提醒等功能。

用清晰、正确、精准并语法正确的语句

咱们从经验中发现,粗心的提问者一般也会粗心的写程序与思考(我敢打包票)。回答粗枝大叶者的问题很不值得,咱们宁愿把时间耗在别处。

正确的拼写、标点符号和大小写是很重要的。通常来讲,若是你以为这样作很麻烦,不想在意这些,那咱们也以为麻烦,不想在意你的提问。花点额外的精力斟酌一下字句,用不着太僵硬与正式 —— 事实上,黑客文化很看重能准确地使用非正式、俚语和幽默的语句。但它必须很准确,并且有迹象代表你是在思考和关注问题。

正确地拼写、使用标点和大小写,不要将its混淆为it'sloose搞成lose或者将discrete弄成discreet。不要所有用大写,这会被视为无礼的大声嚷嚷(所有小写也好不到哪去,由于不易阅读。Alan Cox 也许能够这样作,但你不行)。

更白话的说,若是你写得像是个半文盲,那多半得不到理睬。也不要使用即时通讯中的简写或火星文,如将简化为d会使你看起来像一个为了少打几个键而省字的小白。更糟的是,若是像个小孩似地鬼画符那绝对是在找死,能够确定没人会理你(或者最可能是给你一大堆指责与挖苦)。

若是在使用非母语的论坛提问,你能够犯点拼写和语法上的小错,但决不能在思考上马虎(没错,咱们一般能弄清二者的分别)。同时,除非你知道回复者使用的语言,不然请使用英语书写。繁忙的黑客通常会直接删除用他们看不懂语言写的消息。在网络上英语是通用语言,用英语书写能够将你的问题在还没有被阅读就被直接删除的可能性降到最低。

若是英文是你的外语(Second language),提示潜在回复者你有潜在的语言困难是很好的:
[译注:如下附上原文以供使用]

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

  • 英文不是个人母语,请原谅个人错字或语法。

If you speak $LANGUAGE, please email/PM me;
I may need assistance translating my question.

  • 若是你说某语言,请寄信/私讯给我;我须要有人协助我翻译个人问题。

I am familiar with the technical terms,
but some slang expressions and idioms are difficult for me.

  • 我对技术名词很熟悉,但对于俗语或是特别用法比较不甚了解。

I've posted my question in $LANGUAGE and English.
I'll be glad to translate responses, if you only use one or the other.

  • 我把个人问题用某语言和英文写出来,若是你只用一种语言回答,我会乐意将其翻译成另外一种。

使用易于读取且标准的文件格式发送问题

若是你人为地将问题搞得难以阅读,它多半会被忽略,人们更愿读易懂的问题,因此:

  • 使用纯文字而不是 HTML (关闭 HTML 并不难)。
  • 使用 MIME 附件一般是能够的,前提是真正有内容(譬如附带的源代码或 patch),而不只仅是邮件程序生成的模板(譬如只是信件内容的拷贝)。
  • 不要发送一段文字只是一行句子但自动换行后会变成多行的邮件(这使得回复部份内容很是困难)。设想你的读者是在 80 个字符宽的终端机上阅读邮件,最好设置你的换行分割点小于 80 字。
  • 可是,对一些特殊的文件不要设置固定宽度(譬如日志档案拷贝或会话记录)。数据应该原样包含,让回复者有信心他们看到的是和你看到的同样的东西。
  • 在英语论坛中,不要使用Quoted-Printable MIME 编码发送消息。这种编码对于张贴非 ASCII 语言多是必须的,但不少邮件程序并不支持这种编码。当它们处理换行时,那些文本中四处散布的=20符号既难看也分散注意力,甚至有可能破坏内容的语意。
  • 绝对,永远不要期望黑客们阅读使用封闭格式编写的文档,像微软公司的 Word 或 Excel 文件等。大多数黑客对此的反应就像有人将还在冒热气的猪粪倒在你家门口时你的反应同样。即使他们可以处理,他们也很厌恶这么作。
  • 若是你从使用 Windows 的电脑发送电子邮件,关闭微软愚蠢的智能引号功能 (从[选项] > [校正] > [自动校订选项],勾选掉智能引号单选框),以避免在你的邮件中处处散布垃圾字符。
  • 在论坛,勿滥用表情符号HTML功能(当它们提供时)。一两个表情符号一般没有问题,但花哨的彩色文本倾向于令人认为你是个无能之辈。过滥地使用表情符号、色彩和字体会使你看来像个傻笑的小姑娘。这一般不是个好主意,除非你只是对性而不是对答案感兴趣。

若是你使用图形用户界面的邮件程序(如微软公司的 Outlook 或者其它相似的),注意它们的默认设置不必定知足这些要求。大多数这类程序有基于选单的查看源代码命令,用它来检查发送文件夹中的邮件,以确保发送的是纯文本文件同时没有一些奇怪的字符。

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

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

尽可能去揣测一个黑客会怎样反问你,在你提问以前预先将黑客们可能遇到的问题回答一遍。

以上几点中,当你报告的是你认为可能在代码中的问题时,给黑客一个能够重现你的问题的环境尤为重要。当你这么作时,你获得有效的回答的机会和速度都会大大的提高。

Simon Tatham 写过一篇名为《如何有效的报告 Bug》的出色文章。强力推荐你也读一读。

话不在多而在精

你须要提供精确有内容的信息。这并非要求你简单的把成堆的出错代码或者资料彻底转录到你的提问中。若是你有庞大而复杂的测试样例能重现程序挂掉的情境,尽可能将它剪裁得越小越好。

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

别动辄声称找到 Bug

当你在使用软件中遇到问题,除非你很是、很是的有根据,不要动辄声称找到了 Bug。提示:除非你能提供解决问题的源代码补丁,或者提供回归测试来代表前一版本中行为不正确,不然你都多半不够彻底确信。这一样适用在网页和文件,若是你(声称)发现了文件的Bug,你应该能提供相应位置的修正或替代文件。

请记得,还有许多其它使用者没遇到你发现的问题,不然你在阅读文件或搜索网页时就应该发现了(你在抱怨前已经作了这些,是吧?)。这也意味着颇有多是你弄错了而不是软件自己有问题。

编写软件的人老是很是辛苦地使它尽量完美。若是你声称找到了 Bug,也就是在质疑他们的能力,即便你是对的,也有可能会冒犯到其中某部分人。当你在标题中嚷嚷着有Bug时,这尤为严重。

提问时,即便你私下很是确信已经发现一个真正的 Bug,最好写得像是作错了什么。若是真的有 Bug,你会在回复中看到这点。这样作的话,若是真有 Bug,维护者就会向你道歉,这总比你惹恼别人而后欠别人一个道歉要好一点。

低三下四不能代替你的功课

有些人明白他们不应粗鲁或傲慢的提问并要求获得答复,但他们选择另外一个极端 —— 低三下四:我知道我只是个可悲的新手,一个撸瑟,但...。这既令人困扰,也没有用,尤为是伴随着与实际问题含糊不清的描述时更使人反感。

别用原始灵长类动物的把戏来浪费你个人时间。取而代之的是,尽量清楚地描述背景条件和你的问题状况。这比低三下四更好地定位了你的位置。

有时网页论坛会设有专为新手提问的版面,若是你真的认为遇到了初学者的问题,到那去就是了,但同样别那么低三下四。

描述问题症状而非你的猜想

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

蠢问题

我在编译内核时接连遇到 SIG11 错误,
我怀疑某条飞线搭在主板的走线上了,这种状况应该怎样检查最好?

聪明问题

个人组装电脑是 FIC-PA2007 主机板搭载 AMD K6/233 CPU(威盛 Apollo VP2 芯片组),
256MB Corsair PC133 SDRAM 内存,在编译内核时,从开机 20 分钟之后就频频产生 SIG11 错误,
可是在头 20 分钟内从没发生过相同的问题。从新启动也没有用,可是关机一夜就又能工做 20 分钟。
全部内存都换过了,没有效果。相关部分的标准编译记录以下…。

因为以上这点彷佛让许多人以为难以配合,这里有句话能够提醒你:全部的诊断专家都来自密苏里州。 美国国务院的官方座右铭则是:让我看看(出自国会议员 Willard D. Vandiver 在 1899 年时的讲话:我来自一个出产玉米,棉花,牛蒡和民主党人的国家,滔滔雄辩既不能说服我,也不会让我满意。我来自密苏里州,你必须让我看看。) 针对诊断者而言,这并非一种怀疑,而只是一种真实而有用的需求,以便让他们看到的是与你看到的原始证据尽量一致的东西,而不是你的猜想与概括的结论。因此,大方的展现给咱们看吧!

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

问题发生前的一系列操做,每每就是对找出问题最有帮助的线索。所以,你的说明里应该包含你的操做步骤,以及机器和软件的反应,直到问题发生。在命令行处理的状况下,提供一段操做记录(例如运行脚本工具所生成的),并引用相关的若干行(如 20 行)记录会很是有帮助。

若是挂掉的程序有诊断选项(如 -v 的详述开关),试着选择这些能在记录中增长调试信息的选项。记住,不等于。试着选取适当的调试级别以便提供有用的信息而不是让读者淹没在垃圾中。

若是你的说明很长(如超过四个段落),在开头简述问题,接下来再按时间顺序详述会有所帮助。这样黑客们在读你的记录时就知道该注意哪些内容了。

描述目标而不是过程

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

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

蠢问题

我怎样才能从某绘图程序的颜色选择器中取得十六进制的的 RGB 值?

聪明问题

我正试着用替换一幅图片的色码(color table)成本身选定的色码,我如今知道的惟一方法是编辑每一个色码区块(table slot),
但却没法从某绘图程序的颜色选择器取得十六进制的的 RGB 值。

第二种提问法比较聪明,你可能获得像是建议采用另外一个更合适的工具的回复。

别要求使用私人电邮回复

黑客们认为问题的解决过程应该公开、透明,此过程当中若是更有经验的人注意到不完整或者不当之处,最初的回复才可以、也应该被纠正。同时,做为提供帮助者能够获得一些奖励,奖励就是他的能力和学识被其余同行看到。

当你要求私下回复时,这个过程和奖励都被停止。别这样作,让回复者来决定是否私下回答 —— 若是他真这么作了,一般是由于他认为问题编写太差或者太肤浅,以致于对其它人没有兴趣。

这条规则存在一条有限的例外,若是你确信提问可能会引来大量雷同的回复时,那么这个神奇的提问句会是向我发电邮,我将为论坛概括这些回复。试着将邮件列表或新闻群组从洪水般的雷同回复中解救出来是很是有礼貌的 —— 但你必须信守诺言。

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

漫无边际的提问是近乎无休无止的时间黑洞。最有可能给你有用答案的人一般也正是最忙的人(他们忙是由于要亲自完成大部分工做)。这样的人对无节制的时间黑洞至关厌恶,因此他们也倾向于厌恶那些漫无边际的提问。

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

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

因此,界定一下你的问题,使专家花在辨识你的问题和回答所须要付出的时间减到最少,这技巧对你有用答案至关有帮助 —— 但这技巧一般和简化问题有所区别。所以,问我想更好的理解 X,能否指点一下哪有好一点说明?一般比问你能解释一下 X 吗?更好。若是你的代码不能运做,一般请别人看看哪里有问题,比要求别人替你改正要明智得多。

询问有关代码的问题时

别要求他人帮你调试有问题的代码,不提示一下应该从何入手。张贴几百行的代码,而后说一声:它不能工做会让你彻底被忽略。只贴几十行代码,而后说一句:在第七行之后,我期待它显示 <x>,但实际出现的是 <y>比较有可能让你获得回应。

最有效描述程序问题的方法是提供最精简的 Bug 展现测试用例(bug-demonstrating test case)。什么是最精简的测试用例?那是问题的缩影;一小个程序片断能恰好展现出程序的异常行为,而不包含其余使人分散注意力的内容。怎么制做最精简的测试用例?若是你知道哪一行或哪一段代码会形成异常的行为,复制下来并加入足够重现这个情况的代码(例如,足以让这段代码能被编译/直译/被应用程序处理)。若是你没法将问题缩减到一个特定区块,就复制一份代码并移除不影响产生问题行为的部分。总之,测试用例越小越好(查看话不在多而在精一节)。

通常而言,要获得一段至关精简的测试用例并不太容易,但永远先尝试这样作的是种好习惯。这种方式能够帮助你了解如何自行解决这个问题 —— 并且即便你的尝试不成功,黑客们也会看到你在尝试取得答案的过程当中付出了努力,这可让他们更愿意与你合做。

若是你只是想让别人帮忙审查(Review)一下代码,在信的开头就要说出来,而且必定要提到你认为哪一部分特别须要关注以及为何。

别把本身家庭做业的问题贴上来

黑客们很擅长分辨哪些问题是家庭做业式的问题;由于咱们中的大多数都曾本身解决这类问题。一样,这些问题得由来搞定,你会从中学到东西。你能够要求给点提示,但别要求获得完整的解决方案。

若是你怀疑本身碰到了一个家庭做业式的问题,但仍然没法解决,试试在使用者群组,论坛或(最后一招)在项目的使用者邮件列表或论坛中提问。尽管黑客们看出来,但一些有经验的使用者也许仍会给你一些提示。

去掉无心义的提问句

避免用无心义的话结束提问,例如有人能帮我吗?或者这有答案吗?

首先:若是你对问题的描述不是很好,这样问更是多此一举。

其次:因为这样问是多此一举,黑客们会很厌烦你 —— 并且一般会用逻辑上正确,但毫无心义的回答来表示他们的蔑视, 例如:没错,有人能帮你或者不,没答案

通常来讲,避免用 是或否对或错有或没有类型的问句,除非你想获得是或否类型的回答

即便你很急也不要在标题写紧急

这是你的问题,不是咱们的。宣称紧急极有可能事与愿违:大多数黑客会直接删除无礼和自私地企图即时引发关注的问题。更严重的是,紧急这个字(或是其余企图引发关注的标题)一般会被垃圾信过滤器过滤掉 —— 你但愿能看到你问题的人可能永远也看不到。

有半个例外的状况是,若是你是在一些很高调,会使黑客们兴奋的地方,也许值得这样去作。在这种状况下,若是你有时间压力,也颇有礼貌地提到这点,人们也许会有兴趣回答快一点。

固然,这风险很大,由于黑客们兴奋的点多半与你的不一样。譬如从 NASA 国际空间站(International Space Station)发这样的标题没有问题,但用自我感受良好的慈善行为或政治缘由发确定不行。事实上,张贴诸如紧急:帮我救救这个毛绒绒的小海豹!确定让你被黑客忽略或惹恼他们,即便他们认为毛绒绒的小海豹很重要。

若是你以为这点很难以想象,最好再把这份指南剩下的内容多读几遍,直到你弄懂了再发文。

礼多人不怪,并且有时还颇有帮助

彬彬有礼,多用谢谢您的关注,或谢谢你的关照。让你们都知道你对他们花时间免费提供帮助心存感激。

坦白说,这一点并无比清晰、正确、精准并合法语法和避免使用专用格式重要(也不能取而代之)。黑客们通常宁肯读有点唐突但技术上鲜明的 Bug 报告,而不是那种有礼但含糊的报告。(若是这点让你不解,记住咱们是按问题能教给咱们什么来评价问题的价值的)

然而,若是你有一串的问题待解决,客气一点确定会增长你获得有用回应的机会。

(咱们注意到,自从本指南发布后,从资深黑客那里获得的惟一严重缺陷反馈,就是对预先道谢这一条。一些黑客以为先谢了意味着过后就不用再感谢任何人的暗示。咱们的建议是要么先说先谢了而后过后再对回复者表示感谢,或者换种方式表达感激,譬如用谢谢你的关注谢谢你的关照。)

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

问题解决后,向全部帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向他们表示感谢。若是问题在新闻组或者邮件列表中引发了普遍关注,应该在那里贴一个说明比较恰当。

最理想的方式是向最初提问的话题回复此消息,并在标题中包含已修正已解决或其它同等含义的明显标记。在人来人往的邮件列表里,一个看见讨论串问题 X问题 X - 已解决的潜在回复者就明白不用再浪费时间了(除非他我的以为问题 X的有趣),所以能够利用此时间去解决其它问题。

补充说明没必要很长或是很深刻;简单的一句你好,原来是网线出了问题!谢谢你们 – Bill比什么也不说要来的好。事实上,除非结论真的颇有技术含量,不然简短可爱的小结比长篇大论更好。说明问题是怎样解决的,但大可没必要将解决问题的过程复述一遍。

对于有深度的问题,张贴调试记录的摘要是有帮助的。描述问题的最终状态,说明是什么解决了问题,在此以后才指明能够避免的盲点。避免盲点的部分应放在正确的解决方案和其它总结材料以后,而不要将此信息搞成侦探推理小说。列出那些帮助过你的名字,会让你交到更多朋友。

除了有礼貌和有内涵之外,这种类型的补充也有助于他人在邮件列表/新闻群组/论坛中搜索到真正解决你问题的方案,让他们也从中受益。

至少,这种补充有助于让每位参与协助的人因问题的解决而从中获得知足感。若是你本身不是技术专家或者黑客,那就相信咱们,这种感受对于那些你向他们求助的大师或者专家而言,是很是重要的。问题悬而未决会让人灰心;黑客们渴望看到问题被解决。好人有好报,知足他们的渴望,你会在下次提问时尝到甜头。

思考一下怎样才能避免他人未来也遇到相似的问题,自问写一份文件或加个常见问题(FAQ)会不会有帮助。若是是的话就将它们发给维护者。

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

不应问的问题

如下是几个经典蠢问题,以及黑客没回答时心中所想的:

问题:我能在哪找到 X 程序或 X 资源?

问题:我怎样用 X 作 Y?

问题:如何设定个人 shell 提示?

问题:我能够用 Bass-o-matic 文件转换工具将 AcmeCorp 档案转换为 TeX 格式吗?

问题:个人程序/设定/SQL 语句没有用

问题:个人 Windows 电脑有问题,你能帮我吗?

问题:个人程序不会动了,我认为系统工具 X 有问题

问题:我在安装 Linux(或者 X )时有问题,你能帮我吗?

问题:我怎么才能破解 root 账号/窃取 OP 特权/读别人的邮件呢?


问题:我能在哪找到 X 程序或 X 资源?

回答:就在我找到它的地方啊,白痴 —— 搜索引擎的那一头。天哪!难道还有人不会用 Google 吗?

问题:我怎样用 X 作 Y?

回答:若是你想解决的是 Y ,提问时别给出可能并不恰当的方法。这种问题说明提问者不但对 X 彻底无知,也对 Y 要解决的问题糊涂,还被特定形势禁锢了思惟。最好忽略这种人,等他们把问题搞清楚了再说。

问题:如何设定个人 shell 提示??

回答:若是你有足够的智慧提这个问题,你也该有足够的智慧去 RTFM,而后本身去找出来。

问题:我能够用 Bass-o-matic 文件转换工具将 AcmeCorp 档案转换为 TeX 格式吗?

回答:试试看就知道了。若是你试过,你既知道了答案,就不用浪费个人时间了。

问题:个人{程序/设定/SQL 语句}不工做

回答:这不算是问题吧,我对要我问你二十个问题才找得出你真正问题的问题没兴趣 —— 我有更有意思的事要作呢。在看到这类问题的时候,个人反应一般不外以下三种

  • 你还有什么要补充的吗?
  • 真糟糕,但愿你能搞定。
  • 这关我有什么屁事?

问题:个人 Windows 电脑有问题,你能帮我吗?

回答:能啊,扔掉微软的垃圾,换个像 Linux 或 BSD 的开源操做系统吧。

注意:若是程序有官方版 Windows 或者与 Windows 有互动(如 Samba),你能够问与 Windows 相关的问题, 只是别对问题是由 Windows 操做系统而不是程序自己形成的回复感到惊讶, 由于 Windows 通常来讲实在太烂,这种说法一般都是对的。

问题:个人程序不会动了,我认为系统工具 X 有问题

回答:你彻底有多是第一个注意到被成千上万用户反复使用的系统调用与函数库档案有明显缺陷的人,更有可能的是你彻底没有根据。与众不同的说法须要与众不同的证据,当你这样声称时,你必须有清楚而详尽的缺陷说明文件做后盾。

问题:我在安装 Linux(或者 X )时有问题,你能帮我吗?

回答:不能,我只有亲自在你的电脑上动手才能找到毛病。仍是去找你当地的 Linux 使用群组者寻求实际的指导吧(你能在这儿找到使用者群组的清单)。

注意:若是安装问题与某 Linux 的发行版有关,在它的邮件列表、论坛或本地使用者群组中提问也许是恰当的。此时,应描述问题的准确细节。在此以前,先用 Linux全部被怀疑的硬件做关键词仔细搜索。

问题:我怎么才能破解 root 账号/窃取 OP 特权/读别人的邮件呢?

回答:想要这样作,说明了你是个卑鄙小人;想找个黑客帮你,说明你是个白痴!

好问题与蠢问题

最后,我将透过举一些例子,来讲明怎样聪明的提问;同一个问题的两种问法被放在一块儿,一种是愚蠢的,另外一种才是明智的。

蠢问题

我能够在哪儿找到关于 Foonly Flurbamatic 的资料?

这种问法无非想获得 STFW 这样的回答。

聪明问题

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

这个问题已经 STFW 过了,看起来他真的遇到了麻烦。

蠢问题

我从 foo 项目找来的源码无法编译。它怎么这么烂?

他以为都是别人的错,这个傲慢自大的提问者。

聪明问题

foo 项目代码在 Nulix 6.2 版下没法编译经过。我读过了 FAQ,但里面没有提到跟 Nulix 有关的问题。这是我编译过程的记录,我有什么作的不对的地方吗?

提问者已经指明了环境,也读过了 FAQ,还列出了错误,而且他没有把问题的责任推到别人头上,他的问题值得被关注。

蠢问题

个人主机板有问题了,谁来帮我?

某黑客对这类问题的回答一般是:好的,还要帮你拍拍背和换尿布吗?,而后按下删除键。

聪明问题

我在 S2464 主机板上试过了 X 、 Y 和 Z ,但没什么做用,我又试了 A 、 B 和 C 。请注意当我尝试 C 时的奇怪现象。显然 florbish 正在 grommicking,但结果出人意料。一般在 Athlon MP 主机板上引发 grommicking 的缘由是什么?有谁知道接下来我该作些什么测试才能找出问题?

这个家伙,从另外一个角度来看,值得去回答他。他表现出了解决问题的能力,而不是坐等天上掉答案。

在最后一个问题中,注意告诉我答案给我启示,指出我还应该作什么诊断工做之间微妙而又重要的区别。

事实上,后一个问题源自于 2001 年 8 月在 Linux 内核邮件列表(lkml)上的一个真实的提问。我(Eric)就是那个提出问题的人。我在 Tyan S2464 主板上观察到了这种没法解释的锁定现象,列表成员们提供了解决这一问题的重要信息。

经过个人提问方法,我给了别人能够咀嚼玩味的东西;我设法让人们很容易参与而且被吸引进来。我显示了本身具有和他们同等的能力,并邀请他们与我共同探讨。经过告诉他们我所走过的弯路,以免他们再浪费时间,我也代表了对他们宝贵时间的尊重。

过后,当我向每一个人表示感谢,而且赞扬此次良好的讨论经历的时候, 一个 Linux 内核邮件列表的成员表示,他以为个人问题获得解决并不是因为我是这个列表中的人,而是由于我用了正确的方式来提问。

黑客从某种角度来讲是拥有丰富知识但缺少人情味的家伙;我相信他是对的,若是我个乞讨者那样提问,不论我是谁,必定会惹恼某些人或者被他们忽视。他建议我记下这件事,这直接致使了本指南的出现。

若是得不到回答

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

总的来讲,简单的重复张贴问题是个很糟的点子。这将被视为无心义的喧闹。有点耐心,知道你问题答案的人可能生活在不一样的时区,可能正在睡觉,也有可能你的问题一开始就没有组织好。

你能够经过其余渠道得到帮助,这些渠道一般更适合初学者的须要。

有许多网上的以及本地的使用者群组,由热情的软件爱好者(即便他们可能从没亲自写过任何软件)组成。一般人们组建这样的团体来互相帮助并帮助新手。

另外,你能够向不少商业公司寻求帮助,不论公司大仍是小。别为要付费才能得到帮助而感到沮丧!毕竟,假使你的汽车发动机汽缸密封圈爆掉了 —— 彻底可能如此 —— 你还得把它送到修车铺,而且为维修付费。就算软件没花费你一分钱,你也不能强求技术支持老是免费的。

对像是 Linux 这种大众化的软件,每一个开发者至少会对应到上万名使用者。根本不可能由一我的来处理来自上万名使用者的求助电话。要知道,即便你要为这些协助付费,和你所购买的同类软件相比,你所付出的也是微不足道的(一般封闭源代码软件的技术支持费用比开源软件的要高得多,且内容也没那么丰富)。

如何更好地回答问题

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

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

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

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

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

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

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

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

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

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

相关文章
相关标签/搜索