学会提问的前提是会向自己提问
1. 小黄鸭调试法
程序员和他的小黄鸭花了一下午(或一天)在试图解决某个 Bug,后来才知道解决方案很简单,当时就是没有想到。
有个同事正好路过,看到你愁眉苦脸的,问你“怎么了呀?”
“噢,是这样的。我遇到了一个问题,点击这个控件的时……” 当你正准备和同事详细解释的时候,突然灵光一现,你话都没说完,就中断了和同事的倾诉,继续干活了。
同事微微一笑,又走开了。他并没有怪你。
相信大家都有类似的经历。遇到 Bug/问题被卡住了,拉个人过来,和他 blablabla 讲了一通,很多时候中途你就找到了解决办法。有时候,并不一定要和人倾诉,还可以像其他东西倾诉,强迫自己把遇到的问题,详细地解释出来(一定要说出来)。其实呢。这种方法,有一个术语:小黄鸭调试法(Rubber Duck Debugging)。
2.先给自己做一些准备工作
在你准备要通过电子邮件、新闻群组或者聊天室提出技术问题前,请先做到以下事情:
- 尝试在你准备提问的论坛的旧文章中搜索答案。
- 尝试上网搜索以找到答案。
- 尝试阅读手册以找到答案。
- 尝试阅读常见问题文件(FAQ)以找到答案。
- 尝试自己检查或试验以找到答案。
- 向你身边的强者朋友打听以找到答案。
- 如果你是程序开发者,请尝试阅读源代码以找到答案。
当你提出问题的时候,请先表明你已经做了上述的努力;这将有助于树立你并不是一个不劳而获且浪费别人的时间的提问者。如果你能一并表达在做了上述努力的过程中所学到的东西会更好,因为我们更乐于回答那些表现出能从答案中学习的人的问题。
重头来了,关于如何提问
- 确定自己没办法解决问题前,开始找相应的网站,如主题贴合的论坛
可以选择在stack exchange问
- 常用网站有:super user(电脑问题)、stack overflow(写程序)、server fault(服务器和网管) 网站和IRC论坛等
- 使用项目邮件列表
-
标题最好用“目标-差异”的形式呈现问题,并在提问的时候注意语句的正确
-
精确地描述问题: 仔细、清楚地描述你的问题或 Bug 的症状。 如描述问题发生的环境(机器配置、操作系统、应用程序、以及相关的信息),提供经销商的发行版和版本号(如:Fedora Core 4、Slackware 9.1等)。
-
注意描述你自己在提问前是怎样去研究和理解这个问题的和为确定问题而采取的诊断步骤。
-
描述最近做过什么可能相关的硬件或软件变更。 尽可能的提供一个可以重现这个问题的可控环境的方法。
-
描述问题而不是说出猜测,并尽量按时间顺序列出问题的症状
-
描述目标而不仅仅是过程
附上一本实用教材
提问的智慧
网友评论