编译:伯乐在线,英文:priceonomics
讽刺新闻网站 Allium 曾吐槽,「计算机编程铁律」将会被正式命名为「Google 一下,然后 Stack Overflow」。就像其他一些精彩的吐槽那样,这个玩笑并非无中生有。为何会这样说,请参见这篇文章 →《如何编程?四步走,So easy!》
Stack Overflow 是一个面向程序员的问答网站,2015 年时每天有 760 万的访问量,是当时世界上访问量第 57 位的网站,位列 Craigslist、ESPN 和 PornHub 之前。对在编程中遇到困难的人来说,Stack Overflow 就是庇护所。无论新手还是老手,都把 Stack Overflow 作为一个主要的资源网站。不确定如何解决一个难题?把这个问题放在 Stack Overflow 上。一般来讲,半个小时之内这个问题就会被其他的用户解决(不花费你任何东西)。但切记,如果你不想让你的问题被草草地浏览,请把你的问题写清晰明了。
自从 2008 年被著名博主 Jeff Atwood 和 Joel Spolsky 建立之后,Stack Overflow 迅速成为一个针对程序员的优秀问答网站。现在,Stack Overflow不再仅仅是一个学习编程的资源网站,而且对于了解编程世界的动态也是十分的有用。编程世界正在变得越来越重要,但是对于外行人而言,又好像是无法理解的。
出于这个好奇,我们分析了在Stack Overflow上超过1100万个问题的帖子。我们用这个数据来寻找,在编程世界里被讨论次数最多的主题,和发现哪些主题正在越来越热门,又有哪些主题呈下滑的趋势。
在成立之初,Jeff Atwood 把 Stack Overflow 形容为一个“具备维基百科和编程版reddit功能”的问答网站。Stack Overflow 区别于其他网站的一个因素就是,所有在Stack Overflow上提出的问题和答案都是基于一个具有创造性且通用的规范,而且是不用付会员费的(比如Experts-Exchange,Stack Overflow的一个竞争者,网站的会员需要交纳月费)。Stack Overflow 这个名字是在 Atwood 的博客上的一个选名字活动的投票结果,Stack Overflow 是一个编程术语,是指当计算机程序尝试使用比实际可用内存更大的空间时出现的一个错误。
自2008年以来,Stack Overflow上已经有超过 1100 万个问题和 1700 万个答案(只有27%的问题是没有被回答的,一个同样的问题可能有多个答案)。下图显示了 SO 建立以来每个月提问问题的数量。现在,每个月提问的问题大约有40万个。下图中所有使用的数据都是我们从Stack Overflow”数据探测器“收集来的。(数据探测器中使用的查询是 SO 用户 sam.saffron 写的)。
当用户要在StackOverflow上发布问题时,用户必须给这个问题加标签,以便于这个问题的分类。这些”标签”有助于其他程序员找到这个问题,而这些程序员可能会对解决这个问题提供一些帮助。精通”Java”的用户会搜索和”Java”标签相关的问题。Stack Overflow 用户解决问题的初衷,即出于来自内心的善意,也出于当他的声望值提升时的那种自豪感(后者占到的比重更大一些)。
StackOverflow 网站有超过400个标签涉及1万个以上问题。其中 JavaScript、Java、C#、Android 和 jQuery 是 前 TOP 6 ,所覆盖的问题总数已超过 67.5 万个。Python 标签排第七,其问题数已接近 5 万个。
上图显示Stack Overflow建立以来每一个标签下的问题总数,但编程世界正在快速的变化之中。StackOverflow中的标签让我们能够跟踪这些变化。
每个月有关JavaScript 的问题数量几乎是呈线性的持续的增长的,而 jQuery,一个JavaScript 的模块,每个月的问题数量正在呈一个下滑的趋势。这些变化可能是一个这些语言或者工具的受欢迎程度的一个反应,但是也可能仅仅是StackOverflow用户组成变化的一个结果。
我们好奇的是,能否使用一个标签下面问题的数量来得知当前程序世界的热门话题是什么。我们从500个标签中挑选出始终是最热的一些标签,见证了在2014年十月到2015年十月之间每月最大的问题增长量。
Android-Studio 标签到目前为止是在任何主要标签在过去一年中拥有最大的增长量。 Android-Studio是一个用于在Android平台上开发的集成开发环境。 2014年10月,Android-Studio只有383个问题,但2015年10月有1,236个问题。
许多其他显示增长最快的标签,包括与Web /云开发(API 和 Amazon-web服务)和数据分析(pandas和图表)相关的标签。 当然,是时代的标志。
一般来说,代表下降年数最多的标签多指的是过时版本的平台,如 iOS7 和 Windows 8。 如果我们只包括那些在 2012-2015 年有一百个问题的标签,我们得到一个更有趣的列表。
虽然上面的图表中的一些标签主题逐步淡出当今的编程舞台(例如 Flash、Silverlight 或许 Emacs),但标签在 Stack Overflow上走下坡路不一定表示人们失去了兴趣。 这可能只是关于较小主题领域的问题已经饱和,没有更多的问题需要提出。
Stack Overflow的成功归功于其数以百万计的用户。 2013年的一项研究发现,只有 8% 的用户回答了超过 5 个问题(用户被定义为近500万拥有 Stack Overflow 帐户的人)。许多没有注册的人也在使用该网站。 事实上,我们发现在一天的时间里,25%的答案来自Stack Overflow的数百万用户之中1000人。
Stack Overflow 有个特点,用户通过回答和提出问题可以获得「声望值」。用户已经反应,积累声望值或者获得Stack Overflow颁发和声望值有关的奖章,是让人非常上瘾的事情。
回答最多问题的用户(如 Jon Skeet 和 T.J. Crowder)已经成为程序明星。声望值越高,在 SO 网站上具有更大的权限(例如,编辑问题和投票以关闭问题的能力),并且还可以帮助用户获得咨询工作。
下表显示了在所有时间内,声望值分数最高的个人,以及他们回答问题的主要标签。
虽然很很多人都认为 Stack Overflow 是一个不可思议的资源,但是一些程序员还是有一些疑虑。第一,许多用户对社区文化的发展表示失望。他们认为社区已经过分关注声望值,并已成为新用户受到嘲笑的地方。开发人员John Slegers 在 Medium 写道,一些高声望用户已经成为“超级巨人”。
其他人则担心 Stack Overflow 已影响编程基础。一些批评者认为,开发人员现在可以寻求 Stack Overflow 用户为他们解决问题,而不是靠自己真正地努力去解决问题。提问者可以接收并使用他们不真正理解的代码的方案,他们只是知道方案能解决他们的问题。当需要调整时,这可能导致长期的问题。自称的“开发者传道者” 的Christian Heilmann 表示,这些只会复制粘贴 Stackoverflow上的答案的程序员是「Full Stackoverflow Developer」(这是一个相对于「Full-Stack Developer | 全栈开发者」的双关语)。
尽管如此,该网站仍然是许多编程社区的中心资源。程序员 Jason Sachs 对 Stack Overflow 的某些方面表示了不满,但他仍然相信 SO 的用户群体、优秀的用户界面和快速的答案,是一个可以经常得到“绝妙帮助”的地方。
即使就是写这篇文章时,也「咨询」 Stack Overflow 多次了。在收集数据、创建图表和理解社区的文化和方向的过程中,Stack Overflow 的问答贴不可或缺。
看完本文有收获?请转发分享给更多人
关注「程序员的那些事」,提升编程技能
联系客服