曾有一段时间我活跃于StackOverflow(和更大的StacExchange)。可是现在我不再参与这些社区,原因如下。 引言我在StackOverflow有一个账号。点击该链接你能查看到一些数据:
我指出这些并不是为了吹牛,而是为了明确表明我撰写本文不是因为“酸葡萄心理”或者是因为我没有获得理想中的认同感。事实上,坦白的说,我正是获得了太多的认同感,而不仅仅是以下提到的几个方面。 概览如果你是一个软件开发者,如果你不是那么孤陋寡闻的话,你一定听说过Joel Spolsky 和Jeff Atwood的StackOverflow(和广泛使用的StackExchange )。对于没听过这些的童鞋,我来稍微解释一下这个网站是什么样的。 简单的说,你提出有关编程方面的问题,然后其他的人们回答。这个网站是“gamified”(这是一个多么令人吃惊的全新的词啊!),所以你可以提问发起投票,回答得到投票,或者做簿记任务和许多其他事情,并以此获得积分。你也可以通过完成一些特定的任务而获得徽章(金,银,铜)。 这个系统的目的就是提供一些规范的认可机制,激励人们帮助在软件开发中遇到问题的其他人。这听起来很不错,但是我最终发现这些规定都相当含糊不清而且相互矛盾。 我曾经不止一次的被问过为什么会有这种想法,所以今天我在这篇文章中记录下我的解释,这样以后再有人问我同样的问题时,我只要指向这个页面,而不必重复的向他们解释同样的事情。 问题我总结的,现在的StackOverflow有如下问题:
我很愿意参与有关这些问题的讨论——这篇文章已经允许评论。现在这些评论非常友好,如果你想对敢于指出一个网站不足的人发泄怒气,那么你会
糟糕的教育作为一个教育者,我发现StackOverflow类似于帮助用户对知识不劳而获,并不是任何一种真正的学习方式。为了阐明这一点,请回去看一下我的简历。尤其是看一下标签选项卡。看到那里排名第一的标签了吗?是Java。我的大多数回答(以及我的大多数得分)都是来自和Java有关的问题。 现在就出现一个困惑了。 我并不是一个Java程序员。我只是曾经用Java专业地编写过程序。我讨厌编写Java代码的经历,我也讨厌Java语言。我当然不认为自己是一个Java专家。然而我成功地从Java相关的问题中获取了大量分数。这怎么可能呢? 可能是因为许多人提出了问题,我回答他们的问题也正是做了他们应该自己做的事情:即我看到一个简单的Java问题,通过Google搜索,简单的查看搜索结果然后合成一个原始的回答。 英文中老生常谈道:给一个人一条鱼,他只能吃一天;但是教他捕鱼他就能吃一辈子(授之以鱼不如授之以渔)。StackOverflow社区里很多都是需要给鱼的人。这些问问题的人短期内并不会学到有用的东西,回答问题的人也是以最简单的方式帮助他们。长期而言,StackOverflow很可能会抑制程序员们(因而波及到整个编程领域)的发展。 可笑的奖励体制然后我的排名第二的标签是C++。曾有一阵我很乐于称呼自己为C++专家。现在我对C++这门语言可能了解得比其他大部分人还要多一些,但是,如果这是可能的话,我确实对C++怀有比我对Java更深的仇恨。 所以,如果我讨厌Java和C++(和其他几个同样在我便签上排名较高的语言),我为什么能不厌其烦地回答有关这些主题的问题?这就是因为我认为StackOverflow存在的第二个问题:他们的奖励体制是可笑的。 高校“最酷的孩子排行表”StackOverflow的本质是,只有那些跟当前最流行的编程语言相关的简单答案能够得到奖励。为了说明这个问题,请看看这两个问题,Java相关的问题 and 与Java无关的问题。 回答第一个Java相关的问题只用了我一分钟的时间,使我得到了460点的奖励。回答另一个与Java无关的问题花了我将近15分钟的时间,却仅仅使我得到60点的奖励。 如果你是为了获得奖励的点数(这正是游戏化存在的原因),那么你会把能够完成十几次460点答案的时间浪费在一个60点的问题上面吗?当然不可能!你只会去看那些与当前流行的编程语言相关的高分但简单的问题。StackOverflow的这种结构是在奖励那些只做少量工作,尽可能回答简单的并且是与当前流行的编程语言相关的问题的人。花费过多时间和精力来回答问题将会干扰点数和排名的上升。回答那些在前十名之外的编程语言也是一样。 这种“最酷的孩子排行表” 有着非常显著的影响。看看我的 我的个人页面。共有218个回答以及10个问题。为什么会这样? 我完全可以很自豪的告诉别人这是因为我知道的比别人多,但事实上是因为用从一系列回复当中得到理想的答案并不是一件简单的事。我的得分方式 (Google+简单的重写) 显示,我非常擅长回答琐碎的问题。对于这个问题的一个最好的例子就是这个问题。这个问题最终得到了5个回复(其中一个可能没有显示出来),但只有其中一个回复解答了一部分的问题。 为什么会这样?因为回答这整个问题可能花费的时间远远超过大部分在StackOverflow上回答问题的人愿意付出的时间。 完全没有理由花费时间在困难的问题上面,因为你只要用一点点时间就可以得到上千的点数。 失效的计分方式即使“最酷孩子排行”的机制不算是一个问题,StackOverflow的系统仍然存在着很大的问题。还记得我获得14,000点用了多少时间吗?两年多的时间。不过当我决定停止继续参与StackOverflow的时候,这些都无所谓了。那个时候我的点数只有九千多点,我因此而羞于使用主持人的权限。在之后大约两年的时间里,我对StackOverflow完全没有任何贡献: 没有提出问题,没有回答问题,什么也没做。 (当然,并不完全是这样。当我超过10,000分的时候,我尝试着使用主持人的权限做了一些编辑,只是单纯想试试看而已)。 我的声望值超过三分之一是在毫无贡献的这两年中赚到的。实际上,尽管我什么也没做,我却从前4%的贡献者被提升到了前3%。 任何允许这种状况发生的系统在我看来都是有问题的。 糟糕的社区现在我的声望值要开始下降了! 小气的孩子当我写这篇文章的时候,就像我前面提到了,点数已经超过14,000(准确的说是14,076)。我预测我的点数会开始下降,因为当更多人看到这篇博客之后,就会为了报复而给我的答案投反对票。为什么我会知道?因为我之前曾经突然收到大量的反对票。比如这个关于‘goto’的问题。当我写这篇文章的时候,我的答案有72个赞成票和13个反对票。这既是我最受欢迎的答案也是我最讨厌的答案之一。 那些讨厌这个答案内容的人理所当然的会投反对票。不过,在我回答完这个问题之后,我所有的提交的答案都莫名其妙地产生了下降的趋势。人们对于我嘲讽计算机这个神圣的领域非常失望,以至于单单对这个问题投反对票还不够,他们想要惩罚我(他们选择的惩罚手段虽然完全无效但显得很有趣)。然而这并不是一个成熟的社区用户应有的行为。 可怕的独裁主义显然,上面的行为在Innarwebs 上的互动中是不可避免的。形同虚设的匿名机制让一些熊孩子上门来。但还不仅仅如此,在整个StackExchange上,等级制度一直困扰着我:可怕的独裁主义! 现在的StackOverflow风格与我刚刚加入的时候截然不同。刚加入的时候,整个社区是一个整体,略带一些幽默。确实,一些问题或者答案离题千里,而有些语言无礼,但是那更有社区的感觉,虽然有时这显得有些不太专业。 慢慢的,但是的确能感受的到,社区渐渐变了。她变成了我眼中现在所谓的“社区驱动”,包含但不仅限于:
这种发生在Wikipedia上的现象也同样发生在了StackOverflow上。StackOverflow曾一度显得很有趣,但现在已经不再有趣了。StackOverflow 从前能够包容稍微超越规范的行为,但这也不再了。 一起来看看这个网站吧。一些曾经最受关注的问题和答案现在已经被锁定了,只是因为“历史原因”而被保留下来。比如这个回答。这几乎是全站最有名最受人喜爱的一个回答。这个回答很风趣并且信息量丰富。但它因为某些原因使得网站管理人抓狂而被锁定,我们能看到一个不详的注释:“该帖子已被锁定,因为关于帖子内容的争论已经得到解决。” What. The. Fuck!? 总而言之我有很多理由不再向Stackoverflow社区贡献代码。我为她糟糕的教育感到不安,为他不分好坏的评分系统感到恼怒,为她不成熟的社区和无脑的权威感到惋惜。那我会推荐什么作为替代品呢? 学习方面怎么办?将知识装进脑子里留着以后用。你可以Google,你可以查Wikipedia,你可以在RosettaCode上找到代码样例(同样可以在那里提交)。和其他做同样事情的人在用户群、邮件列表或是论坛上讨论。学习基本原则而不是对单纯问题的解答。 英文原文:Why I no longer contribute to StackOverflow |