为什么新手在编程社区提问得不到回答,甚至还会被嘲讽?

简介: 说了这么多,你也不要因此而不想提问题。该问的还是得问,要敢于提问和讨论,甚至要上 StackOverflow 等英语网站去问。不然怎么提高自己?不但要问,还要回答,“教”是最好的“学”。当你能向别人解释清楚一个东西时,才是你真的理解了它。既回馈了社区,又提升了自己,何乐而不为?

学编程难免遇到问题,遇到问题难免要上网求助。然而有过不少同学向我诉苦,说在网上提问没有人回答,有的还收到一些不是很友好的回复。我自己也在经常上的论坛上目睹过类似的帖子。以至于有人说,程序员社区就是对新人不友好,不愿帮助新人,甚至说这是怕别人学会了来抢饭碗。


对此我想正名一下,程序员们大多很单纯,而且这或许是这个星球上最乐于分享的群体。但在这个充满理性、逻辑至上的群体里,有着自己一套规则。当一个不懂规则的人出现在群体中,往往会被“教做人”。


如果你也曾遭遇这样的问题,或今后打算在编程社区里成长,请务必看看我接下来要说的东西:


如何正确地在编程社区提问?


绝大部分得不到满意回答甚至引来不满的问题,都是问题本身的原因。我本人在网上回答了这么多年问题,也经常是深感困扰。提出一个好问题,对于提问者和回答者,都有很大帮助。


提问前准备


当你打算上网求助前,先问自己2个问题:


  1. 搜索了没有?
  2. 检查了没有?


学编程,你不是一个人。几乎所有你遇到的坑,都有前人踩过,搜索一下就会有答案。各种文档、教程里的内容也都会包含在网页结果中。搜索的关键是如何描述问题,所以要学会看报错,能找到报错中的关键信息。关于更多搜索的技巧,参考之前的文章《编程初学者如何使用搜索引擎》。


编程届有两个词:RTFMSTFW,含义我不解释,自己去查。当有人在你问题下回复类似词时,想想自己有没有动手搜索过。



如果网上找不出你的问题,有几种可能:1.关键词选得不准确;2.你确实碰上了特殊情况;3.你犯了某些低级错误。对新手来说,3的可能性更大。所以请务必自己检查下,单词拼写对不对、标点是不是英文、缩进空格对不对、括号引号是否成对、文件路径是否正确……


排除低级错误外,你还应当对错误做定位,尽量缩小范围,增加必要的输出。这在提问时也会极大方便回答者。而且我也经常跟人说,当你自己把必要的值都输出出来看清楚后,通常问题已经很明显了。关于 debug 的技巧,参考之前的文章《开发5分钟,调试2小时 - 你的问题在哪里?


提问的内容


一个好的问题,应当是准确、具体、简洁、完整,也就是既要清楚地表达了问题涉及的信息,又不要夹杂无关的噪音。


具体来说,通常应包括这几种信息:


  1. 问题的表现
  2. 平台版本
  3. 输出的报错信息
  4. 相关部分的代码


最好还附上你的屏幕截图(避免你没意识到的错误)以及中间变量的输出(方便回答者,同时也说明你自己尝试过)。


特别说一下附上的代码。对新手来说,最好同时提供截图和代码文字,截图是展示电脑上的真实情况,文字是方便别人复现。如果你的代码短,就全部发上;如果是很多代码文件的项目,请自己先做初步的定位,只发关键部分的代码。


如果你是在论坛、问答网站上发帖,取个好标题很重要。把问题在标题里简要描述清楚远好过“求助!在线等!挺急的”这种无意义的标题。


提问的形式


提问时,要选择合适的地方,说合适的话


比如你在一个进阶论坛中问初学者的问题,往往会遭到排斥。反过来也不合适。比较可惜的是,在编程届,进阶、深入的论坛更多,初学者论坛则较少。所以如果你愿意,欢迎来我们的论坛提问,当然别忘了上面说的几点。


