(点击上方公众号,可快速关注)
英文:StackOverflow,翻译:伯乐在线 - 黄小非
如有好文章投稿,请点击 → 这里了解详情
【导读】:Stack Overflow 工程师最近 David Robinson 做了一次数据分析,总结了程序员的技术选择和所在国家收入之间的关系。
Stack Overflow 非常热衷于利用数据来和用户分享对全世界开发者社区的认知。比如它通过对全球开发者在 Stack Overflow 上询问 Andorid 相关问题统计,得出了结论:收入较低国家的开发者询问 Android 问题的数量要高于高收入国家的开发者。
这个问题引发了我们的联想:高收入国家和低收入国家之间,开发人员在技术选择方面有什么不同呢?这种不同又会如何影响全球的软件开发产业呢?在本文中,我们就探索了上述的问题,并且发现通过收入来区分软件工业的发展,是一种很有效的办法。
本文中的所有分析结论都是基于 2017 年 1 月 到 8 月的数据,并挑选在这段时间内出现频率 Top 250 标签进行统计的。为了减少数据样本过大可能造成的偏差,我们集中选取了相应时间段内来自 64 个国家的超过 500 万个问题进行分析。需要说明的是,这些数据很大程度上只反应了英语开发者们的行为模式(当然通过对西班牙语和葡萄牙语站点的分析,发现在墨西哥,西班牙这些国家,得到的分析结论和英语国家差不多)。
技术和人均 GDP 的相关性
在最近的一篇文章中,我们通过计算 Android 相关问题的比例(就是某个国家Android相关的问题的数量占该国整体Stack Overflow问题数据量的百分比),发现这个比例和这个国家的人均GPD是成反比的。所以我们也想知道,其他种类的技术和人均GDP的关系。
因此我们调查了主流的编程语言和平台,包括PHP、Python、R 等等。
统计发现,来自某个国家 Android 相关问题和 PHP 相关问题的数量是和国家的收入情况成反比的,而同 Python、R 语言相关问题的数量则是正比。当然,在每一个统计案例里都会有例外的情况(例如,来自人均收入较高的韩国的 Android 问题数量要远超我们的预期,来自中国的 Python 问题的数量相对较低),但是总体来看,这种正反比关系还是很有说服力的。(多重假设检验调整后,每一种语言案例统计的决定系数都在 0.5 到 0.6 之间,P 值为 10 的负六次方)。
必须要说明一下,我们得出这些结论不是要说明什么因果性。我们并不是说,如果你选择了那些富有国家的开发者使用的编程语言,那么你所在的国家就能变成富有的国家。并且我们也不是说,国家的经济会直接影响到某种计算机技术的使用。我们只是发现,把经济和社会因素(例如教育程度,软件工业发展的年限,外包的水平等)看成一个整体,从总体上会与这个国家的财富多寡相关。
软件开发产业是按什么标准一分为二的?
在我们调查软件技术趋势时,通常只会把全世界的国家分成两组(即高收入国家和非高收入国家)来统计。我们不会把各国分成许多组来把相关性问题复杂化。因为在这方面已经有了很成熟的划分标准,我们就直接用世界银行收入分级标准就可以了,这种分级法是以人均国民总收入(GNI)为基准的
上图显示,全球一共有 78 个国家属于高收入国家,这些国家多半由美国、加拿大、西欧、部分中东和东亚国家,以及澳大利亚/新西兰构成。通过统计学的手段可以证明,这种划分方法是有足够依据的,而且这种划分方法比其他的方法更有意义,比如很多时候人们喜欢按照东西半球来划分国家,可实际上澳大利亚的技术分布情况却更接近美国和欧洲,而不是同属东半球的中国和印度尼西亚。
这种分类方法同时也把 Stack Overflow 的访问量分成了两组,其中高收入国家访问量超过 2/3,剩余的国家占了访问量的不到 1/3。(得到这样的结果是和被调查国家软件开发人员的数量、互联网的基础设施的情况、以及说英语人数的情况严重相关的)。其中非高收入国家的访问量的排名分别为:印度、巴西、俄罗斯和中国。
高低收入国家使用的技术有什么不同?
我们已经把软件开发的世界分成了两个区域了。那么高收入国家和非高收入国家在使用的技术上有什么不同呢?
我们从中可以看到一些有趣的结论:
数据科学技术的不同:我们之前已经看到,Python 和 R 语言的使用情况和国家的富有程度是相关的。Python 在高收入国家使用的规模大约是其余国家的两倍之多,而 R 语言的使用规模差达到了 3 倍多。我们还注意到,通过对内容更具体的标签(tags)的统计,发现在Python和R科学计算领域,使用不同的计算包的人收入跳度很明显,例如pandas, numpy, matplotlib和ggplot2。这说明了在数据科学研究方面,不同的技术角色之间存在收入鸿沟。当然在越富有,工业化程度越高的国家,数据科学研究的占国家经济的比例越大,程序员的学历也越高,这个结论是符合逻辑的。
C/C++:在 Stack Overflow 上还有两个值得一提的语言就是 C 和 C++,高收入国家的程序员访问这两种语言的次数比低收入国家程序员多。对这个现象,有一种猜测是,它和教育机构有关:因为在之前的一篇《学生如何使用Stack Overflow》的帖子里,我们发现美国的大学对 C/C++ 的访问频率是非常高的。当然这个现象也可能和电器制造商的地理分布情况有关。
PHP 和 Android:我们在以前的一篇《全球移动开发调查》的帖子中讨论了 Android 开发的情况,除此之外,还有一种技术和低收入国家息息相关,那就是 PHP。在Stack Overflow上,来自低收入国家的对 CodeIgniter(一个PHP开源框架)的问题非常的多,而高收入国家队这个框架的提问几乎没有,这么大悬殊实在是一个很有趣的现象。经过进一步的调查,发现对 CodeIgniter 的重度访问来自于南亚,东南亚(尤其是印度、印度尼西亚、巴基斯坦和菲律宾),来自美国或者都周的访问几乎没有。所以可以推断,这个框架主要是这些外包公司用来开发门户网站用的。
结论:统计这些有什么用?
我们做这些统计当然是因为对编程语言生态系统的兴趣。而且这对我们日后要做的数据探索有很大的启发。
我们在说软件开发工业方面的问题时,要意识到我们的问题都是由两个单独的问题混合起来的,这很重要,因为这种混合会给我们带来更多的信息。
比如,我们想找到是哪些技术给Stack Overflow带来最大的流量,例如:《探寻Flash技术不不断缩水的原因》。如果我们把访问量最多的技术列出一张表,你会发现高收入和低收入的国家的分布是完全不一样的。
例如,2017 年以来,Python 是来自高收入国家被访问第二多的话题,但是在非高收入国家,Python 只能排到第 8 位。而本文作者自己使用的 R 语言,在高收入国家访问数量的排名是第 15,但是在非高收入国家排名却在 50 开外。
这些数据对 Stack Overflow 了解全球的开发者生态来说都是很重要的数据。而对于美国的技术招聘者来说,他们需要掌握未来的动向,所以他们需要了解更多的方面的数据,而不仅是“来自印度的学生要学习什么样的计算机语言”、“技术投资人在肯尼亚寻找合适的技术公司”这类话题。
看完本文有收获?请分享给更多人
关注「伯乐在线」,看更多精选 IT 职场文章