作者 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

程序员,一个圈外人羡慕、圈内人喊苦的“神奇”职业——高薪、福利好是旁人羡慕的理由,高压、加班多却也是他们最常见的写照。

回想过去一年,程序员圈中可谓热闹非凡:雷军一句“为小米汽车而战”,使得智能自动驾驶成为行内热词;云原生和全面数字化趋势下,熟练使用 K8s 几乎成为了必备技能;元宇宙、Web 3 突然爆火,一度令程序员摸不着头脑;好不容易挨到年底了,一个猝不及防的 Log4j2 漏洞又召唤无数开发者深夜修 Bug......

与此同时,对于业内技术持续迭代、新兴趋势不断出现的形势,许多程序员也逐渐感到迷茫:“众多同行之中,我究竟处在什么位置?”、“面对日新月异的技术工具、平台、框架和场景,我又该如何抉择?”

在此,CSDN 重磅发布《2021-2022 中国开发者现状调查报告》。本报告囊括了各类开发者圈中的热点话题,不论是加班与涨薪情况、“大小周”的抉择,亦或是偏爱或讨厌的编程语言、常见学习路径等程序员最为关心的问题,都将在这份报告中一一揭晓谜底,更有字节跳动移动技术专家、大前端技术中台部门 ToB 项目技术负责人石延龙对报告结果进行分析。

首先,让我们一览本次报告的几个重要发现:

  • 被圈内称作“35 岁危机”的 30-40 岁从业者从去年报告中 16% 的占比提升至 19%——35 岁可能已并不再是程序员“魔咒”。

  • 只有不到 10% 的开发者会每天花费 70% 以上的时间写代码,并且大多开发者平均每天只写 200 行代码左右。

  • 近 70% 的国内开发者还是喜欢聚集在一线/新一线城市,并且 77% 的开发者表示,为了高薪,支持/可考虑“大小周”。

  • 今年 Java 开发者人数从去年的 50% 降至 40%,汇编语言被 37% 的开发者票选为最讨厌编程语言第一名,而 Python 成为最想要学习的编程语言。

  • 96% 的开发者每周都会保证一定的学习时间,其中学习 1-5 小时/周的占据 42%。另外仅有 4% 的受访者表示没有时间去充电学习。

  • 为了寻求更高的职级和更好的待遇,程序员普遍会采用三种方式:一是学习热点技术(75%),二是岗位晋升(67%),三是跳槽(47%)

接下来,就让我们通过这份报告,纵观国内开发者的真实现状吧!

程序员画像篇:编程从少年开始,35 岁不再是“魔咒”

随着近年来国内人工智能、云计算、数据库等 IT 产业迅猛发展,人才需求不断上涨,编程早已不限于大学课程,部分地区甚至已将其融入高中教育——编程从少年开始,以此实现“少年智则国智,少年强则国强”。从数据上来看,这一目标已不遥远:有 57.23% 的受访者表示第一次写下代码的时间是在 16-20 岁,即在高中或大学接触编程已十分普遍,在 30 岁之后接触编程的开发者仅占 0.8%。

图1 写第一行代码的年龄

技术演进下,近年来“自研”一词成为国产破局的关键,为此无数壮志满怀的少年在踏入社会时,纷纷选择了入局 IT:近 5 年选择从事编程的开发者超过 7 成。

图2 从事编程时长

不过,今年开发者圈中的形势有些不同:

  • 30 岁以下从业者比例从 82%(2019 年)、81%(2020 年),再度下降至 78%;反观被圈内称作“35 岁危机”的 30-40 岁从业者却从去年报告中 16% 的占比提升至 19%——35 岁可能已并不再是程序员“魔咒”。

  • 40 岁以下的女性开发者比例也在上升。结合去年报告,30 岁以下女性从业者占比达到了  12%(去年为 10%),同时在 30-40 岁程序员中,女性也占据了 8%(去年为 6%)。

不变的是,后端开发岗在 40 岁以下程序员圈中依旧热门。40 岁以上从业者中,担任技术经理的占比从去年的 11% 提升至 21%,可见随着年龄的增长,越来越多开发者开始走上了技术管理之路。

图3 开发者基本特征