而至于什么才是合适的话,这个比较难把握。总的来说,礼貌永远是好的,没人愿意搭理傲慢、粗鲁的提问。但有时候,效率比礼貌更重要。比如 StackOverflow 就禁止打招呼、感谢,因为这会带来无效信息。你只需要精确描述问题、采纳优秀回答即可。同样,当你给别人提问时,直接了当地说明问题,绝对不要一句“你好,在吗?”,等到回复再来一句“我可不可以问你一个问题?”这样留言。或许你觉得这是礼貌,但对于别人来说,本来一次就可以回复的事情,硬生生被拖成几个小时,可能根本就不理你了。


而当你发布在网上的问题最终被解决后,在问题后附上解法说明,按社区规则采纳/点赞有用的答案,是值得推荐的做法。对于回答者来说,这比一句口头赞赏更礼貌。


提问的禁忌


上面说了些建议,如果你还不够理解,那么请记住,不要像这样提问:


  1. 搜一步就可以解决的问题。比如“Python 里怎么读取一个文件的内容?”
  2. X-Y 问题。所谓 X-Y 问题,就是你要解决 X 问题,你认为可以用 Y 方法解决,然后你就问怎么实现 Y,但其实 X 问题根本就有更合适的解法。比如“我怎么取一个字符串的后3位?”,而实际他想解决的是“怎样获取文件的文件类型?”
  3. 笼统而抽象的问题。比如“我能不能学会 Python?”。这个问题被问的频率很高,但这不该问别人,问你自己。
  4. 不要乱猜原因,甚至声称是别人代码的 bug。你需要客观描述和分析问题。比如“我一输比10大的数就不对,是不是 Python 在我电脑上有问题?”
  5. 不要把多个问题混为一谈,分清楚因果。代码有不止一个错误是很正常的,如果别人的方法让你的报错发生变化,说明对上一个问题起了作用,这种情况需要进一步分析,而不是立刻回复一句“按照你的方法改了还是不行”。(这种属于真的不礼貌,会让回答者不想再理你)
  6. 在开放的论坛、讨论组、问答网站,尽量不要通过发私信、加好友的方式来提问。(事实上,这种方式大多也无效)
  7. 不要妄想让别人替你调试 bug、写作业、开发。


个糟糕问题的例子:


哪位懂Python的帮我看下这是什么问题?

(一张几十行的代码截图)


一个好问题的例子:


我的程序里将输入和变量比较大小,结果报错,请问是为什么?

我是Python3

报错:TypeError: '<' not supported between instances of 'int' and 'str'

(代码+输出的截屏、代码文本)


一个更好问题的例子:


我的程序里将输入和变量比较大小,结果报错,请问是为什么?

我是 Windows 下的 Python 3.7

报错:TypeError: '<' not supported between instances of 'int' and 'str'

提示是第11行:if answer < num:

我在前面加了 print,两个变量都是有值的。

(代码+输出的截屏、代码文本)


提问的本质还是思考。如果你能提出一个好问题,必定是对问题思考后的结果。这对你本身也是一种练习。不思考就直接提问,既浪费了锻炼的机会,也很难得到满意答复。


从另一个角度来说,天下没有免费的午餐(也许有,但必另有所图),不要把别人回答你当做一件理所当然的事情。所以请尊重别人的劳动,并尽可能让别人乐于回答你不要提糟糕的问题就是最基本的要求。


说了这么多,你也不要因此而不想提问题。该问的还是得问,要敢于提问和讨论,甚至要上 StackOverflow 等英语网站去问。不然怎么提高自己?不但要问,还要回答,“教”是最好的“学”。当你能向别人解释清楚一个东西时,才是你真的理解了它。既回馈了社区,又提升了自己,何乐而不为?


Crossin的编程教室永远欢迎好问题。


最后,编程有篇很经典的文章,推荐给大家:


How To Ask Questions The Smart Way

