首页 > 代码库 > 提问的艺术(中文版)

提问的艺术(中文版)

在**世界里,当提出一个技术问题时,你能得到如何的回答?这取决于挖出答案的难度, 相同取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案……

不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完毕他们应该做的事。这样的人仅仅会谋杀时间--他们仅仅愿索取,从不付出,无端消耗我们的时间,而我们本能够把时间用在更有趣的问题或者更值得回答的人身上。我们称这样的人为“失败者”(由于历史原因,我们有时把它拼作“lusers”)。

提问之前(Before You Ask)

在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到:
1. 通读手冊,试着自己找答案。
2. 在FAQ里找答案(一份维护得好的FAQ能够包罗万象:)。
3. 在网上搜索(个人推荐google~~~)。
4. 向你身边精于此道的朋友打听。

当你提出问题的时候,首先要说明在此之前你干了些什么;这将有助于树立你的形象:你不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间。假设提问者能从答案中学到东西,我们更乐于回答他的问题。

周全的思考,准备好你的问题,草率的发问仅仅能得到草率的回答,或者根本得不到不论什么答案。越表现出在寻求帮助前为解决这个问题付出的努力,你越能得到实质性的帮助。

小心别问错了问题。

还有一方面,表明你愿意在找答案的过程中做点什么,是一个非常好的开端。“谁能给点提示?”、“我这个样例里缺了什么?”以及“我应该检查什么地方?”比“请把确切的过程贴出来”更easy得到答复。由于你显得仅仅要有人指点正确的方向,你就有完毕它的能力和决心。

如何提问 (When You Ask)

慎重选择论坛

小心选择提问的场合。假设象以下描写叙述的那样,你非常可能被忽略掉或者被看作失败者:
1. 在风马牛不相及的论坛贴出你的问题
2. 在探讨高级技巧的论坛张贴非常0基础的问题;反之亦然
3. 在太多的不同新闻组交叉张贴

用辞贴切,语法正确,拼写无误

我们从经验中发现,粗心的写作者通常也是马虎的思考者(我敢打包票)。

回答粗心大意者的问题非常不值得,我们宁愿把时间耗在别处。

正确的拼写,标点符号和大写和小写非常重要。

更一般的说,假设你的提问写得象个半文盲,你非常有可能被忽视。

假设你在使用非母语的论坛提问,你能够犯点拼写和语法上的小错--但决不能在思考上马虎 (没错,我们能弄清两者的分别)

使用含义丰富,描写叙述准确的标题

在邮件列表或者新闻组中,大约50字以内的主题标题是抓住资深专家注意力的黄金时机。别用喋喋不休的“帮帮忙”(更别说“救命啊!!!!!”这样让人反感的话)来浪费这个机会。不要妄想用你的痛苦程度来打动我们,别用空格取代问题的描写叙述,哪怕是极其简短的描写叙述。

蠢问题:

救命啊!我的膝上机不能正常显示了!

聪明问题:

XFree86 4.1下鼠标光标变形,Fooware MV1005的显示芯片。

假设你在回复中提出问题,记得要改动内容标题,表明里面有一个问题。一个看起来象“Re :測试”或者“Re:新bug”的问题非常难引起足够重视。另外,引用并删减前文的内容,给新来的读者留下线索。

精确描写叙述,信息量大

1. 慎重明白的描写叙述症状。
2. 提供问题发生的环境(机器配置、操作系统、应用程序以及别的什么)。
3. 说明你在提问前是如何去研究和理解这个问题的。
4. 说明你在提问前採取了什么步骤去解决它。
5. 罗列近期做过什么可能有影响的硬件、软件变更。

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

话不在多

你须要提供精确有效的信息。这并非要求你简单的把成吨的出错代码或者数据全然转储摘录到你的提问中。假设你有庞大而复杂的測试条件,尽量把它剪裁得越小越好。

