机器之心报道
参与:张倩
996 的程序员加班有多狠?哪些省是加班重灾区?大家都用几种语言编程?这里有一份《2019 程序员行为统计白皮书》。
这份白皮书由国内智能编程机器人公司 aiXcoder (www.aixcoder.com)联合机器之心发布。aiXcoder 是利用智能化技术进行「程序代码的自动生成与补全」的领先者,其代码自动补全产品的用户覆盖了国内 32 个省、直辖市和自治区,海外覆盖 19 个国家或地区。本报告的统计结果是从随机抽样出的 15000 名开发者中得出。
为确保用户隐私数据不被分析和泄露,本报告所涉及的统计数据不包含具体用户隐私信息。由于调查对象只涵盖 aiXcoder 的部分用户,因此统计数字可能存在一定的偏差,结果仅供参考。
在报告中,我们发现了一些有趣的结论:
- 近三成程序员周末加班,清明节是程序员们加班最多的节假日;
- 注册手机号来自湖南的程序员周末加班比例最高,其次是河南;
- 下午是程序员的产能高峰,周二程序员最高产;
- 近三成程序员使用两种及以上编程语言进行开发。
本次调查以程序员编写代码的行为为核心展开,从不同角度对程序员每日编程活跃情况、每周活跃情况、每月活跃情况等数据进行分析。既包含工作日和休息日的行为对比,也包含不同地区开发者活跃情况及日常编程习惯偏好的对比,还包括关于日常加班、节假日加班等情况的调研。
首先,从地域分布的角度,本次调研的 15000 名样本程序员地理分布如下:
样本程序员地域分布情况(单位:人)
加班情况
近三成程序员周末加班,30% 加到晚上 10 点
报告显示,在周末加班编写代码的程序员(周六、周日有一天加班即计算在内)占调查样本总数的 28.36%;
其中,周六加班编码的程序员比例为 20.86%,周日加班编码的程序员比例为 14.46%。周六加班的程序员数量是周日的 1.44 倍,周末两天均加班的程序员比例为 4.87%。
在工作日中,调查样本中有 28.71% 的程序员加班到晚 8 点之后;有 14.20% 的程序员加班到晚上 10 点之后。
在周末加班的程序员中,有 43% 的程序员加班到 8 点之后;有超过 30.33% 的程序员加班到晚上 10 点之后。看来,程序员周末加班的时候,倾向于工作到更晚。
样本程序员的加班情况(加班人数在总样本人数中的占比)。
节假日中,清明节加班最多
除了周末,程序员也会在法定节假日加班。调查报告显示,在国家法定节假日中,程序员加班人数比例最高的假日是清明节(加班人数占总调查人数的 30.09%),加班人数比例最低的是端午节(加班人数占总调查人数的 18.25%)。小编感叹,清明时节雨纷纷,码农加班欲断魂。
各法定节假日程序员加班人数占总样本数比例
湖南程序员周末加班比例最高
报告还依据样本程序员注册 aiXcoder 所使用的手机号码,对程序员的地域特征进行了调查。结果发现,排除程序员绝对数量的前提下,注册手机号来自湖南的程序员中,周末加班人群的占比最高,为 39.23%。其中,周日加班的人数占比湖南为最高,周六加班人数占比河南为最高,但湖南也不甘示弱,以 0.01% 的差距紧随其后。
注册手机号来自各地区的程序员周末加班人数占比情况(百分比)
此外,注册手机号来自北京的程序员周末加班人群的占比相对较低,但也达到了 24%,同时,从周六、日中只加一天班的比例来看,手机号来自北京的程序员中加班人员的占比也最低,分别为 17.62% 和 12%。(报告中也指出,这一统计结果与随机抽样人群中北京程序员人数较多有关,仅供参考。)
节假日加班时,程序员「同样很卖力」
在这份报告中,调查者还统计了程序员在工作日和节假日中分别用于编写程序的时间。结果发现,在法定节假日加班的程序员,其用于编写代码的时间几乎与工作日相当,工作日仅比节假日高出 10.62%。
每月活跃情况
5 月份、11 月份的工作日程序员最忙,1 月份稍清闲
在工作日的相关统计中,我们发现一年中程序员在 5 月份和 11 月份的每日平均编程时间最长(两者几乎相同),1 月份程序员的每日平均编程时间最短,仅为 5 月份的 72.4%。
各月份工作日中程序员每天平均编码时间统计(以 1 月份为基准)
节假日 3 月最忙,2 月最闲
在对节假日加班的统计中,程序员在 3 月份的节假日中每日平均编程时间最长,2 月份的平均每日编程时间最短,仅为 3 月份的 69.53%。
各月份节假日中程序员每天平均编码时间统计(以 1 月份为基准)
每日活跃情况
程序员活跃情况是按照单位小时内处于编程状态的程序员的数量进行统计。只要在单位时间内,程序员曾处于编写代码的状态,则记录该时间段为程序员活跃时间。统计时间范围不包含每日午餐、晚餐、休息时间,只统计程序员的正常工作时间,范围为:上午:9:00—12:00;下午:13:00—19:00。
下午是产能高峰
统计中发现,工作日的 16:00-17:00 是程序员编写代码最活跃的时间。具体而言,在每天某单位时间段曾处于活跃状态的程序员中,56% 的程序员在 16:00-17:00 之间处于活跃状态,显著高于其他时间段。具体统计如下图:
工作日各时间段程序员平均活跃度情况(活跃程序员占比)
各工作日各时间段程序员活跃度情况(活跃程序员占比)
在周末加班的程序员中,有 40% 的程序员在每天下午 15:00-16:00 的时间段处于编写代码的活跃状态,也显著高于其他时间段。具体统计如下图:
双休日各时间段程序员活跃度情况(活跃程序员占比)
周二最高产,周五「无心编码」
程序员每周活跃情况是按照每天完成的代码量进行统计,代码量按照完成代码行数进行统计。如图所示,在平均情况下,每周二程序员完成代码行数最多,占每周完成代码的 23%;每周五完成代码行数最少,占每周总代码行数的 17%。
样本程序员在各工作日完成代码量占周代码量的比率(百分比)
编程语言&IDE 使用
近三成程序员使用两种及以上编程语言进行开发
这份报告还调查了编程语言和 IDE 的使用情况(注:统计范围限于 aiXcoder 当前支持的 8 种编程语言和 11 种 IDE。编程语言包括 Java、C/C 、Python、JavaScript、PHP、TypeScript、Go;IDE 包括 IntelliJ、VS-Code、Eclipse、Pycharm、Clion、Sublime)。
在被抽样调查的 15000 名 aiXcoder 样本用户中,编程语言的使用比例分布如下:
样本程序员中使用各编程语言的情况(百分比)
其中,Java 语言的使用者比例最高,达到 28%,其次是 Python 语言和 JavaScript 语言,使用人数比例分别为 21% 和 18%。在统计样本中,72.3% 的程序员在开发过程中只使用一种编程语言,27.7% 的程序员使用两种及以上编程语言进行开发。
IntelliJ IDEA 使用比例最高
在统计样本中,程序员使用 IDE 的情况分布详情如下:
样本程序员中使用各 IDE 的情况(百分比)
其中,IntelliJ IDEA 是使用比例最高的 IDE,比例为 33%,其次是 VS Code 以及 VS Studio,比例分别为 15% 和 11%。
常用的第三方库
报告从用户后台模型使用率的角度,统计了最常被程序员使用的编程语言第三方库。统计的编程语言包括:Python、Java、C、C 、JavaScript、TypeScript、Go、Php 和 Kotlin,其中的一些结果统计如下:
对于 Python 语言而言,最常被程序员使用的后台模型中,包含 requests 库的模型使用人数占比最高,达到 23.31%,紧随其后的是 numpy、six 和 matplotlib;对于 Java 语言而言,包含 junit 库的模型使用人数占比最高,达到 61.19%,其后是 org.slf4j、guava 和 junit.framework;对 Go 语言,包含 github.com/stretchr/testify 的模型使用人数占比最高,为 15.38%。
具体统计如下:
Python语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | requests | 21.31% |
2 | numpy | 18.31% |
3 | six | 11.68% |
4 | matplotlib | 9.39% |
5 | scipy | 8.35% |
Java语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | org.junit | 61.19% |
2 | org.slf4j | 27.79% |
3 | guava | 22.39% |
4 | junit.framework | 18.87% |
5 | org.hamcrest | 18.37% |
Go语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | github.com/stretchr/testify | 15.38% |
2 | github.com/pkg/errors | 8.11% |
3 | gopkg.in/yaml.v2 | 5.36% |
4 | github.com/golang/protobuf/proto | 4.93% |
5 | github.com/gorilla/mux | 4.30% |
C语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | openssl | 8.96% |
2 | zlib | 8.55% |
3 | X11 | 5.66% |
4 | GL(OpenGL) | 4.42% |
5 | curl | 4.31% |
C 语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | boost | 20.80% |
2 | gtest | 11.73% |
3 | zlib | 5.58% |
4 | catch | 4.93% |
5 | GL(opengl) | 4.84% |
JavaScript语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | react | 7.93% |
2 | lodash | 3.07% |
3 | rollup | 2.41% |
4 | sinon | 1.91% |
5 | vue | 1.80% |
TypeScript语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | angular | 20.22% |
2 | rxjs | 15.70% |
3 | core-js | 12.27% |
4 | chai | 10.48% |
5 | express | 10.13% |
Php语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | Symfony | 18.33% |
2 | PHPUnit | 11.48% |
3 | Psr | 10.75% |
4 | Illuminate | 9.96% |
5 | GuzzleHttp | 7.23% |
Kotlin语言 | ||
---|---|---|
编号 | 模型包含的库名称 | 使用人数比例(百分比) |
1 | android/androidx | 74.57% |
2 | org.junit | 57.22% |
3 | kotlinx | 46.05% |
4 | okhttp3 | 30.69% |
5 | com.google.gson | 18.95% |