你真的准备好提问了吗
共 14806字,需浏览 30分钟
·
2021-08-31 08:35
你真的准备好提问了吗
请停止问那些弱智的问题 !!!
声明简介你真的准备好了吗?在你提问之前提问前你必须需要知道的事情在你提问时幼儿园的小朋友都知道要有礼貌低声下气不能代替你的功课去掉无意义的提问句慎选提问的途径学会描述问题避免 xy-problem避免大而空的问题学会什么时候贴图学会什么时候要圈出重点学会什么时候贴文字什么是弱智一样的提问别动辄声称找到 Bug描述问题症状而非你的猜测描述目标而不是过程清楚明确的表达你的问题以及需求询问有关代码的问题时问题解决后问题解决后,加个简短的补充说明总结问题如何解读答案RTFM 和 STFW:如何知道你已完全搞砸了如果还是搞不懂不该问的问题好问题与蠢问题如果得不到回答如何更好地回答问题附录使用易于读取且标准的文件格式发送问题
声明
本文是在 《Stop Ask Questions The Stupid Ways》 和 《How To Ask Questions The Smart Way》基础上写的,将两个合在了一起,并删了了大量的陈述以保证简洁,同时加了一些个人参考,原文的链接将在文章中提供
《Stop Ask Questions The Stupid Ways》
Github 中文翻译地址 https://github.com/tangx/Stop-Ask-Questions-The-Stupid-Ways/blob/master/README.md
《How To Ask Questions The Smart Way》
Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen
本指南英文版版权为 Eric S. Raymond, Rick Moen 所有。
原文网址:http://www.catb.org/~esr/faqs/smart-questions.html
Github 中文翻译地址 https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way
Copyleft 2001 by D.H.Grand(nOBODY/Ginux), 2010 by Gasolin, 2015 by Ryan Wu
简介
当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式。本指南将教你如何正确的提问以获得你满意的答案。
首先你应该明白,人们喜爱有挑战性的问题,或者能激发他们思维的好问题。如果我们并非如此,那我们也不会成为你想询问的对象。如果你给了我们一个值得反复咀嚼玩味的好问题,我们自会对你感激不尽。好问题是激励,是厚礼。好问题可以提高我们的理解力,而且通常会暴露我们以前从没意识到或者思考过的问题。对人们而言,"好问题!"是诚挚的大力称赞。
尽管如此,人们有着蔑视或傲慢面对简单问题的坏习惯,这有时让我们看起来对新手、无知者似乎较有敌意,但其实不是那样的。
我们不讳言我们对那些不愿思考、或者在发问前不做他们该做的事的人的蔑视。那些人是时间杀手 —— 他们只想索取,从不付出,消耗我们可用在更有趣的问题或更值得回答的人身上的时间。我们称这样的人为 失败者
(由于历史原因,我们有时把它拼作 lusers
)。
我们了解这点,也从不指望每个人都对这些让我们着迷的技术问题感兴趣。尽管如此,我们回答问题的风格是指向那些真正对此有兴趣并愿意主动参与解决问题的人,这一点不会变,也不该变。如果连这都变了,我们就是在降低做自己最擅长的事情上的效率。
我们(在很大程度上)是自愿的,从繁忙的生活中抽出时间来解答疑惑,而且时常被提问淹没。所以我们无情的滤掉一些话题,特别是拋弃那些看起来像失败者的家伙,以便更高效的利用时间来回答赢家(winner)
的问题。
如果你厌恶我们的态度,高高在上,或过于傲慢,不妨也设身处地想想。我们并没有要求你向我们屈服 —— 事实上,我们大多数人非常乐意与你平等地交流,只要你付出小小努力来满足基本要求,我们就会欢迎你加入我们的讨论。但让我们帮助那些不愿意帮助自己的人是没有效率的。无知没有关系,但装白痴就是不行。
所以,你不必在技术上很在行才能吸引的注意,但你必须表现出能引导你变得在行的特质 —— 机敏、有想法、善于观察、乐于主动参与解决问题。如果你做不到这些使你与众不同的事情,我们建议你花点钱找家商业公司签个技术支持服务合同(或者培训),而不是要求其他个人无偿地帮助你。
如果你决定向我们求助,当然你也不希望被视为失败者,更不愿成为失败者中的一员。能立刻得到快速并有效答案的最好方法,就是像赢家那样提问 —— 聪明、自信、有解决问题的思路,只是偶尔在特定的问题上需要获得一点帮助。
本文以《How To Ask Questions The Smart Way》的内容为主线,在其中穿插一些其他建议和工作中遇到的一些示例,主要通过在提问之前、当你提问时、得到答案后、反思总结等章节来描述一次提问的整个过程,希望你能从获取到帮助。
你真的准备好了吗?
什么鬼? | 咋回事? | 怎么办? | 救命啊!! | 求求你了!! |
---|---|---|---|---|
自己 google | 自己 google | 自己 google | 自己 google 了吗 | 不是叫你 google 了吗 |
在你提问之前
在你准备要通过电子邮件、新闻群组或者聊天室提出技术问题前,请先做到以下事情:
1. 尝试在你准备提问的论坛的旧文章中搜索答案。
2. 尝试上网搜索以找到答案。
3. 尝试阅读手册以找到答案。
4. 尝试阅读常见问题文件(FAQ)以找到答案。
5. 尝试自己检查或试验以找到答案。
6. 向你身边的强者朋友打听以找到答案。
7. 如果你是程序开发者,请尝试阅读源代码以找到答案。
当你提出问题的时候,请先表明你已经做了上述的努力;这将有助于树立你并不是一个不劳而获且浪费别人的时间的提问者。如果你能一并表达在做了上述努力的过程中所学到的东西会更好,因为我们更乐于回答那些表现出能从答案中学习的人的问题。
运用某些策略,比如先用 Google 搜索你所遇到的各种错误信息(搜索 Google 论坛和网页),这样很可能直接就找到了能解决问题的文件或邮件列表线索。即使没有结果,在邮件列表或新闻组寻求帮助时加上一句 我在 Google 中搜过下列句子但没有找到什么有用的东西
也是件好事,即使它只是表明了搜索引擎不能提供哪些帮助。这么做(加上搜索过的字串)也让遇到相似问题的其他人能被搜索引擎引导到你的提问来。
别着急,不要指望几秒钟的 Google 搜索就能解决一个复杂的问题。在向专家求助之前,再阅读一下常见问题文件(FAQ)、放轻松、坐舒服一些,再花点时间思考一下这个问题。相信我们,他们能从你的提问看出你做了多少阅读与思考,如果你是有备而来,将更有可能得到解答。不要将所有问题一股脑拋出,只因你的第一次搜索没有找到答案(或者找到太多答案)。
准备好你的问题,再将问题仔细的思考过一遍,因为草率的发问只能得到草率的回答,或者根本得不到任何答案。越是能表现出在寻求帮助前你为解决问题所付出的努力,你越有可能得到实质性的帮助。
小心别问错了问题。如果你的问题基于错误的假设,某个人多半会一边在心里想着蠢问题…
, 一边用无意义的字面解释来答复你,希望着你会从问题的回答(而非你想得到的答案)中汲取教训。
绝不要自以为够格得到答案,你没有;你并没有。毕竟你没有为这种服务支付任何报酬。你将会是自己去挣到一个答案,靠提出有内涵的、有趣的、有思维激励作用的问题 —— 一个有潜力能贡献社区经验的问题,而不仅仅是被动的从他人处索取知识。
另一方面,表明你愿意在找答案的过程中做点什么是一个非常好的开端。谁能给点提示?
、我的这个例子里缺了什么?
以及我应该检查什么地方
比请把我需要的确切的过程贴出来
更容易得到答复。因为你表现出只要有人能指个正确方向,你就有完成它的能力和决心。
提问前你必须需要知道的事情
要知道,
Free
的正确翻译是自由
,而非 `免费`。要知道,愿意回答问题的人,都是 可爱 的人。
要知道,向帮助你的人
付费
是一个高尚的行为。即使回答你的人不是为了钱。要知道,
花钱买时间是一个常识
。如果你不能认同,要么你钱包穷,要么你思想穷。要知道,给对方发工资的不是你或者你老板。
要知道,提问的时候你才是 孙子,帮助你的人是 大爷。
要知道,不回答你的问题对其他人没有任何损失。
要知道,
准确描述一件事情
是一项基本生存技能。要学会如何提问要知道,
搜索
是一项基本生存技能,学不会用 Google 的话,你可能真的不适合你所从事的行业。要知道,
英文
是一项基本生存技能,不认识英文的话,你可能真的不适合你所从事的行业。
在你提问时
幼儿园的小朋友都知道要有礼貌
请问
...问题描述...
谢谢
彬彬有礼,多用请
和谢谢您的关注
,或谢谢你的关照
。让大家都知道你对他们花时间免费提供帮助心存感激。
如果你有一串的问题待解决,客气一点肯定会增加你得到有用回应的机会。
低声下气不能代替你的功课
有些人明白他们不该粗鲁或傲慢的提问并要求得到答复,但他们选择另一个极端 —— 低声下气:我知道我只是个可悲的新手,一个撸瑟,但...
。这既使人困扰,也没有用,尤其是伴随着与实际问题含糊不清的描述时更令人反感。
别用原始灵长类动物的把戏来浪费你我的时间。取而代之的是,尽可能清楚地描述背景条件和你的问题情况。这比低声下气更好地定位了你的位置。
有时网页论坛会设有专为新手提问的版面,如果你真的认为遇到了初学者的问题,到那去就是了,但一样别那么低声下气。
去掉无意义的提问句
避免用无意义的话结束提问,例如有人能帮我吗?
或者这有答案吗?
。
首先:如果你对问题的描述不是很好,这样问更是画蛇添足。
其次:由于这样问是画蛇添足,人们会很厌烦你 —— 而且通常会用逻辑上正确,但毫无意义的回答来表示他们的蔑视, 例如:没错,有人能帮你
或者不,没答案
。
一般来说,避免用 是或否
、对或错
、有或没有
类型的问句,除非你想得到是或否类型的回答。
慎选提问的途径
小心选择你要提问的场合。如果你做了下述的事情,你很可能被忽略掉:
在与主题不合的论坛上贴出你的问题。
在探讨进阶技术问题的论坛张贴非常初级的问题;反之亦然。
在太多的不同新闻群组上重复转贴同样的问题(cross-post)。
向既非熟人也没有义务解决你问题的人发送私人电邮。
注意:不要在一个进阶技术群问非常初级的问题,否则他们只会回你看文档去或者搜索去。比如你在 Netty 应用群问 Java 基础语法问题
学会描述问题
向别人提问的时候,要学会正确的描述问题。
使用有意义且描述明确的标题
用清晰、正确、精准且语法正确的语句
使用易于读取且标准的文件格式发送问题(这个换位思考一下,把你想做信息接收者,重新审视你的格式是否易读)
按发生时间先后列出问题症状(某些问题会在运行一定的时间间隔发生)
精确地描述问题并言之有物
别用喋喋不休的
帮帮忙
、跪求
、急
(更别说救命啊!!!!
这样让人反感的话,用这种标题会被条件反射式地忽略)来浪费这个机会。
把对方当成你的老板,你在给他做报告。要用最精炼的文字和图片,向对方阐述明白一个事情的来龙去脉。
仔细、清楚地描述你的问题或 Bug 的症状。
描述问题发生的环境(机器配置、操作系统、应用程序、以及相关的信息),提供经销商的发行版和版本号(如:
Fedora Core 4
、Slackware 9.1
等)。描述在提问前你是怎样去研究和理解这个问题的。
描述在提问前为确定问题而采取的诊断步骤。
描述最近做过什么可能相关的硬件或软件变更。
尽可能的提供一个可以
重现这个问题的可控环境
的方法。
尽量去揣测你的老板会怎样反问你,在你提问之前预先将老板们可能遇到的问题回答一遍。
要知道,你不是我追的妹子,我没有时间来猜你想要什么。
记住,给别人的条件越多,你的问题解决越快。因为这不是解密游戏。
请问一个关于
什么
的问题。我想要达到
什么样
效果,但是我这样做出现了什么样
的问题。报错日志是
这样
的。(要学会
画关键字)我尝试过
什么
方法来解决。我尝试搜索过了
什么
关键字,在里面找到了这些 URL
的回答,尝试了还是没有解决问题。我用的是
什么
操作系统,版本号是多少。我用的是
什么
软件,版本号是多少。谢谢
千万别认为只有别人帮助你之后才需要说
谢谢
。蠢问题:救命啊!我的笔记本电脑不能正常显示了!
聪明问题:X.org 6.8.1 的鼠标光标会变形,某牌显卡 MV1005 芯片组。
更聪明问题:X.org 6.8.1 的鼠标光标,在某牌显卡 MV1005 芯片组环境下 - 会变形。
避免 xy-problem
参考地址: http://xyproblem.info/
XY Problem
表示
提问者想要解决 原问题 X ,且觉得解决了 引申问题 Y 就能解决 X 问题
提问者对外提出了解决 Y 的的请求
回答者帮助提问者解决 Y 问题。(浪费了回答者和提问者双方的时间)
然而, 最终 Y 问题可能并不是 X 问题的一个合适的解决方法
因此, 提问者要避免创造这样的修罗场, 需要学会在问题之初就准确描述自己的根本问题。
避免大而空的问题
问题越大越空越没有人会回答问题,避免提出让人尴尬的问题。
群里有人会 Java 吗?
你这能成功劝退所有的想帮你的人群里有人会 MyBatis 吗?
虽然问题小了,但是还会劝退所有人有大佬在吗?我有个问题?
这样问,你觉得会有人回答你吗
不要在问问题之前,先提出一个假大空的问题,问题描述的越具体,尝试回答的人越多。
学会什么时候贴图
对方发来一大屏幕文本代码,这个还找个屁问题呀
学会什么时候要圈出重点
千万不要认为别人的频率和你是同步的,然后像这样扔出一张图一个表情就了事了。
在工作中, 你@
的人可能会多问一句什么情况。但是在 IM 聊天群里面,就没有这么好运气了。
如下很难吗?
@xxx,我这边访问不了 git 仓库。
环境是: 环境是什么。
img学会什么时候贴文字
对于一些需用接收者根据某些条件才能复现的问题,不仅要提供截图,还需要提供文字的必要的参数之类。
比如你在前后端联调的过程中,只给了后端一个截图,那后端怎么根据截图中的参数复现一次呢?这种情况必须再提供文字版的参数、域名等必要的参数。
image-20210828111152263什么是弱智一样的提问
img别动辄声称找到 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 年时的讲话:我来自一个出产玉米,棉花,牛蒡和民主党人的国家,滔滔雄辩既不能说服我,也不会让我满意。我来自密苏里州,你必须让我看看。
) 针对诊断者而言,这并不是一种怀疑,而只是一种真实而有用的需求,以便让他们看到的是与你看到的原始证据尽可能一致的东西,而不是你的猜测与归纳的结论。所以,大方的展示给我们看吧!
描述目标而不是过程
如果你想弄清楚如何做某事(而不是报告一个 Bug),在开头就描述你的目标,然后才陈述重现你所卡住的特定步骤。
经常寻求技术帮助的人在心中有个更高层次的目标,而他们在自以为能达到目标的特定道路上被卡住了,然后跑来问该怎么走,但没有意识到这条路本身就有问题。结果要费很大的劲才能搞定。
蠢问题
我怎样才能从某绘图程序的颜色选择器中取得十六进制的的 RGB 值?
聪明问题
我正试着用替换一幅图片的色码(color table)成自己选定的色码,我现在知道的唯一方法是编辑每个色码区块(table slot),
但却无法从某绘图程序的颜色选择器取得十六进制的的 RGB 值。
第二种提问法比较聪明,你可能得到像是建议采用另一个更合适的工具
的回复。
清楚明确的表达你的问题以及需求
漫无边际的提问是近乎无休无止的时间黑洞。最有可能给你有用答案的人通常也正是最忙的人(他们忙是因为要亲自完成大部分工作)。这样的人对无节制的时间黑洞相当厌恶,所以他们也倾向于厌恶那些漫无边际的提问。
如果你明确表述需要回答者做什么(如提供指点、发送一段代码、检查你的补丁、或是其他等等),就最有可能得到有用的答案。因为这会定出一个时间和精力的上限,便于回答者能集中精力来帮你。这么做很棒。
要理解专家们所处的世界,请把专业技能想像为充裕的资源,而回复的时间则是稀缺的资源。你要求他们奉献的时间越少,你越有可能从真正专业而且很忙的专家那里得到解答。
所以,界定一下你的问题,使专家花在辨识你的问题和回答所需要付出的时间减到最少,这技巧对你有用答案相当有帮助 —— 但这技巧通常和简化问题有所区别。因此,问我想更好的理解 X,可否指点一下哪有好一点说明?
通常比问你能解释一下 X 吗?
更好。如果你的代码不能运作,通常请别人看看哪里有问题,比要求别人替你改正要明智得多。
询问有关代码的问题时
别要求他人帮你调试有问题的代码,不提示一下应该从何入手。张贴几百行的代码,然后说一声:它不能工作
会让你完全被忽略。只贴几十行代码,然后说一句:在第七行以后,我期待它显示 <x>,但实际出现的是 <y>
比较有可能让你得到回应。
最有效描述程序问题的方法是提供最精简的 Bug 展示测试用例(bug-demonstrating test case)。什么是最精简的测试用例?那是问题的缩影;一小个程序片段能刚好展示出程序的异常行为,而不包含其他令人分散注意力的内容。怎么制作最精简的测试用例?如果你知道哪一行或哪一段代码会造成异常的行为,复制下来并加入足够重现这个状况的代码(例如,足以让这段代码能被编译/直译/被应用程序处理)。如果你无法将问题缩减到一个特定区块,就复制一份代码并移除不影响产生问题行为的部分。总之,测试用例越小越好。
一般而言,要得到一段相当精简的测试用例并不太容易,但永远先尝试这样做的是种好习惯。这种方式可以帮助你了解如何自行解决这个问题 —— 而且即使你的尝试不成功,黑客们也会看到你在尝试取得答案的过程中付出了努力,这可以让他们更愿意与你合作。
如果你只是想让别人帮忙审查(Review)一下代码,在信的开头就要说出来,并且一定要提到你认为哪一部分特别需要关注以及为什么。
问题解决后
问题解决后,加个简短的补充说明
问题解决后,向所有帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向他们表示感谢。如果问题在新闻组或者邮件列表中引起了广泛关注,应该在那里贴一个说明比较恰当。
最理想的方式是向最初提问的话题回复此消息,并在标题中包含已修正
,已解决
或其它同等含义的明显标记。在人来人往的邮件列表里,一个看见讨论串问题 X
和问题 X - 已解决
的潜在回复者就明白不用再浪费时间了(除非他个人觉得问题 X
的有趣),因此可以利用此时间去解决其它问题。
补充说明不必很长或是很深入;简单的一句你好,原来是网线出了问题!谢谢大家 – Bill
比什么也不说要来的好。事实上,除非结论真的很有技术含量,否则简短可爱的小结比长篇大论更好。说明问题是怎样解决的,但大可不必将解决问题的过程复述一遍。
对于有深度的问题,张贴调试记录的摘要是有帮助的。描述问题的最终状态,说明是什么解决了问题,在此之后才指明可以避免的盲点。避免盲点的部分应放在正确的解决方案和其它总结材料之后,而不要将此信息搞成侦探推理小说。列出那些帮助过你的名字,会让你交到更多朋友。
除了有礼貌和有内涵以外,这种类型的补充也有助于他人在邮件列表/新闻群组/论坛中搜索到真正解决你问题的方案,让他们也从中受益。
至少,这种补充有助于让每位参与协助的人因问题的解决而从中得到满足感。如果你自己不是技术专家或者黑客,那就相信我们,这种感觉对于那些你向他们求助的大师或者专家而言,是非常重要的。问题悬而未决会让人灰心;黑客们渴望看到问题被解决。好人有好报,满足他们的渴望,你会在下次提问时尝到甜头。
思考一下怎样才能避免他人将来也遇到类似的问题,自问写一份文件或加个常见问题(FAQ)会不会有帮助。如果是的话就将它们发给维护者。
在黑客中,这种良好的后继行动实际上比传统的礼节更为重要,也是你如何透过善待他人而赢得声誉的方式,这是非常有价值的资产。
总结问题
吾日三省吾身
尝试去总结反省这次描述问题和寻求答案之中的不足,并尝试去改变
这个问题是我第一次问吗?(反复被同一个问题难度说明本身就没有进步)
提出问题是不是被要求去看文档了吗?(如果是,是因为我没看文档,还是漏看了,还是文档不清楚,还是自身水平无法理解文档)
提出问题是不是被要求去Google了吗?(如果是,是因为我没搜索,还是没搜索到,那其他人是怎么搜索到的)
提出问题后被要求再次描述问题了吗?(是自己描述问题的不清楚,还是其他原因,下次能不能提前处理下)
是否在被逼问再次描述问题时,自己已经知道解决思路了?(如果是,那下次是不是自己可以多深入的去描述问题)
为了解决这个问题我尝试了什么方法,解答者用了什么方法?(从中找到区别)
尝试总结问题:
去尝试总结问题和答案,看看是不是有固定的模式,不要尝试用脑子去记忆答案,脑子是记不住的,尝试去其他方法记录,比如笔记、博客之类的。总结的方案很多,可以去往往找怎么总结。
如何解读答案
RTFM 和 STFW:如何知道你已完全搞砸了
有一个古老而神圣的传统:如果你收到RTFM (Read The Fucking Manual)
的回应,回答者认为你应该去读他妈的手册。当然,基本上他是对的,你应该去读一读。
RTFM 有一个年轻的亲戚。如果你收到STFW(Search The Fucking Web)
的回应,回答者认为你应该到他妈的网上搜索。那人多半也是对的,去搜索一下吧。(更温和一点的说法是 Google 是你的朋友!)
在论坛,你也可能被要求去爬爬论坛的旧文。事实上,有人甚至可能热心地为你提供以前解决此问题的讨论串。但不要依赖这种关照,提问前应该先搜索一下旧文。
通常,用这两句之一回答你的人会给你一份包含你需要内容的手册或者一个网址,而且他们打这些字的时候也正在读着。这些答复意味着回答者认为
你需要的信息非常容易获得;
你自己去搜索这些信息比灌给你,能让你学到更多。
你不应该因此不爽;依照黑客的标准,他已经表示了对你一定程度的关注,而没有对你的要求视而不见。你应该对他祖母般的慈祥表示感谢。
如果还是搞不懂
如果你看不懂回应,别立刻要求对方解释。像你以前试着自己解决问题时那样(利用手册,FAQ,网络,身边的高手),先试着去搞懂他的回应。如果你真的需要对方解释,记得表现出你已经从中学到了点什么。
比方说,如果我回答你:看来似乎是 zentry 卡住了;你应该先清除它。
,然后,这是一个很糟的后续问题回应:zentry 是什么?
好的问法应该是这样:哦~~~我看过说明了但是只有 -z 和 -p 两个参数中提到了 zentries,而且还都没有清楚的解释如何清除它。你是指这两个中的哪一个吗?还是我看漏了什么?
不该问的问题
以下是几个经典蠢问题,以及黑客没回答时心中所想的:
问题:我能在哪找到 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 搜索关键词)会更好。
如果你决定回答,就请给出好的答案。当别人正在用错误的工具或方法时别建议笨拙的权宜之计(workaround),应推荐更好的工具,重新界定问题。
正面的回答问题!如果这个提问者已经很深入的研究而且也表明已经试过 X 、 Y 、 Z 、 A 、 B 、 C 但没得到结果,回答 试试看 A 或是 B
或者 试试 X 、 Y 、 Z 、 A 、 B 、 C
并附上一个链接一点用都没有。
帮助你的社区从问题中学习。当回复一个好问题时,问问自己如何修改相关文件或常见问题文件以免再次解答同样的问题?
,接着再向文件维护者发一份补丁。
如果你是在研究一番后才做出的回答,展现你的技巧而不是直接端出结果。毕竟授人以鱼不如授人以渔
。
附录
使用易于读取且标准的文件格式发送问题
如果你人为地将问题搞得难以阅读,它多半会被忽略,人们更愿读易懂的问题,所以:
使用纯文字而不是 HTML (关闭 HTML 并不难)。
使用 MIME 附件通常是可以的,前提是真正有内容(譬如附带的源代码或 patch),而不仅仅是邮件程序生成的模板(譬如只是信件内容的拷贝)。
不要发送一段文字只是一行句子但自动换行后会变成多行的邮件(这使得回复部分内容非常困难)。设想你的读者是在 80 个字符宽的终端机上阅读邮件,最好设置你的换行分割点小于 80 字。
但是,对一些特殊的文件不要设置固定宽度(譬如日志文件拷贝或会话记录)。数据应该原样包含,让回复者有信心他们看到的是和你看到的一样的东西。
在英语论坛中,不要使用
Quoted-Printable
MIME 编码发送消息。这种编码对于张贴非 ASCII 语言可能是必须的,但很多邮件程序并不支持这种编码。当它们处理换行时,那些文本中四处散布的=20
符号既难看也分散注意力,甚至有可能破坏内容的语意。绝对,永远不要指望黑客们阅读使用封闭格式编写的文档,像微软公司的 Word 或 Excel 文件等。大多数黑客对此的反应就像有人将还在冒热气的猪粪倒在你家门口时你的反应一样。即便他们能够处理,他们也很厌恶这么做。
如果你从使用 Windows 的电脑发送电子邮件,关闭微软愚蠢的
智能引号
功能 (从[选项] > [校订] > [自动校正选项],勾选掉智能引号
单选框),以免在你的邮件中到处散布垃圾字符。在论坛,勿滥用
表情符号
和HTML
功能(当它们提供时)。一两个表情符号通常没有问题,但花哨的彩色文本倾向于使人认为你是个无能之辈。过滥地使用表情符号、色彩和字体会使你看来像个傻笑的小姑娘。这通常不是个好主意,除非你只是对性而不是对答案感兴趣。
如果你使用图形用户界面的邮件程序(如微软公司的 Outlook 或者其它类似的),注意它们的默认设置不一定满足这些要求。大多数这类程序有基于选单的查看源代码
命令,用它来检查发送文件夹中的邮件,以确保发送的是纯文本文件同时没有一些奇怪的字符。