在圈外人眼中,程序员的日常应该被“编程”占据,但事实并非如此。工作期间,只有不到 10% 的开发者会每天花费 70% 以上的时间写代码,并且大多开发者平均每天只写 200 行代码左右。

图4 开发者每天写代码行数

影响程序员工作效率的原因中,“缺乏清晰的流程”以 37.9% 比例位列第一,与其不相上下的是 37.8% 开发者认为会严重影响工作效率的“分散注意力的工作环境”。

对此,字节跳动移动技术专家石延龙认为,对知识密集型的研发工作而言,定义清晰的协作流程理应是团队合作顺利、高效产出的最重要因素。他建议,经验丰富的开发者可在项目管理上增加投入,以此提高整个团队协作效率;对于流程不畅的团队管理者,可考虑建设或引入优秀的 DevOps,将流程规范工具化,可以极大优化项目协作;而部分不想走管理的技术同学,也可以考虑做 DevOps 研发以提高团队效率。

图5 影响工作效率排行

除了流程不清严重影响工作效率,“通勤时间”也令 22.6% 的开发者感到头疼,而疫情之下衍生出的远程办公给了这部分开发者另一个选择。目前 Google、Facebook(现 Meta)等国外互联网企业均支持远程办公,国内 46% 的受访者表示自己所在公司也同样支持。但总体来说,国内开发者远程办公的频率不是很高,很多情况下只是一种应急方案,只有 4% 的开发者表示他们完全远程。

图6 开发者对远程办公的态度

程序员薪酬篇:高薪之下首选一线/新一线城市,可以考虑“大小周”

“高薪”,一直都是程序员群体的标签之一,近几年其薪资水平更是在逐渐拔高。去年,44.5% 的开发者月薪 8001-17000 元,如今这一数据已增至 49.2%,同时薪资在 17001-30000 元的程序员比例也由 16.2% 增至 20.5%。

图7 2020年开发者月薪分布情况

图8 2021年开发者月薪分布情况

报告数据显示,过去一年中,超过六成开发者表示工资有所上涨,甚至涨幅在 11% 以上还占据了 21%。但尽管行业整体薪资水平在逐步提升,依旧有 34% 的开发者表示工资没有发生任何变化。

图9 开发者月薪增长情况

在遍地男性的开发者圈中,女性开发者薪资是否会与男性一致?答:有一定差异,但差距不大。在月薪超过 1.7 万元的区间中,男性开发者占比为 29%,而女性开发者中也有 20% 的人拿着同样薪资待遇。甚至在 8 千至 1.7 万元薪资范围内,女性开发者的占比还略高于男性开发者。

图10 不同性别的开发者月薪占比

导致薪资水平不同的除了性别,还有开发者所处地域、每周工作时长、受教育程度、所在行业和工龄等重要因素。

  • 所处地域

地域对于薪资水平而言是一个重要影响因素。根据数据显示,月薪高于 1.7 万元的开发者中,近三成来自北京——依旧遥遥领先于其他地区(去年该数据为 30%)。其次便是广东和上海,同等薪资水平下差距不大,分别占比 18% 和 17%。

图11 各地区月薪高于1.7万开发者占比Top 10

如果聚焦到具体高薪人数占比,北京和上海也占据绝对优势:近半数开发者薪资均在 1.7 万以上,反观其它地区该薪资水平仅占两成左右。

图12 月薪高于1.7万在各地区中人数占比

或许是北上广深及其他新一线城市的整体薪资水平远高于其他地区,也或许是其中汇聚了产学研界较好的资源与机会等,近 70% 的国内开发者还是喜欢聚集在一线/新一线城市。

图13 开发者工作城市倾向

尤其是北京和广东,光这两个省市的开发者占比就能达到全国总数的 28.1%。另外值得一提的是,2020 年广东以拥有全国 16% 的开发者位列全国第一,而如今这一宝座已由北京以 14.2% 的占比拿下。

图14 开发者地域分布(省、自治区、直辖市、特别行政区)Top15

  • 每周工作时长

