今天来给大家聊一聊 Stack Overflow,Stack Overflow 是什么呢?
什么是 Stack Overflow?
Stack Overflow 是一个全球最大的技术问答网站,作为一个程序员不得不知的网站。程序员可以在上面进行提出问题,别的程序员会免费帮大家解答这个问题。
然后这个问题还可以被打分,比如说顶,这个问题就会被顶上去,就会被更多人搜索到,基本上遇到的问题都可以在 Stack Overflow 上找到答案,所以很少会去 Stack Overflow 上进行提问,但是提问问题作为一个程序员基本技能,还是要聊一聊的。
如何优雅地提问?
在你准备要提出技术问题前,请先做到以下事情:
- 尝试在你准备提问的论坛的旧文章中搜索答案。
- 尝试上网搜索以找到答案。
- 尝试阅读手册以找到答案。
- 尝试阅读常见问题文件(FAQ)以找到答案。
- 尝试自己检查或试验以找到答案
- 向你身边的大佬打听以找到答案。
- 如果你是程序开发者,请尝试阅读源代码以找到答案。
当你提出问题的时候,请先表明你已经做了上述的努力;这将有助于树立你并不是一个不劳而获且浪费别人的时间的提问者。如果你能一并表达在做了上述努力的过程中所学到的东西会更好,因为我们更乐于回答那些表现出能从答案中学习的人的问题。
在了解了上面的内容后,接下来,我们来看一下提问的三要素:
- 环境描述:操作系统,JDK 版本,软件/工具版本等可能和问题相关的信息
- 问题描述:描述要解决的问题和思路。可能要解决的问题或者思路本身就有问题。如果问题和程序执行的错误有关,则要把错误信息描述详尽,包括 exception trace 等
- 代码+配置:和问题可能相关的代码和配置
我认为在 Stack Overflow 上提问的核心:
要自己先思考,先尝试解决。问题要清晰明了有条理,要让想回答的人能够重现所说的问题。而不是甩手掌柜一样不清不楚的问:XX 应该怎么搞?XX 应该怎么弄?XX 程序运行出错怎么改?像这种一句话的提问,一般不会有人想去回答,被人踩几下,这个问题就消失了。
提问/回答笔记
提问:
- In my limited experience with .. 谦虚表达自己在某方面的经验
- I am searching for a long time on net. But no use. Please help or try to give some ideas how to achieve this. 找了很久未果,求助攻
- after searching around for a decent XX solution and found that everything out there was difficult to use. 找了N种方法都发现太TM难了。
- I' ve looked around and apparently I've got the choice between these libraries/ solutions: 说明自己是努力搜索过的,然后目前有了哪几种方案
- which seems it's a promising solution. 看起来是一个好解决方案
- I' ve tried multiple variations of this, but none of them seem to work. Any ideas? 试了很多种方法都无效,求助
- Wanted to know if it's good practice to do that and what would be the best way to do that? 我的做法是否正确,是否有更好的法子?
- Thanks in advance. 先行谢过
回答问题:
- If I understand you correctly, you want to xxx 如果我没理解错,你想。。
- Could you provided more details about your use case ? Can you provide more xml and code setting the url ? 提供更详细
当别人回答你的问题后,你对回答的评论:
Thank you for your answer sincerely 感谢回答
总结
提问问题是程序员的基本技能,如何能够更好地去提问需要我们在一次次的提问中成长,把英文学好也是不可或缺的,不仅在 Stack Overflow 上提问如此,好多框架的博客都是英文写的,因此大家可以多多阅读外文博客,逐步提高自己的英语水平。
参考
How To Ask Questions The Smart Way
如何优雅地使用 Stack Overflow?