Loading... # How To Solve Question The Smart Way 可能有人已经看出来,这篇文章的一级标题与[《提问的智慧》](http://www.catb.org/~esr/faqs/smart-questions.html)几乎一致。确实,这篇文章的主题之一还是如何提问,但会偏向如何解决自己的问题。当然,《提问的智慧》中许多表述到如今早已过时,所以我会尝试去描述一个更加接近现代的问题解决方法。 ## 说明 这是一篇指南。我只能够描述我所熟悉的领域(计算机相关)的解决问题思路,对于其它领域,可能我的思路并不适用。 顺便,像《提问的智慧》(下文将其称为“提问指南”)的前置声明一样——我是本文作者,但我没有任何义务帮助你解决任何问题。 ## 正文 遇到问题时,首先考虑的应该是如何自己去解决它。如“提问指南”中提到的,大多数人对于那些不愿思考的发问者都会持有一种蔑视的态度——他们只想索取,从不付出。如果一个问题很大一部分是你可以解决的,那么过早去寻求他人的帮助无异于是在浪费他人时间。请尊重他人在回答你的问题时所花费的时间。 大多数人都会乐意与你平等地交流,这与你的技术水平无关,但是会取决于你是否表现出了某些特征——有想法、乐于观察、主动……这些特征会让他人在与你交流时感到舒适。 ### 自行解决问题的思路 码农最常遇到的问题是:“这个函数该咋用?” 对于一些热门的、活跃的项目来说,出现这个问题原因可能是你没有仔细阅读文档(英文:Document,指的是诸如*Javadoc*这类描述代码使用方式的网站。)在这种情景下,如果你提出一个这样的问题,可能会有人跟你说:“RTFM”或是“STFW”,也就是“你TM不会读说明书?”、“你TM不会去百度?”。注意网站上的*FQA*中可能有解决你问题的方案。 当然,一些萌新可能会不知道从何处寻找自己所需要的文档。按理说,大学应该教会学生“如何检索信息”。但显然,一些人并没有学会。不过没关系,最简单办法的就是利用搜索引擎了。以Google为例(无法访问的可以使用百度、Bing等),请直接在搜索框中输入“关键词1 关键词2 关键词3”并按下你的回车键(通常在Shift键上方,又叫Enter键。)。当然我并不是在质疑现代搜索引擎的分词能力,只是手动分开能得到最好的效果。 这里给出一个示范,如果我们需要查询Django框架的文档,我们只要直接搜索“Django 文档”就好了。在使用时请注意检查单个结果最上方所展示的*URL*以及是否有“广告”、“AD”等字眼,以免获得错误结果。 更加复杂的信息检索教程你可以尝试自行搜索。 噢对,对于计算机科学来说,可能使用对应的英文专业术语进行搜索会得到更多的搜索结果。 而对于一些相对来说没有那么活跃的、维护者不那么多的项目来说,那么这个问题有可能出在缺乏文档上。这时可以尝试在搜索引擎查找他人的实(踩)践(坑)记录。如果找不到的话,你应该思考一下自己编码思路是否有错误,是否有更好的实现方式。如果你觉得没有问题,且该函数易于测试,你可以尝试自行测试来找出答案。如果还是无法解决(难以测试的),请尝试阅读其源码(如果有的话)。 对于Java,IDEA等开发环境都提供了反编译功能,可以在没有源码的情况下查看函数实现。而Python、NodeJS、Rust等语言的大部分库都是开放源代码的。 如果还是无法得到答案,那么应该勇敢地怀疑这个函数的实现是否存在问题,你应该考虑使用其它实现替换。 按照上面的步骤,你会发现,你完全可以自行解决一个问题,而无需别人的帮助。 --- 当你已经在这个问题上花费了你觉得足够的时间时,你可以考虑向*可能*的大佬提问。 但是你应当注意,不要将提问建立在你所假设的出现问题的原因上,而是问出这个问题原本的样子。举个例子,你不应该提出像“我的程序应该是因为xxx原因爆栈了,我要怎么解决呢?”这样子的问题(除非你很有把握),因为你的假设有时会使你忽略一些回答问题所需的细节;一个合格的问题应该是“我的代码是:xxx;这是错误信息:(通常给出堆栈跟踪信息);我怀疑的原因;我做过的尝试;”这些细节都有利于回答者回答你的问题,而不是要向你再三询问信息或是觉得你的问题不值得他来回答。简单来说,清晰、明确的描述是很重要的。 让你的代码易于回答者阅读。注意当你附加代码时,请不要直接发送文件或是将其以纯文本格式粘贴到聊天框或是编辑器中,更不要发送部分代码截图(当你只发送你认为出错的代码时,你通常会忽略一些确认和解决问题所需的细节)。常规做法是,当你们使用的交流工具支持显示代码时,请使用该功能(比如Markdown中的代码块,或是HTML中的pre标签。)如果不支持该功能,则请使用支持展示代码的在线剪切板发送,例如[pastebin](https://pastebin.com/)、[Ubuntu Pastebin](https://pastebin.ubuntu.com/)等。 不要将希望寄托在回答者身上。有时可能会出现你的提问水平过高,而你的提问对象难以回答的情况。这时候可能就不是你的问题了。 如果可以,无论回答者是否帮助到了你,请表达出你的感谢。这很简单,一句话就好。但是它很实用。 --- 以上。希望能帮助你更好地处理你遇到的问题。 最后修改:2021 年 04 月 01 日 03 : 28 AM © 允许规范转载 赞赏 请我喝杯咖啡 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付