去年,互联网行业率先掀起一股“反内卷”热潮,字节跳动、快手等大厂先后宣布取消“大小周”,腾讯光子工作室更是推出“强制不加班双休”的规定,许多程序员对此欢呼道:内卷时代终结了。可发薪日的到账通知却令部分程序员感到“破防”。

报告数据显示,按照每周 40 小时标准工时工作的程序员中,仅有 20% 的人薪资高于 1.7 万元;而工作时长在 72-84 小时的程序员中,收入超过 1.7 万元的近一半。

图15 每周不同工作时长开发者薪资分布

正所谓“鱼和熊掌不可兼得”,虽然标准工时下很难拿到高薪,但依旧有三成程序员选择每周只工作 40 小时,他们也很少对工时有所不满。相比之下,工作时间越长,开发者的不满意度越高,例如每周工作 72-84 小时的程序员中,就有 55% 的人对工时不满。

图16 开发者工作时长

图17 开发者对工作时长满意度

人各有志,对于以上两种生活方式,程序员也有着各自的见解:有 23% 的开发者表示,为了高报酬宁愿“大小周”;但也有 41% 的开发者表示更注重身心舒畅,不想要“大小周”;另外还有 36% 的受访者表示可以考虑。

图18 开发者对大小周的态度

  • 受教育程度

从数据上来看,学历越高,高收入群体的占比也就相对较高。例如学历为硕士研究生的开发者中,薪资达到 1.7 万元以上的就有 55%。

图19 不同教育背景开发者的薪资分布情况

除了以上几点因素,开发者工龄和所在行业对薪资也有所影响:开发者薪资普遍会随着工龄而增长,如工作 11-15 年的开发者中,薪资在 1.7 万元以上的占比超过 60%;金融行业的高收入群体占比最高,其中 91% 的开发者月薪超过 8 千元。

程序员工具篇:Python 最受欢迎,云 IDE 崛起

在与程序员息息相关的编程语言方面,根据数据显示,使用 Java 的开发者数量正在逐年降低:与去年 50% 的用户量相比,今年 Java 开发者人数降至 40%——这一点也印证了 TIOBE 编程语言排行榜中 Java 流行度逐渐下降这一现象。

反观 Python。随着近年来数据挖掘和 AI 等领域蓬勃发展,Python 凭借其在数据分析、机器学习、Web 开发、测试等多个领域的出色发挥,市场占比大幅提高:去年 Python 还与 Java 相差 21%,今年已将这一差距缩小至 9.9%。甚至还有 27.3% 的开发者表示,如果有机会,希望能在未来把编程语言迁移到 Python。

图20 编程语言使用排行(调查项为多选)

在程序员最讨厌的编程语言中,占比 37% 的汇编语言排名第一,毕竟面向机器的程序设计语言不仅难以理解,对习惯了高级语言的开发者来说也难以编程。

图21 开发者最讨厌的语言排行(调查项为多选)

Web 框架方面,Vue.js 依旧稳居第一,但值得注意的是:Vue.js 使用者从去年不到 30% 的占比已增至 38.6%。可见随着 Vue 3.0 的普及,程序员圈中愈发流行用 Vue.js 进行 Web 开发。

图22 Web框架使用排行(调查项为多选)

开源吞噬世界,与此同时开源工具正在吞噬开发者。数据显示,过去一年有 37.9% 的开发者在使用开源技术框架 Node.js,而作为谷歌开源的 TensorFlow 和 Facebook(现 Meta)主力支持的  PyTorch,这二者的使用占比也在缓慢上升。

图23 技术框架使用排行(调查项为多选)

作为速度快、轻量级且功能强大的跨平台工具,Visual Studio Code 也深受开发者喜爱,约 39% 的开发者表示会在日常工作中使用它。

图24 开发环境使用排行(调查项为多选)

云 IDE 是近几年程序员圈中的新潮流,也是今年报告中新增的一个调查项。对于这一新兴平台,石延龙认为云 IDE 可能是在 Cloud Native 热潮下,业内对研发工具上云的一种追求。尤其是去年 GitHub 正式推出 Codespaces 功能,令许多开发者切实感受到了云 IDE 能够带来的收益:在浏览器中即可实现从写代码、编译、测试、调试到部署的完整开发体验,一切运行在云端,支持多人协作,不受本地资源限制,无限的扩展场景等等。

