以前搜索编程相关的问题,Stack Overflow 上的答案经常高居谷歌搜索前列,这个网站上 有一些质量很高的答案,能够真正解决我的疑问。大约一年以前,我正式注册了 Stack Overflow,也开始试着回答别人的提问,解答别人的问题也让我受益匪浅。最近发生的一 件事却让我对 Stack Overflow 有了更深的认识。

由于对一道算法问题的解答不是很确定,我决定在 Stack Overflow 上提问,寻求高手的 帮忙。结果问题 刚刚贴上去没多久,问题就开始被 downvote,紧接着,就有人开始提议要 close 我的问 题。我赶忙问为什么要 downvote 我的问题,有个叫 melpomene 的用户(简称 m君)就开 始和我玩起了文字游戏。m 君一直说我写的问题不清楚,不是一个算法问题,是一个数学 问题,我只好不断解释,同时也试图修改我的问题描述,使得问题更加清楚易懂。另外一 个用户 sascha(简称 s 君) 则说,我提的问题就像 homework question,我根本没有花 费时间去解决这个问题,就上来提问,谷歌上可以容易搜到这个问题的解答,我又解释了 一番,说我已经试着自己解决这个问题,自己也在谷歌上搜索过这个问题,但是并没有找 到这个问题的解答,并且把自己写的代码也贴了上去,并说明我不清楚我的方法是否是最 有效率(efficient)的。 s 君又开始评论,不清楚什么叫 efficient。我只好继续解释 efficient 指的是算法的时间和空间复杂度低。m 君又开始发难,我要的答案只是一个数 字,无所谓复杂度,我又解释了一番。逐渐觉得这两个人只是在耍嘴皮子,并无心去真正 解决我的问题。s 君说他可以在 O(1) 的时间解决这个问题,我于是让他贴出自己的代码 ,这货又狡辩不清楚我说的是最坏复杂度,还是平均时间复杂度,就是不贴出自己的代码 。我于是怒了,开始怒喷这两个装逼货,结果 s 君怂了,不再答话,估计他也知道自己牛 皮吹大了,根本想不出更好的方法来,于是夹着尾巴走了。m 君则给出了一个答案,我看 了一下,时间复杂度比我的方法要低,试了一些简单的测试样例,貌似也是正确的,事情 也许就这么过去了。

第二天,我仔细研究了一下,发现 m 君的答案其实是有问题的,并不是正确的解法,给他 的回答增加了评论,后面他也承认自己的答案有问题,删掉了自己的答案,修改好了以后 才又放了出来,还给出了测试样例,这次他的答案没有问题了。昨天 m 君和我争论这不是 一个算法问题,后面自己给了一个答案,结果却是错误的,装逼失败。这件事很好地说明 了 Stack Overflow 上一些老用户的自大与傻逼,总是居高临下随意俯视新用户,利用自 己的权力对新用户进行刁难讽刺。

我从比较早就注意到了 Stack Overflow 存在的这种问题,Stack Overflow 的哲学就是 你要做足自己的功课 ,并且清楚如何提问,然后你 才可以提出自己的问题。自己努力的程度越高越好,直到自己解决了问题,从而不用提出 这个问题。然而这件事情发展的有点极端,伤害了大量新用户,甚至有人害怕在 Stack Overflow 提问题 或者认为提问题是一种耻辱 . Stack Overflow 对新手确实是不友好的,很多问题刚一提出就被 downvote 或者干脆 close,新手们就像幼苗,战战兢兢地面对着一些 reputation 很高的用户,就连我这种并 不算新手的用户在提问的时候也会担心,总觉得自己努力的还不够,担心自己的提问会被 downvote。这并不是一种很健康的状态。

网络有很多对 Stack Overflow 的批评,例如 Stack Overflow 正在衰落 ,又或者 Stack Overflow 对新手太有敌意 等,经过这次的事情,我对此有了更深的体会。但我并不同意 Stack Overflow 正在衰落 的说法,在这里你仍然能找到最权威与最细致的答案。你的问题在贴出去以后,最有可能 在短时间得到其他人的回答,这是任何其他网站无法媲美的。我希望自己的答案能够帮到 别人,也希望自己的答案得到高手的回答。只是希望 Stack Overflow 上的社区能够多一 些宽容,少一些尖刻的讽刺。

距离我初次发文已经过去了大半年,Stack Overflow 官方博客发文承认了存在的问题 ,并称将进行改进,对新用户更加友好。

Update: 2018-05-26, 我的 reputation 已增长到 2000 了,不容易啊。

Update: 2019-04-20, 我的 reputation 增长到了 4959。