(资料图)
前几天和一个身在美国的码农聊天,一时对中美两国的程序员差异产生了兴趣,于是就跑去收集整理了国内外近5年的开发者统计数据。这算不上一篇技术文章,但我想,了解国外同行的一些潮流或者趋势,或许对我们有所启发,毕竟根据以往的经验,湾区的风也常常吹到国内。✎ 数据来源包括StackOverflow、CSDN、TIOBE、DB-Engines、Levels、Glassdoor、Michael Page等。
✎ 下述各图表中出现的0值通常指数据缺失,或数据较小可忽略。
1. 编程语言流行度编程语言历史趋势和2023的最新排名。TIOBE的数据来源是Google、Bing、维基等搜索引擎,但不包含国内的搜索引擎,因此主要覆盖国外开发者,尤其是美国开发者。从趋势上可以看到,Java下滑明显,Python快速上升,C#近几年波动不太大。新兴语言中,Rust进入最新榜单的前20。StackOverflow的统计则是采用调查问卷的形式,通常都有数万人参与调查,2023达到9万人,样本比较大。从近五年的数据来看,JavaScript常年稳居第一,说明存在大量的Web应用开发,这个似乎和国内更侧重移动开发不同。Java下滑明显,Python快速上升,C#波动不大,这和TIOBE的趋势是吻合的。新兴语言中,GO和Rust上升明显,Scala则在低位徘徊。CSDN同样采用调查问卷的形式。Java、Python、C#的趋势与国外的步调一致。有几个区别,一个是Typescript(一种JavaScript的超集)在国内的流行度不高;另外一个是新兴语言如GO和Rust,占比还比较低。业余有精力想学点东西的小伙伴,我觉得可以关注一下这两个。我记得TiDB的黄东旭也推荐过Rust,国外像近期大火的向量数据库Pinecone,也用Rust对原来的C++代码进行了重写。2. 数据库流行度DB-Engines的数据来源包括搜索引擎(Google、Bing)、技术社区(StackOverflow和DBA Stack Exchange)、招聘网站、社交媒体(Twitter)等,由于不包含国内搜索引擎,因此主要也是覆盖国外开发者,尤其是美国开发者。从趋势上可以看到,传统关系型数据库三巨头Oracle、MySQL、SQL Server发挥稳定,基本上符合我们的直观印象。比较显眼的是Snowflake,这个和Databricks都属于正当红,建议有兴趣的小伙伴可以关注一下。而从StackOverflow近五年的统计看,PostgreSQL在2022年流行度超过了MySQL。这个可能是因为MySQL在2008年被甲骨文公司收购后,它的授权政策引发了一些争议,导致一些用户转向开源的PostgreSQL。和这件事有关的另外一件事是,在MySQL被收购后,MySQL的创始人之一Michael Widenius于2009年创建了MariaDB项目,MariaDB与MySQL兼容,同时,用户可以自由地使用、修改和分发MariaDB。从图中可以看到MariaDB这几年的流行度也不低。另外,一些新兴的数据库(偏大数据方向),如Cassandra、Snowflake、ClickHouse也占有1%-3%的比例,国内团队开发的数据库TiDB,也在榜中(这部分由于篇幅所限,下图未列出)。国内MySQL一枝独秀,Oracle、SQL Server则是明显处于下降的趋势,这也和国内提倡信创自主有关。比较不同的一点是,PostgreSQL在国内的占比较低。另外,国产数据库这几年整体占比也上升到5%左右。其他像MongoDB和ElasticSearch在国内相对有一定的流行度。3. WEB框架流行度Web框架(或者说Web库)方面,我们先看看国外的趋势,jQuery占比下降,React.js占比上升,位居第一。Vue.js维持在百分之十几的占比。国内开发者则偏爱Vue.js,该框架近三年一直居于榜首。4. IDE流行度整体来个,不管是国内还是国外,流行度最高的IDE都是VS CODE。Java开发中常用的IntelliJ在国内外的占比差不多,而另一个传统的Java IDE Eclipse在国内外占比都处于下滑状态,尤其是国内。PyCharm由于Python语言的流行度上升,其占比也在上升中。注:StackOverflow 2019 IDE数据缺失,沿用了2018的数据。(国外↑)
(国内↑)
5. 年龄分布年龄分布。国内数据来自CSDN,可以看到绝大多数开发者都集中在30岁以下,而40岁以上的开发者仅3%。国外的数据来自StackOverflow,可以直观看到35岁以上的专业开发者,占比40%。通过数据我们还可以粗略估计40岁以上的开发者不会少于三分之一。对比可见,国内对程序员的年龄歧视(不论是公开的或者是隐性的)仍然是普遍的。6. 薪资情况先来看看国内开发者近三年整体的薪资情况(这里统计的是月薪,定位人民币元),可以看到近几年都集中在8-17K,在整体受访者中占比均超过了40%。另外,以城市而论,国内2022年的统计中,北京29%开发者月薪超过17K,遥遥领先,说明北京是IT行业最为发达的地区,广东和上海分别为18%和17%,位居第二第三位。StackOverflow的薪资报告(这里统计的是年薪,单位是万美元)是根据职能来划分的,我也收集了近五年的数据,整体看薪资波动不大,多数职能是稳中有升的状况。SRE职位常年位于第一位,这个是Google最早提出来的一个职能类型,可以简单理解为「懂开发的资深运维」,国内目前开这个职位的公司还比较少。Levels则基本上是按照开发者的经验年限来划分的,其中「Entry-Level Engineer」即初级,通常是0-2年经验;「Engineer」即中级,通常是2-5年经验;「Senior Engineer」即高级,通常是5年以上经验;「Staff Engineer」即主管工程师,通常是10年以上经验;「Principal Engineer」即首席工程师,这个可能很多地方没有这种提法,图里我就不列出了。国内的字节跳动上榜前十,中级开发者给出了32.3万美元的薪资,这和我接触到的字节2-1的薪资水平区别比较大,不过,由于Levels的薪资数据主要是用户匿名提交,如果一个公司的样本较少的话,会出现偏差。大数据方向大家比较熟悉的Databricks和Snowflake薪资水平相当可以,Databricks在杭州有办公室,但我不知道是否招开发,在杭州的小伙伴可以打听打听。在Levels上我们还能看到不同城市开发者薪资水平的差距,湾区以23.4万美元的年薪中位数(不是平均值)位居全球第一,国内的话,上海、香港、北京、深圳位于亚洲区的前十榜单里,年薪中位数7-8万美元。对比就会发现,湾区的薪资水平还是很吓人的。7. 最后♨ 通过统计数据,可以在一定程度上避免个例或者小圈子带来的认知偏差,帮助我们拥有一个比较准确的图景。
♨ 直接以美元计价对比国内外的薪资可能存在偏颇,毕竟货币的实际购买力并不能用汇率直接换算。
♨ 小伙伴们在关注自己的工资条的同时,也可关注一下业界的新事物、新趋势。Keep calm and keep yourself updated!