真香,以及,多年(两年)混迹(摸鱼)在计算机的圈子,见过各式各类的人,也见过各式各样的问题,关于如何正确的对程序中存在的问题进行提问,也是一门技术活,也有许多要注意的地方,整理如下。
提问不该廉价
不要不懂就问,这是一种陋习。
提问应该是自己尝试多遍、千辛万苦但仍然无果的情非得已的无奈之举,不要把提问当成举手之劳、随口一说,沟通成本会带来回答者和提问者的负担,浪费时间与精力。提问时请证明你的确做了良好的前期工作。此外,deadline
快到了、导师催得紧、比赛着急这些东西也不是你可以不求甚解、一步登天、顺理成章伸手的借口。
错误提问
拍个照片问问题在哪。
啥都不说就问能不能解决这个问题,其中以
无脑
问题居多。无脑问题即文档都有的东西张口就问,不读书不过脑子且无思考态度不端正,现在年轻人心浮气躁:你行你上,不行就别说话;能回答就说,不回答就闭嘴,宛如一个大爷一样。
作为任何论坛、社区的管理员,他们都在义务的维护与回答,他们更想授人以渔,对他们来说授人以鱼很快,但对你没有好处,他们是为了让你多钻研、多思考。
一直再说出错,你说一百遍出错了它还是错的,务必提供有用的信息。
正确提问
假设此时的你已经做了前期工作,读过相关教程、文档,并实现过部分内容, 而非纸上谈兵。
如果你不满足以上条件,请停止提问,先去沉淀自己,做好足够的知识储备。
首先,列出问题背景。
务必提供操作系统版本、软件版本及其相关库的版本,只谈问题而不谈版本都是耍流氓行为。
之后,列出问题描述。
在什么环境下,使用了什么软件,进行了什么操作,得到了什么错误,描述清楚。甚至提供必要的命令、截图、报错信息,甚至log
等信息。
其次,给出
MWE
Minimal Work Example
,能在他人电脑工作的最小实例,不包含与问题无关程序,做到简短,能复现
问题即可。并提供文本形式的代码,而不是截图。没必要让他人照着你的图片在敲一遍你的程序,浪费时间。
然后,列出自己的行动
列出自己尝试过的解决方案,给出参考网址。避免他人重复你做过的工作。
最后,写出进展情况
如,毫无进展或者解决部分问题;都要写一下。
结语,最后但很重要
- 学会使用Github, Stackoverflow等主流工具
- 别看某度、某乎、某园、某DN等不靠谱不专业社区
- 当你熟悉上述的提问流程后,其实你能独立解决绝大多数问题。而会解决遇到的任何问题,比会提问要实在的多。