http://www.catb.org/~esr/faqs/smart-questions.html

【中文版】提问的智慧

https://github.com/FredWe/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md


上述这一切,不仅针对编程。


其他内容回复关键字:

python :零基础入门课程目录

新手 :初学者指南及常见问题

资源 :超过500M学习资料网盘地址

项目 :十多个进阶项目代码实例

如需了解视频课程及答疑群等更多服务,请号内回复 码上行动

代码相关问题可以在论坛上发帖提问 bbs.crossincode.com

推荐阅读:

爬抖音 | AI名画|押韵工具 | 虎扑 | 如何debug | 苹果 | 查天气 | 我用Python | 知乎 | 排序 | 电影票 | 技术宅 | 单词表 | 新手建议

相关文章
给予第一次接触编程的朋友
给予第一次接触编程的朋友
|
4月前
新人,为什么你提问了却得不到想要的答案?
新人,为什么你提问了却得不到想要的答案?
|
搜索推荐 程序员 Python
为什么新手在编程社区提问经常得不到回答,甚至还会被嘲讽?
学编程难免遇到问题,遇到问题就需要上网求助。然而有过不少同学向我诉苦,说在网上提问没有人回答,有的还收到一些不是很友好的回复。我自己也在经常上的论坛上目睹过类似的帖子。以至于有人说,程序员社区就是对新人不友好,不愿帮助新人,甚至说这是怕别人学会了来抢饭碗。
|
开发框架 前端开发 安全
初学者,你有没有想过放弃这一行
初学者,你有没有想过放弃这一行
146 0
|
前端开发 测试技术
测试领域专业术语整理-持续更新
测试领域专业术语整理-持续更新
323 0
|
安全 前端开发 Java
面试官:你的缺点是什么?这样回答漂亮!
前言 作为一个资(da)深(ling)HR,此题不要太有感悟! 长文,干货。 以下案例,均来自真实改编,如有雷同,请到墙角反省 当我微笑着问你,可以谈谈自己的缺点吗? 如果应聘者低头莞尔一笑,或羞涩或含蓄地说: “我妈妈说,我最大的缺点,就是太执着,不撞南墙不回头……”
534 0
面试官:你的缺点是什么?这样回答漂亮!
纯干货,面试重灾区--多线程源码解析,你该这样回答
面试中,多线程是重灾区,而再日常工作中,多线程又是容易被忽略的地方,准备一下去面试吧 公众号:Java架构师联盟 文章已经上传git:https://gitee.com/biwangsheng/mxq
1228 0
纯干货,面试重灾区--多线程源码解析,你该这样回答
|
机器学习/深度学习
想要在工作中快速成长?这10个技巧一定不能错过!
本文源自阿里巴巴高级无线开发专家江建明关于认知升级的方法总结。
1863 0
|
JavaScript
工作中一些比较奇怪的产品需求笔记
1.要求登录以后点击浏览器返回以后再点返回需要重新登录;这个本来是浏览器默认的一些缓存,当时也是在网上各种百度   解决问题思路 :当时经过反复的测试,发现每次浏览器返回之后会重新加载一次页面js;但是不会给服务器发请求;也就是从后台没办法控制‘      然后给windos设置了一个全局变量;每次...
1119 0
|
Java 数据库 NoSQL
也许能帮到你一点!eboot框架基础版发布
每次开发都从0开始,重复造了无数个轮子,或者是把之前的项目抠出来,改吧改吧。但是技术的更新速度太快,甚至还见过现在开发的项目用jdk1.6的,因为老项目用的1.6······ 为了简化项目开始这一步的操作,有了开发eboot的念头,已经有很多前辈开发过类似这样的东西,在这里先感谢一下走在前面的前辈们,但是每个人的都会有一些不同,能给大家提供多一种的选择也就足够了 eboot简介 目前发布一个基础版,适用于中小型项目开发,后续会加入更多功能,以满足大型项目的需求。
1294 0