对我个人而言,我周末大部分时间都是陪伴家人,读书休闲,或者花时间在我参与的开源项目上。这些周末项目会和我在 Stack Overflow 的工作有所重叠,但又不完全一样。许多程序员是为了学习或者职业发展的目的(或只是为了好玩!)而参与副业项目的。无论是专业的还是业余的,在 Stack Overflow 上,都可以得到我们的技术支持。 无论程序员何时工作,我们都可以回答他们的问题。但和工作日相比,在周末什么语言的问题更容易被问到呢?
我们 StackOverflow 在 Kaggle 上公开了 StackList 数据集,可以用来挖掘工作日和周末问答帖的差异。任何人都可以使用这个数据集,你也可以用来探究自己对 Stack Overflow 上问题和标签的疑问。
比较标签
在这个分析中,我们将使用(未删除的问题)和(被超过10,000个问题使用的标签)。我们利世界标准时间来定义周末,这样不会与所有用户的周末时间精确匹配。小学三年级辅导整体上,工作日有10,451,274个问题,周末有2,132,073个问题。数字上的差异主要由于人们大部分还是在工作日使用Stack Overflow,我们从问答帖的数量和网站流量上都观察到这样的现象。
正是由于这种工作日和周末的现象,我们并不关心标签是否在周末比工作日常用,基本上所有的标签都是在工作日较为常用。实际上,我们希望挖掘什么样的标签,在周末问题中的占比要比工作日的大,反之亦然。
哪些问题标签在相对占比上会有最大的差别呢?
为了进一步解释,让我们来看下数据。在这个数据集中,编程语言 Haskell 在周末问题中的占比为 0.365%,而工作日的占比只有 0.21%,这表明它在周末特别受欢迎。Sharepoint 在周末问题占比为 0.0683%,工作日占比为0.188%,表明它在工作日比较常用。
这让我很兴奋,说明 Haskell 这个函数式编程语言引领着周末技术,基本上我就像下图这样:
我还没有学习 Haskell。但是所有利用周末时间来学习它的程序员们一定不会失望!至少现在你可以享受这个关于 Haskell 的笑话了,Haskell 经常被学者和数学家们使用,但在公司里面不太常用。
让我们看看还有什么发现!
我们看到一些底层技术在周末比较热门,比如 C、C++,指针和汇编,还有数学相关的标签,比如算法、递归和数学。
Heroku 和 Meteor 是经常用来快速开发原型的应用平台,这表明它们经常被用于周末的副业项目。
很多工作日的技术都和微软有关,标签包括 Excel,SQL Server,VBA 和 T-SQL。其它类似的企业技术还有 Oracle。
通过比较整体问题的数量和相对频率,在下图中我们可以很形象地看到这些联系。
图中越靠右侧的标签(比如 JavaScript,Java,C# 和 PHP 等)表示相关的问题越多,反之越靠左侧的标签表示问题越少。越靠近图中红色虚线的标签,表示问题在周末和工作日的占比越接近,离虚线越远的标签表示周末和工作日占比的差距越大。
我们还可以观察到,工作日中最常用的标签都和微软有关(C#,ASP.NET,SQL Server,Excel和VBA),很多周末标签涉及的技术包含 C 和 C++,以及像 Swift 和 Node.js 这些新语言。
为周末工作
透过这个数据集,我们还可以观察到随着时间演变,程序员如何更新他们所使用的这些技术。透过模型,我们可以找到周末占比(周末被问到问题的百分比)变化最大的标签。对于那些超过20,000个问题的标签来说,和过去相比,哪些被问到的数量变少了。
我们发现,一些前几年程序员经常在周末使用的标签,比如 Ruby on Rails 和 Scala,现在却很少在周末使用了,反而在工作日使用得比较多。过去这些技术是更偏向周末用的,但现在经常出现在程序员的日常工作中。这些年来,版本控制软件 SVN 的使用也日趋减少,随着 GitHub 平台的出现,导致更少的程序员使用 SVN 来管理个人的周末项目。
如果我们想找到在周末活动中增长最快的标签,那无疑是游戏引擎 Unity3D,以及一些和创建移动应用相关的标签。看上去程序员在周末比以往设计更多的游戏和应用。这绝对是度过周末的绝佳方式!
我们是采用了公开数据进行这次分析的,也希望社区中的其他程序员,可以有其它的发现。我们数据团队利用类似的数据集回答各种问题,包含理解和招聘程序员,并与他们保持互动。你可以透过 Stack Overflow 上的Developer Insights 栏目,来获取更多关于我们如何利用数据分析解决问题的案例。