以前搜索编程相关的问题,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 了,不容易啊。