哭唧唧,看了南大的文档,觉得自己之前提问都是傻瓜式提问,记录一下如何正确的提问,力争在尽量少花费别人时间的同时尽快解决自己的问题,参考链接如下:
一、在提问之前?
在你准备要通过电子邮件、新闻群组或者聊天室提出技术问题前,请先做到以下事情:
- 尝试在你准备提问的论坛的旧文章中搜索答案。
- 尝试上网搜索以找到答案。
- 尝试阅读手册以找到答案。
- 尝试阅读常见问题文件(FAQ)以找到答案。
- 尝试自己检查或试验以找到答案。
- 向你身边的强者朋友打听以找到答案。
- 如果你是程序开发者,请尝试阅读源代码以找到答案。
二、当你提问时?慎选提问的论坛
(1)小心选择你要提问的场合。如果你做了下述的事情,你很可能被忽略掉或者被看作失败者:
- 在与主题不合的论坛上贴出你的问题。
- 在探讨进阶技术问题的论坛张贴非常初级的问题;反之亦然。
- 在太多的不同新闻群组上重复转贴同样的问题(cross-post)。
- 向既非熟人也没有义务解决你问题的人发送私人电邮。
(2) 如何描述问题?记住,给别人的条件越多,你的问题解决越快。因为这不是解密游戏。
- 请问一个关于
什么
的问题。 - 我想要达到
什么样
效果,但是我这样做出现了什么样
的问题。 - 报错日志是
这样
的。(要学会
画关键字) - 我尝试过
什么
方法来解决。 - 我尝试搜索过了
什么
关键字,在里面找到了这些 URL
的回答,尝试了还是没有解决问题。 - 我用的是
什么
操作系统,版本号是多少。 - 我用的是
什么
软件,版本号是多少。 - 谢谢
举个例子:
我的程序在xxx的情况下段错误了, 我进行了以下尝试
* 首先我做了aaa, 现象是AAA, 我得到的结论是XXX
* 然后我做了bbb, 现象是BBB, 我得到的结论是YYY
* 我还做了ccc, 现象是CCC, 我得到的结论是ZZZ
综上, 我觉得问题可能出在yyy, 但我接下来没有思路了, 我的分析和理解是否正确? 或者我忽略了什么吗?
(3)其它tips!下面看完大有脾益,前面的需要提问时灵活应用
- Stack Overflow
- 网站和 IRC 论坛
- 第二步,使用项目邮件列表
- 使用有意义且描述明确的标题
- 使问题容易回复
- 使用清晰、正确、精准且合乎语法的语句
- 使用易于读取且标准的文件格式发送问题
- 精确地描述问题并言之有物
- 话不在多而在精
- 别动辄声称找到 Bug
- 低声下气不能代替你的功课
- 描述问题症状而非你的猜测
- 按发生时间先后列出问题症状
- 描述目标而不是过程
- 别要求使用私人电邮回复
- 清楚明确的表达你的问题以及需求
- 询问有关代码的问题时
- 别把自己家庭作业的问题贴上来
- 去掉无意义的提问句
- 即使你很急也不要在标题写紧急
- 礼多人不怪,而且有时还很有帮助
- 问题解决后,加个简短的补充说明
三、一些关于“好的提问”以及“通过STFW和RFTW独立解决问题”的看法
(1)“好的提问”
可以理解为用最精炼的文字和图片,向对方阐述明白一个事情的来龙去脉。即:
“您好!我遇到了什么问题,我预期的效果,遇到问题的报错日志,我为此尝试过什么方法(包括在哪些网址搜过哪些网址,试过哪些url方案,最后说明自己OS的版本,用的工具版本,谢谢!)”
按照笔者个人经验,在实验结果不理想时,记录该实验结果,并记录你尝试探索结果不理想的所有方案,方便你回顾检查整个实验过程中是否有漏洞,此外在向别人求助时能够较为清晰地阐述你遇到的问题以及已经为之作出的努力。这将有助于树立你并不是一个不劳而获且浪费别人的时间的提问者,他们能从你的提问看出你做了多少阅读与思考,如果你是有备而来,将更有可能得到解答。
(2)STFW, RTFM, RTFSC
RTFM(Read The Fucking Manual),回答者认为你应该去读他妈的手册
STFW(Search The Fucking Web),回答者认为你应该到他妈的网上搜索
RTFSC(Read The Fucking Source Code),回答者认为你应该去读他妈的源码
此时你的问题多半比较简单,或者非常容易获得,你自己去搜索这些信息比灌给你,能让你学到更多。事实上,靠自己去挣到一个答案,并提出有内涵的、有趣的、有思维激励作用的问题,而不是被动地从他人身上获取知识(大部分人都是后者),可以培养独立思考的能力,加强自主学习的技巧,以及发展创新的潜力。