在做技术的过程中,难免遇到各种各样的问题,这时候就需要通过各种方式来解决,其中求助有经验的人是一个非常便捷有用的方式,但是如何提问才能得到自己想要的答案呢?
有经验的大佬和高手更倾向于向真心学习和想要进步的新手们传递经验。综合全篇文章来看,就是在讲两方面。
-
端正自己的学习态度,真正地热衷技术并尝试解决遇到的问题。
-
在向他人求助时,以合适的措辞表达自己求知的意愿和问题信息。
好的提问
读完这两篇文章,我认为好的解决问题途径应当是这样子的:
遇到问题,所谓提问只是解决问题过程中的一环。我认为更广义上的解决问题主要是下面三个部分的交叉循环(三板斧)。
-
尝试自己审视错误
联系自己学习过的知识和此前的经验,尝试理解报错信息和程序崩溃的原因。
这个过程应当与下面的过程交叉进行。
-
上网搜索相关信息
-
在合适的论坛上提问,是否合适可以留意一下论坛上之前的问题。比如自由互联中的问题比较偏向前端,csdn上的问题鱼龙混杂。
-
习惯在StackOverflow上提问,此前我也遇到过一些比较棘手的问题,最终就是在这个网站上得到解决的。很多英文报错都有对应的解答,适应看英文就好。
PS:阅读《提问的智慧》我才知道,StackOverflow只是Stack Exchange的一个网站:
-
Super User 是问一些通用的电脑问题,如果你的问题跟代码或是写程序无关,只是一些网络连线之类的,请到这里。
-
Stack Overflow 是问写程序有关的问题。
-
Server Fault 是问服务器和网管相关的问题。
-
-
-
求助
-
端正自己的求助态度。没有人有义务帮助自己解决问题。要学会感谢帮助自己的人。
-
如果是开源项目,可以向开发者发邮件。注意是要向列表提问(即开发者团队的邮件)
-
要描述清楚自己的问题,需要包含一些关键信息:
-
哪方面的问题。
-
本来想达到什么效果,出现了什么问题。
-
报错信息,突出关键字。如果报错是一系列的,可以根据时间先后都列出来。
-
已经尝试过了什么方法。
注意不是自己的猜测,自己的猜测会误导别人。尽量客观的描述问题,可以用自己的猜测先排除错误看看。
-
搜索过哪些关键字。
-
操作系统与软件的版本号。
-
尽量杜绝无意义的词汇。把问题本身和谢谢说完就行了。
-
注意自己提问的语法、拼写和大小写(如果用英语)。
English is not my native language; please excuse typing errors.
但现在软件翻译那么多。这个问题不大。
-
在通过提问解决问题的过程中,每一步遇到问题不要立刻找大佬解决,尝试自己先解决一下。
总之提问过程中要体现自己的思考,这种态度才会让大佬继续帮助自己。
-
解决问题后,在帖子最后说明情况,或者给所有帮助过自己的人发一个说明。也可以自己写一个博客进行记录。提高网络搜索的可复用性。
-
-
即通过STFW、RTFM和RFTSC独立解决问题。
-
RTFM(Read The Fucking Manual)
,回答者认为你应该去读说明手册。 -
STFW(Search The Fucking Web)
,回答者认为你应该到网上搜索。(http://lmgtfy.com/ 哈哈,let me google for you)。 -
RFTSC(Read The Fucking Source Code.)
,回答者认为你应该去阅读源代码。
这基本就是独立解决问题的三个策略,大佬与我们的差距也就是独立解决问题能力上的差距;因此我们总在请教大佬,而大佬总是那个解决问题的人。
因此,对于本文的标题而言,科学的提问其实也是学会不提问——自己解决问题,必要时合理地请教别人。
当我要回答问题-
态度要和善。
-
不要给提问者乱指路,如果不确定要说出来。
-
用试探性的反问引导提问者提出一个好问题。
-
授人以鱼不如授人以渔。
-
解决问题后,留下可供网络搜索复用的答案。
-
尽量展示解决问题的思路和过程。
事实上我对以上这些感受还是挺深刻的。因为去年我参加了一个组织的考核,期间遇到了各种各样的麻烦,难免要询问有经验的学长,在网络上搜索相关的答案,试着看看各种各样的报错信息。在这个过程中,感觉真正地学着分析问题、解决问题。