十分有用的文章,希望每一个程序员都能看一看,学习下提问的智慧。欢迎大家留言讨论。 本文中的“黑客”是指优秀的程序员。
提问须知:
提问之前:
如何提问:1. 谨慎选择提问的场合
别像机关枪似的一次性“扫射”所有的帮助渠道,这就像大喊大叫一样会令人不快,温柔地一个一个来。 2. 用词精确,语法正确,拼写无误,标点符号无误经验:粗心的写作者通常也是马虎的思考者 如何是非母语的论坛提问,可以犯拼写和语法上的小错,但绝不能再思考上马虎【这个回答者会很清楚哒~~~】 同时,除非你知道回答者使用的语言,否则请使用英语书写。在互联网上英语是工作语言,用英语书写可以将你的问题不被阅读就被直接删除的可能性降到最低。 3. 使用含义丰富,描述精确的标题放弃用“帮帮忙”,“救命啊”这种让人反感的话来描述。 错误示例 4. 精确有物得描述,尽可能多提供信息尽量想象黑客会怎样反问你,提问的时候预先给出答案 强烈推荐你看一下 如何有效地报告 Bug 5. 简化问题提供精确有效的资讯,同时尽可能精简裁剪你的问题
6. 明确事实和猜测要设法搞清什么是事实(例如:“我在电脑旁”和“XX出现了”)什么是推测(例如:“我想问题可能是出在……”)。 可以加上自己的猜测,但是一定要确定明确清晰的描述了问题症状 7. 按照时间顺序列出症状也就是重现步骤 按照时间顺序,说明每一步执行了什么操作,电脑的反应是什么。 8. 优化问题的结构:明确表述需要得到什么帮助定出一个时间和精力的上限,便于回答者集中精力来帮助你。(提供建议,发送一段代码,检查补丁,或者是别的) 要理解专家们生活的世界,要把专业技能想像成充足的资源,而回复时间则是贫乏的资源——尽可能减少专家们解决问题需要的时间。解决你的问题需要的时间越少,越能从从忙碌的专家口中掏出答案。 “你能解释一下xx吗?” 对于问题代码,寻求别人提示,比要求别人替你修改要明智 9. 去除无意义的疑问别用无意义的话结束提问。例如:“有人能帮我吗?”、“有答案吗?”
10. 表明愿意在找答案的过程中做点什么这样会增加你得到有效回复的概率。因为你表现出了只要有人指点正确的方向,你就有完成它的能力和决心。“谁能给点提示?”,“我这个例子缺了什么?”,“我应该检查了什么地方?”比“请把确切的过程贴出来”更容易得到答复 11. 代码类如何提问要求他人给你出问题的代码排错的时候,不应该贴出几百行的代码,然后只说“它不能运行”,毫不提及应该从何入手。而是,只贴几十行代码,然后说一句“在第七行以后,本应该显示<x>,但实际出现的是<y>”,才会非常有可能让你得到回复。 最精确描述代码问题的方法是提供一个能展示问题的最小测试样例。、 什么是最小测试样例?它是对问题的展现,只需要刚好能够重现非预期行为的代码即可。 如何生成一个最小测试样例?如果你知道哪一行或哪一段代码会产生问题,将其复制并提供刚好够用的外围支撑代码以构成一个完整的样例(够用是指源码刚好能被编译器、解释器或任何处理它的程序所接受)。如果你不能将问题缩小到特定的段落,复制源码并去除那些与问题无关的代码段。你能提供的最小测试样例越小越好 12. 保持谦逊礼貌感恩多用“请”,“先道个谢啦”,“多谢帮忙解决” 13. 问题解决后,加以简单说明除非结论很有技术含量,否则补充说明不必很长或很深入 如果可以,尽量说明问题是怎么解决的。
14. 还是不懂问题答案先按照自己解决问题是那样(手册,FAQ,搜索,身边高手)去理解答案。 如果真的需要对方解释,记得表现出你已经学习到了什么。 例如: 附录三思而后问——谨慎不要触到雷区以下是几个景点蠢问题,以及黑客在拒绝回答时的心中所想.
.
.
.
.
好问题 VS 坏问题举例说明怎样是从好的提问 坏问题:我在哪可以找到关于 坏问题:我从FOO项目找来的源码无法编译。它怎么这么烂?【他觉得都是别人的错,这家伙真是傲慢无礼】 RTFM和STFW:别烦我啦“ RTFM有一个年轻的亲戚。“ 通常,用这两句之一回答你的人会给你一份包含你需要內容的手册或者一个网址, 别为这个不爽。依照黑客的标准,他能回复你就代表某种关注,你应该感谢他热切地想要帮助你。 |
|