在ThoughtWorks训练营学习JS前学到的一个很实用很有意义的issue就是学会如何提问。
How To Ask Questions The Smart Way
1.提问之前
- 提问之前做好充足的功课
- 尝试在你准备提问的论坛的旧文章中搜索答案。
- 尝试上网搜索以找到答案。
尝试阅读手册以找到答案。- 尝试阅读常见问题文件(FAQ)以找到答案。
- 尝试自己检查或试验以找到答案
- 向你身边的强者朋友打听以找到答案。
- 如果你是程序开发者,请尝试阅读源代码以找到答案。
- 尝试小黄鸭调试法来寻找解决问题的灵感。
绝不要自以为够格得到答案,你没有;你并没有。毕竟你没有为这种服务支付任何报酬。你将会是自己去挣到一个答案,靠提出有内涵的、有趣的、有思维激励作用的问题 --一个有潜力能贡献社区经验的问题,而不仅仅是被动的从他人处索取知识。
另一方面,表明你愿意在找答案的过程中做点什么是一个非常好的开端。谁能给点提示?、我的这个例子里缺了什么?以及我应该检查什么地方比请把我需要的确切的过程贴出来更容易得到答复。因为你表现出只要有人能指个正确方向,你就有完成它的能力和决心
2.当提问时
-
选择合适的提问论坛
选择主题相关的,难度符合网站要求的论坛提问。
- http://segmentfault.com - 技术类问答网站(国内)
- https://stackoverflow.com - 技术类问答网站(国外)
- 使用描述明确的标题
一个好标题范例是目标 -- 差异式的描述
在目标部分指出是哪一个或哪一组东西有问题,在差异部分则描述与期望的行为不一致的地方.
如果你想在回复中提出问题,记得要修改内容标题,以表明你是在问一个问题.
- 精确描述问题,并使问题易于回复
- 仔细、清楚地描述你的问题或 Bug 的症状。
- 描述问题发生的环境(机器配置、操作系统、应用程序、以及相关的信息),提供经销商的发行版和版本号(如:Fedora Core 4、Slackware 9.1等)。
- 描述在提问前你是怎样去研究和理解这个问题的。
- 描述在提问前为确定问题而采取的诊断步骤。
- 描述最近做过什么可能相关的硬件或软件变更。
- 尽可能的提供一个可以重现这个问题的可控环境的方法。
用清晰、正确、精准并语法正确的语句。
描述问题症状而非你的猜测。
按发生时间先后列出问题症状。
描述目标而不是过程。
有效描述程序问题的方法是提供最精简的 Bug 展示测试用例(bug-demonstrating test case)。
3.提问后
- 解决问题后加简短补充说明
- 如果你看不懂回应,别立刻要求对方解释。像你以前试着自己解决问题时那样(利用手册,FAQ,网络,身边的高手),先试着去搞懂他的回应。如果你真的需要对方解释,记得表现出你已经从中学到了点什么。
4.一些问题的例子
蠢问题:
我可以在哪儿找到关于 Foonly Flurbamatic 的资料?
这种问法无非想得到 STFW 这样的回答。
聪明问题:
我用 Google 搜索过 "Foonly Flurbamatic 2600",但是没找到有用的结果。谁知道上哪儿去找对这种设备编程的资料?
这个问题已经 STFW 过了,看起来他真的遇到了麻烦。
蠢问题
我从 foo 项目找来的源码没法编译。它怎么这么烂?
他觉得都是别人的错,这个傲慢自大的提问者。
聪明问题
foo 项目代码在 Nulix 6.2 版下无法编译通过。我读过了 FAQ,但里面没有提到跟 Nulix 有关的问题。这是我编译过程的记录,我有什么做的不对的地方吗?
提问者已经指明了环境,也读过了 FAQ,还列出了错误,并且他没有把问题的责任推到别人头上,他的问题值得被关注。
蠢问题
我的主机板有问题了,谁来帮我?
某黑客对这类问题的回答通常是:好的,还要帮你拍拍背和换尿布吗?
,然后按下删除键。
聪明问题
我在 S2464 主机板上试过了 X 、 Y 和 Z ,但没什么作用,我又试了 A 、 B 和 C 。请注意当我尝试 C 时的奇怪现象。显然 florbish 正在 grommicking,但结果出人意料。通常在 Athlon MP 主机板上引起 grommicking 的原因是什么?有谁知道接下来我该做些什么测试才能找出问题?