在此趋势下,许多开发者开始在日常开发中尝试用云 IDE 作为补充,其中 43% 的人使用 Visual Studio Online。遗憾的是,也因为云 IDE 过于“新”,超过六成开发者表示没用过云 IDE。

图25 云IDE使用情况(调查项为多选)

低代码也是近些年的热词之一,不过与其话题性相反的是,仅有 3 成左右的开发者表示曾在工作中使用过低代码开发平台:APICloud 最受欢迎,其次是阿里宜搭。

针对这一数据,石延龙分析道,目前的低代码/无代码平台还有限制,如应用场景少,灵活度低,交互复杂等等。但究其原理便可得知:想要做到低代码/无代码,需要将数据结构化,将控制流结构化,然后再建设可操作这些数据和控制流的交互逻辑,最终让用户通过交互生成自己的控制流,进而控制自己的数据。尽管目前数据和控制流的结构化方法和可结构化的数据和控制流都还有限,但很多人在不断努力者增加这些选择。石延龙畅想道:“也许,未来开发者的工作,就是使用人工智能技术,为扩展 NoCode 的场景枚举值而写 Code,让所有场景的用户都 NoCode。”

图26 低代码平台使用情况(调查项为多选)

疫情之下,远程协作显得格外重要,有超过一半的开发者将 GitHub 作为研发协作管理工具,其次是占比 26.3% 的 GitLab。

然而不论是框架、语言还是工具的选择,都需要在合适的操作系统中实现。尽管苹果推出的自研 M1 系列芯片使 Mac 的性能更加强悍,但在国内开发者圈中,Windows 操作系统依旧是的主流:超过 7 成开发者日常使用 Windows 操作系统,Linux 作为服务端开发的主要操作系统,其使用量也达到近 16%,而使用 macOS 的开发者则不足 10%。

图27 操作系统使用排行

程序员“升级”篇:跳槽不治本,技能提升才是王道

为了寻求更高的职级和更好的待遇,程序员普遍会采用三种方式:一是学习热点技术(75%),二是岗位晋升(67%),三是跳槽(47%)。

图28 开发者提升自己事业的方式

这三种方式中,在外界看来跳槽似乎是 IT 行业中很常见的现象,但如今数据证明事实并非如此:28% 的开发者表示并没有跳槽经历,甚至三年至十年才跳槽一次的开发者占比为 35%。

图29 开发者跳槽频率分布

另外一种“升级”方式是学习热点技术。工作之外的闲暇时光是许多开发者提升技能的重要时间,因此有 96% 的开发者每周都会保证一定的学习时间,学习 1-5 小时/周的占据 42%,其次便是每周学习 6-10 小时的开发者人群,占比 29%。在这之中,仅有 4% 的受访者表示没有时间去充电学习。

图30 开发者学习时长占比

具体怎么学?作为互联网的弄潮儿,程序员群体最为常见的学习路径便是参加在线课程。在汲取新知识面前,57% 的开发者会选择参加在线学习课程,同时有 48% 的开发者更倾向于通过自学来掌握一个新的编程语言、框架或工具。

图31 开发者持续学习路径排名(调查项为多选)

学会解决工作或学习中遇到的问题也是程序员必备技能之一。数据显示,近四成开发者遇到问题后会去百度查询解决方案,其次还有 36% 的开发者选择前往 CSDN 寻求帮助。

图32 遇到问题时的处理方式

然而随着年龄增长,多数程序员都会在自身技术得到充实后,面临一个艰难的抉择:坚持技术岗 vs. 转为管理岗。有人感慨“技术和体力跟不上了,只能做管理”,也有人呼吁“坚持自己的技术才是根本”。面对这一难题,33.8% 的开发者选择会坚持技术岗直到退休。但也有 51.9% 的开发者想成为一名管理者。

图33 开发者是否想成为一名管理者

最后,对于这份中国开发者现状调查报告的解读就到这里了。之后我们将陆续揭晓围绕中国开发者开源、基础软件、云原生这三大主题的调查报告,敬请期待。

宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨 | 揭晓中国开发者真实现状相关推荐

  1. 宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨!揭晓中国开发者真实现状...

    作者 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 程序员,一个圈外人羡慕.圈内人喊苦的"神奇"职业--高薪.福利好是旁人羡慕的理由,高压.加班多却也是他们最常见的写照 ...

  2. JavaScript开发区块链只需200行代码

    JavaScript开发区块链只需200行代码 用JavaScript开发实现一个简单区块链.通过这一开发过程,你将理解区块链技术是什么:区块链就是一个分布式数据库,存储结构是一个不断增长的链表,链表 ...

  3. JavaScript开发区块链只需200行代码 1

    使用JavaScript实现简单的开发一个区块链.通过javascript这一开发区块链的实现过程,你将会真正理解区块链是什么:区块链就是一个分布式数据库,存储结构是一个不断增长的链表,链表中包含着许 ...

  4. 月薪 36000,算法工程师日均写 7 行代码被开除

    程序员一天能写多少行代码?前不久,CSDN发布的<2021-2022中国开发者调查报告>显示,大部分程序员平均每天会写200行左右的代码. 那代码的数量能衡量一个程序员的水平吗?在此前的一 ...

  5. SpringBoot,用200行代码完成一个一二级分布式缓存

    缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库复杂.早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快. 后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存 ...

  6. js websocket同步等待_WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器...

    本文原题"Node.js - 200 多行代码实现 Websocket 协议",为了提升内容品质,有较大修订. 1.引言 最近正在研究 WebSocket 相关的知识,想着如何能自 ...

  7. 不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN)

     不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN) 生成对抗网络(Generative Adversarial Networks,GAN)最早由 Ian Goodfello ...

  8. 200行代码如何实现人脸识别开锁应用?

    多种条件限制之下,如何完成真人实景游戏场景下的人脸识别开锁功能?云加社区邀请到腾讯科技产品经理-高树磊,分享他是如何用200行代码,从系统架构.硬件选型.到系统搭建,一步步地实现此精致小巧的人脸识别开 ...

  9. 爬虫python代码-Python爬虫教程:200行代码实现一个滑动验证码

    Python爬虫教程:教你用200行代码实现一个滑动验证码 做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动.点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大 ...

最新文章

  1. [算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]
  2. 对NUnitAddIn做了下修改
  3. DNN出错:The compiler failed with error code 1.
  4. Opencv基础画图函数——line、circle、rectangle、Rect、ellipse、polylines、putText函数的用法
  5. 【codevs1565】【BZOJ2242】计算器,数论练习
  6. 安卓开发仿微信图片拖拽_Android 仿微信朋友圈发表图片拖拽和删除功能
  7. “上云”很 fashion 的今天,GeekPwn 搞了个比赛……
  8. Eclipse中修改SVN地址
  9. Makedown文件保存问题
  10. c语言 画图软件哪个好,电脑画图软件推荐
  11. 谷歌支付服务端服务账号订单校验
  12. 推荐一款自己开发的剪映字幕翻译工具
  13. 海森矩阵(Hessian Matrix)与泰勒展开式
  14. SqlServer安装Northwind数据库的通用方法
  15. mysql root有初始密码_mysql的root初始密码
  16. Stata基础:数据显示格式和四舍五入
  17. 常用正则表达式,常用表单验证javascript代码(转)
  18. 当前页面的video只播放一个
  19. IMAP协议定时监听接收邮件(QQ邮箱、网易邮箱都可)
  20. 效应论——破窗效应(zt)

热门文章

  1. 【设计模式】重载和重写
  2. 敏捷开发“松结对编程”实践之三:共同估算篇(大型研发团队,学习型团队,139团队,师徒制度,敏捷设计,估算扑克,扑克牌估算)...
  3. struts2学习笔记(二) 初识Struts2
  4. android service 样例(电话录音和获取系统当前时间)
  5. 深入理解定时器系列第二篇——被誉为神器的requestAnimationFrame
  6. 实验11 链表 程序1奇数值结点链表
  7. Django Rest Framework源码剖析(七)-----分页
  8. Static 静态内部类
  9. jQuery 学习笔记 事件委派
  10. VS开发工具常用插件