作者 | 郑丽媛
出品 | 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 开发者是否想成为一名管理者
最后,对于这份中国开发者现状调查报告的解读就到这里了。之后我们将陆续揭晓围绕中国开发者开源、基础软件、云原生这三大主题的调查报告,敬请期待。