提问技巧详解?
在网络世界里,当你提出一个技术问题时,你能得到什么样的答案?这要看挖出答案的难度,也要看你提问的方式。本指南旨在帮助你提高提问技巧,以获得你最想要的答案...
我不想掩饰我对那些提问前不想想或者没做完该做的事的人的鄙视。这样的人只会谋杀时间——他们只想拿走时间,从来不给,毫无理由地浪费我们的时间,而我们本可以把时间花在更有趣的问题上,或者更值得回答的人身上。我们称这样的人为“失败者”(出于历史原因,我们有时将其拼写为“lusers”)。
在提问之前
在通过电子邮件、新闻组或聊天室询问技术问题之前,请检查您是否:
1.通读手册,试着自己找答案。
2.在FAQ中找到答案(一个维护良好的FAQ可以涵盖一切:)。
3.网上搜(个人推荐谷歌~~~)。
4.问问擅长这个的朋友。
提问时,先说明自己以前做过什么;这将有助于树立你的形象:你不是一个试图不劳而获的乞丐,也不想浪费别人的时间。如果提问者能从回答中有所收获,我们更愿意回答他的问题。
仔细思考,准备好你的问题。草率的问题只能得到草率的答案,或者根本没有答案。在寻求帮助之前,你越是表现出解决问题的努力,你能得到的实质性帮助就越多。
注意不要问错问题。如果你的问题是基于错误的假设,J. Random Hacker通常会用毫无意义的字面解释来回答你,认为“愚蠢的问题……”,希望你能从问题的答案(而不是你想要的答案)中学到东西。
永远不要认为自己有资格得到答案,你没有资格。毕竟你没有为这项服务付出任何代价。你必须自己“赢得”一个答案,通过问一个有意义的、有趣的和鼓舞人心的问题——一个对社区的体验有潜在贡献的问题,而不仅仅是被动地从别人那里寻求知识——来赢得这个答案。
另一方面,这是一个非常好的开始,表明你愿意在寻找答案的过程中做一些事情。“谁能给点提示?”“我的例子中缺少了什么?”以及“我应该在哪里检查?”比“请把具体过程贴出来”更容易得到答案。因为只要有人给你指明方向,你似乎就有能力和决心去完成它。
如何提问
-谨慎选择论坛
慎重选择提问的场合。如果你被描述成这样,你很可能会被忽视或者被认为是一个失败者:
1.把你的问题贴在无关的论坛上。
2.在论坛上发布非常初级的问题,讨论高级技能;反之亦然
3.在太多不同的新闻组中交叉发帖
-用词恰当,语法正确,拼写正确。
我们从经验中发现,粗心的作者通常是粗心的思考者(我确信)。不值得回答粗心人的问题。我们宁愿把时间花在别的地方。
正确的拼写、标点和大小写非常重要。
更普遍的情况是,如果你的问题写得像个半文盲,你很可能会被忽略。
如果你在非母语论坛提问,你可以在拼写和语法上犯一些错误——但在思维上绝对不能马虎(是的,我们能搞清楚区别)。
-使用有意义且准确的标题。
在邮件列表或新闻组中,大约50个单词或更少的主题标题是引起资深专家注意的黄金机会。不要用唠叨的“救命”(更不要说“救命!”!!!!“浪费这个机会。不要试图用你的痛苦来打动我们,也不要用空格来代替对问题的描述,哪怕是极其简短的描述。
蠢问题:救命!我的笔记本电脑不能正常工作了!
巧题:XFree86 4.1下鼠标光标变形,Fooware MV1005的显示芯片。
如果你在回复中提出了问题,记得修改内容的标题,表明里面有问题。一个看起来像“Re: test”或者“Re: new bug”的问题很难引起足够的重视。另外,引用并删除上一篇文章的内容,为新读者留下线索。
-描述准确,信息量大
1.仔细清晰地描述症状。
2.提供问题发生的环境(机器配置、操作系统、应用程序等)。
3.在提问之前说明你是如何研究和理解这个问题的。
4.在问问题之前,解释你采取了什么步骤来解决问题。
5.列出最近可能会产生影响的任何硬件和软件更改。
试着想象一个黑客会如何向你提问,在提问的时候提前给他一个答案。
西蒙·塔瑟姆写了一篇题为《如何有效地报告bug》的优秀论文。我强烈建议你也读一读。
-没什么好说的
你需要提供准确有效的信息。这并不是要你简单地把大量的错误代码或数据放进你的问题里。如果你有一个庞大复杂的测试条件,尽量把它切得小一些。
这至少有三个好处。第一,表明你为简化问题做出了努力,这可以增加你得到答案的几率;第二,简化问题增加了你获得有用答案的机会;第三,在你完善bug报告的过程中,也许你可以自己发现问题或者改正。
-只有症状,不是猜测
告诉黑客你认为问题是如何造成的没有任何帮助。如果你的推断这么有效,还需要找别人帮忙吗?),所以一定要把问题的症状告诉他们,不要加上自己的理解和推断。让黑客来诊断吧。
蠢问题:我在内核编译中一次次遇到SIG11错误。我怀疑主板上有飞线。这种情况我应该怎么查最好?
聪明的问题:我做了一个K6/233系统,主板是FIC-PA2007(通过阿波罗VP2芯片组)和256MB海盗船PC133 SDRAM。在内核编译中,经常会出现SIG11错误,这种错误从20分钟前启动开始就有,而在启动前的20分钟内从未出现过。重启也没用,但是关机一晚可以工作20分钟。所有的记忆都被改变了,没有任何影响。相关部分的典型编译记录如下。
-按时间顺序列出症状
最有助于发现问题的线索往往是问题发生前的一系列操作。所以,你的解释应该包括操作步骤和电脑的反应,直到问题出现。
如果你的解释比较长(四段以上),在开头简要描述一下问题,然后按时间顺序详细阐述,会很有帮助。所以黑客知道在你的指令中寻找什么。
-我知道你想问什么。
问不完的问题是一个几乎无穷无尽的时间黑洞。能给你最有用答案的人也是最忙的人(他们忙是因为他们要自己完成大部分工作)。这样的人对无节制的时间黑洞不太感兴趣,所以可以说对漫无边际的问题不太感兴趣。
如果你清楚地陈述了回答者需要做什么(提供建议、发送一段代码、检查你的补丁或其他什么),你最有可能得到一个有用的答案。这样会设定一个时间和精力的上限,让回答者可以集中精力帮助你,非常有效。要理解专家所处的世界,我们应该把专业技能想象成丰富的资源和回报。
时间是一种稀缺资源。解决你的问题花费的时间越少,你就越能从忙碌的专家那里得到答案。
因此,优化问题的结构,尽量减少专家解决问题所需的时间,会有很大的帮助——这通常不同于简化问题。因此,问“我想更好地了解X,你能给我一些提示吗?”通常比问“你能解释一下X吗?”好多了。如果你的代码不工作,问问它有什么问题,而不是让别人替换它。
对你来说,复习要明智得多。
-不要问应该自己解决的问题
黑客总是善于区分哪些问题应该自己解决;因为我们大多数人自己都解决过这样的问题。同样,这些问题也要由你来解决,你会从中学到一些东西。你可以要求提示,但不要要求完整的解决方案。
-摆脱无意义的问题
不要用无意义的话来结束问题,比如“有人能帮帮我吗?”或者“有答案吗?”。首先:如果你对问题的描述不恰当,那就更没有必要问了。其次:因为问这个问题是多余的,黑客会对你感到厌倦——通常会用逻辑正确的答案来表示自己的鄙视,比如“是的,有人可以帮你”或者“不,没有答案”。
谦逊从来没有坏处,而且往往大有帮助。
要有礼貌,多使用“请”和“先谢谢”。让每个人都知道,你感谢他们的时间和帮助的义务。但是,如果你有很多解决不了的问题,礼貌会增加你得到有用答案的机会。
(我们注意到,自本指南发布以来,经验丰富的黑客给出的唯一严重缺陷反馈就是提前感谢。有些黑客认为“先谢谢”的言外之意是以后不会再感谢任何人。我们的建议是:谢谢大家。)
-问题解决后,补充简要说明。
问题解决后,给所有帮助过你的人发一张纸条,让他们知道问题是怎么解决的,再次感谢他们。如果问题在新闻组或邮件列表中引起广泛关注,应该在那里张贴补充说明。补充说明不需要很长或很深入;简单的一句“你好,原来是网线出问题了!谢谢——比尔”总比什么都不说好。事实上,除非结论确实是技术性的,否则简短可爱的总结比冗长的学术论文更好。解释问题是如何解决的,但没有必要重复解决问题的过程。除了礼貌和给予反馈,本补充帮助其他人搜索在邮件列表/新闻组/论坛中帮助过你的完整解决方案,这也可能对他们有用。最后(至少?),本补充
它帮助所有帮助过的人从中获得满足感。如果你自己不是老手,也不是黑客,那就相信我们。这种感觉对于那些寻求帮助的导师或专家来说非常重要。长期得不到解决的问题会令人沮丧;黑客们渴望看到问题得到解决。好人有好报,满足他们的欲望,下次再发新问题你就尝到甜头了。
-还是不明白
如果你不太明白答案,不要马上要求对方解释。像以前尝试自己解决问题时那样理解问题(使用手册、常见问题解答、互联网、身边的专家)。如果你真的需要一个解释,记得表明你学到了东西。比如我回答你“好像zEntry被屏蔽了;你应该先清除它。”然后:一个糟糕的后续问题:“zEntry是什么?”一个巧妙的问题应该是这样的:“哦~ ~ ~我看到了帮助,但是只有两个参数-z和-p提到了zEntry并且还没有明确的解释:
三思而后问。
以下是一些经典的愚蠢问题,以及黑客拒绝回答这些问题时的想法:
问题:在哪里可以找到X程序?
问题:我的程序/配置/SQL语句没用。
问题:我的窗户有问题。你能帮我吗?
问题:我在安装Linux(或X)时遇到了问题。你能帮我吗?
问题:如何破解root账号/窃取OP权限/看别人邮件?
问题:在哪里可以找到X程序?
回答:就在我找到的地方,傻逼——搜索引擎的另一边。我的天啊!有不会用谷歌的人吗?
问题:我的程序(配置,SQL语句)没用。
回答:不是问题。我对找出你真正的问题不感兴趣——如果我必须问你二十个问题才能找到——我有更有趣的事情要做。
看到这类问题,我的反应通常不外乎以下三种:
1.你有什么要补充的吗?
那太糟糕了,我希望你能修理它。
3.这跟我有什么关系?
问题:我的窗户有问题。你能帮我吗?
回答:可以,扔掉软垃圾,转Linux。
问题:我在安装Linux(或X)时遇到了问题。你能帮我吗?
回答:没有,我只能亲自动手在你的电脑上找问题。请到您当地的Linux用户组获取实践指导(您可以在这里找到用户组列表)。
问题:如何破解root账号/窃取OP权限/看别人邮件?
回答:如果你想这么做,你就是一个卑鄙的人;找黑客帮你说明你是个θ θ θ θ!
好问题,坏问题
最后,我举一些例子来说明如何聪明地提问;两种问同一个问题的方式放在一起,一种是愚蠢的,一种是明智的。
愚蠢的问题:哪里可以找到关于foonly fluent的资料?
//这个问题无非是一个类似“STFW”的回答。
聪明的问题:我用谷歌搜索了“foonly fluent 2600”,没有找到有用的结果。谁知道在哪里可以找到这种设备的编程信息?
//这个问题已经被STFW通过了,看来他真的遇到麻烦了。
蠢问题:我从FOO项目得到的源代码无法编译。为什么这么糟糕?
//他觉得都是别人的错,这个自大的家伙。
聪明的问题:FOO项目代码在Nulix 6.2下无法编译。我看过FAQ,但是里面没有关于Nulix的内容。这是我编译过程的记录。我做错了什么吗?
//他解释了环境,看了FAQ,指出了错误,也没有因为问题责怪别人。这家伙值得关注。
蠢问题:我的主板有问题。谁来帮我?
//常见的黑客对这类问题的回答通常是:“好的,我要不要拍拍你的背,给你换尿布?”,然后按delete键。
智能问题:我在S2464主板上试了X,Y,Z,都不行。我又试了A,B,C。请注意我试c时的奇怪现象,明明边带传输有收缩,结果却出乎意料。多处理器主板边带泄漏的常见原因是什么?谁有好主意?接下来要做哪些检查才能查出问题?
//这个家伙,从另一个角度来说,值得回答。他表现出了解决问题的能力,而不是等待答案从天而降。
最后一个问题,注意“告诉我答案”和“开导我,指出我在诊断中还应该做些什么”之间微妙而重要的区别其实,后一个问题源于2001年8月Linux内核邮件列表上的一道真题。我(埃里克)是问这个问题的人。我在Tyan S2464主板上观察到了这种无法解释的锁定现象,列表成员提供了解决该问题的重要信息。
通过我的提问方式,给了你一些值得深思的东西;我让人们很容易参与并被吸引。我展示了我和他们一样的能力,并邀请他们和我一起讨论。我告诉他们我为了不让他们浪费时间而走的弯路。这是对他人时间价值的一种尊重。后来,当我感谢大家,赞赏这个程序运行得非常好的时候,Linux内核邮件列表(lkml)的一个成员说,问题得到解决不是因为我是这个列表中的“名人”,而是因为我用正确的方式提问。我们黑客,从某种角度来说,是知识丰富但缺乏人情味的家伙;我相信他是对的。如果我像乞丐一样提问,不管我是谁,肯定会惹恼一些人,或者被他们无视。他建议我把它写下来,给写这个指南的人一些指导。
找不到答案怎么办?
如果你还是得不到答案,请不要以为我们帮不了你。有时候看到你问题的人就是不知道答案。不回应并不代表你被忽视,虽然不可否认这种区别很难区分。
总的来说,简单地重复发帖问题是一个坏主意。这将被视为无意义的噪音。
你可以通过其他渠道获得帮助,这些渠道通常更适合新手。有很多在线和本地的用户群,都是由热情的软件爱好者组成的(即使他们自己可能从来没有写过什么软件)。通常人们组成这样的团体是为了互相帮助,帮助新手。
此外,你可以向许多商业公司寻求帮助,无论这些公司是大是小(Red Hat和LinuxCare是两个最常见的例子)。不要沮丧你必须付钱才能得到帮助!毕竟,如果你的汽车发动机的气缸密封圈爆裂了——这是完全可能的——你必须把它送到车库,并支付修理费。即使软件不花你一分钱,你也不能坚持技术支持永远免费。
对于流行的软件,像Linux,每个开发者至少会有几万个用户。一个人不可能处理几万个用户的求助电话。要知道,即使你要付费求助,你所付出的与你要购买的同类软件相比也是微不足道的(通常闭源软件的技术支持成本远高于开源软件,内容也没有那么丰富)。
我个人的原则是一行之内的问题不再回答,比如‘有人懂JSP吗?我只读题目之类的问题。