这样做的用处至少有三点。第一,表现出你为简化问题付出了努力,这能够使你得到回答的机会添加;第二,简化问题使你得到实用答案的机会添加;第三,在提炼你的bug报告的过程中,或许你自己就能找出问题所在或作出更正。

蠢问题:

我在内核编译中一次重新遇到SIG11错误,我怀疑某条飞线搭在主板的走线上了,

这样的情况应该如何检查最好?

聪明问题:

我自制的一套K6/233系统,主板是FIC-PA2007 (VIA Apollo VP2芯片组),256MB
Corsair PC133 SDRAM,在内核编译中频频产生SIG11错误,从开机20分钟以后就有这样的情况,开机前20分钟内从没发生过。重新启动也没实用,可是关机一晚上就又能工作20分钟。全部内存都换过了,没有效果。相关部分的典型编译记录例如以下...。

按时间顺序列出症状

对找出问题最有帮助的线索,往往就是问题发生前的一系列操作,因此,你的说明应该包括操作步骤,以及电脑的反应,直到问题产生。

假设你的说明非常长(超过四个段落),在开头简述问题会有所帮助,接下来按时间顺序详述。这样就会让人知道该在你的说明中找什么。

明白你想问什么

漫无边际的提问近乎无休无止的时间黑洞。最能给你实用答案的人也正是最忙的人(他们忙是由于要亲自完毕大部分工作)。这样的人对无克制的时间黑洞不太感冒,因此也能够说他们对漫无边际的提问不大感冒。 假设你明白表述须要回答者做什么(提供建议,发送一段代码,检查你的补丁或是别的),就最有可能得到实用的答案。这会定出一个时间和精力的上限,便于回答者集中精力来帮你,这非常凑效。

解决你的问题须要的时间越少,越能从忙碌的专家口中掏出答案。 因此,优化问题的结构,尽量降低专家们解决它所须要的时间,会有非常大的帮助--这通常和简化问题有所差别。因此,问“我想更好的理解X,能给点提示吗?”通常比问“你能解释一下X吗?”更好。假设你的代码不能工作,问问它有什么地方不正确,比要求别人替你改动要明智得多。

别问应该自己解决的问题

这些问题得由你来搞定,你会从中学到东西。你能够要求给点提示,但别要求得到完整的解决方式。

去除无意义的疑问

别用无意义的话结束提问,比如“有人能帮我吗?”或者“有答案吗?”。

首先:假设你对问题的描写叙述不非常合适,这样问更是画蛇添足。其次:由于这样问是画蛇添足,别人会非常厌烦你--并且一般会用逻辑上正确的回答来表示他们的蔑视,比如:“没错,有人能帮你”或者“不,没答案”。

谦逊绝没有害处,并且常帮大忙

彬彬有礼,多用“请”和“先道个谢了”。让大家都知道你对他们花费时间义务提供帮助心存感激。

然而,假设你有非常多问题无法解决,礼貌将会添加你得到实用答案的机会。

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

问题解决后,向全部帮助过你的人发个说明,让他们知道问题是如何解决的,并再一次向他们表示感谢。假设问题在新闻组或者邮件列表中引起了广泛关注,应该在那里贴一个补充说明。补充说明不必非常长或是非常深入;简单的一句“你好,原来是网线出了问题!谢谢大家--Bill”比什么也不说要强。其实,除非结论真的非常有技术含量,否则简短可爱的小结比长篇学术论文更好。说明问题是如何解决的,但大可不必将解决这个问题的过程复述一遍。

除了表示礼貌和反馈信息以外,这样的补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方式,这可能对他们也非常实用。

最后(至少?),这样的补充有助于全部提供过帮助的人从中得到满足感。这样的感觉对于那些你向他们求助的导师或者专家而言,是非常重要的。问题久拖未决会让人灰心;好人有好报,满足他们的渴望,你会在下次贴出新问题时尝到甜头。 

提问的艺术(中文版)