- 程序员的一天,日常都在做什么?
- 在前有编程语言历经 80 年的迭代,后有 GitHub Copilot、ChatGPT 等 AI 辅助编程工具的层出不穷,开发者的开发方式发生了什么样的变化?
- 哪种技术最热门与能拿到高薪?
为了洞察开发者及其技术的最新趋势,行业中领头的 Java IDE IntelliJ IDEA、Kotlin 编程语言背后的软件工具开发公司 JetBrains 在调研了来自全球 26,348 位开发者后,最新发布了《2023 开发者生态系统现状》(https://www.jetbrains.com/zh-cn/lp/devecosystem-2023/)。
本报告涵盖编程语言、工具和技术,以及受众特征和有趣的事实,基于此,我们也将了解开发者独特的生活方式,揭晓他们独特的兴趣爱好。
话不多说,先速览本报告的精彩亮点:
- JavaScript 使用率持续下降,苹果的 Objective-C 即将走到生命尽头;
- 2023 年,Scala、Go 和 Kotlin 开发者位列薪酬最高的三大类别
- 77% 的开发者使用 ChatGPT、46% 的开发者使用 GitHub Copilot
- 52% 的国内开发者为开源做过贡献
- Spark、Redis 是开发者最常用的大数据、数据库技术
- 转行做 IT 的主要年龄是三十多岁,占职业转变的 38%
- 近四分之三的受访者在职业生涯的某个阶段经历过倦怠
01
当代程序员的一天:聊天、开会、写代码
很多外行以及初入 IT 行业的从业者,往往只看到了高薪、加班、敲代码的标签,那程序员的日常究竟是什么样的?
对此,JetBrains 围绕开发者的生活方式揭晓了程序员的日常事务。
首先,当问及开始一天的工作时,开发者最先做的事情是什么时,68% 的受访者表示,其最先打开工作聊天工具,其次是分别打开 IDE /其他开发工具、查看邮件、日历等。
至于具体的一天是怎么分配的,55% 的开发者会花 10%-30% 的时间在会议和工作相关交流上。
15% 的人每天会花 60%-70%的时间用来编码,而超四成的开发者每天花在编码上的时间低于 50%。
在编码问题上,71% 的开发者选择运行手动代码审查来保证代码质量。
遗憾的是,经常遇到突发性任务,让他们没有时间足够的时间去保持项目高质量代码。这就需要不断地开会沟通,形成程序员工作的日常。
除了日常编码、开会之外,多数程序员也会花一些时间了解国内外科技大事,以及玩玩电子游戏。其中,21 岁以下受访者中 85% 有玩游戏这一爱好,但在 60 岁以上的受访者中,这一数字下降到 33%。
*02*
JavaScript 连续 7 年摘得桂冠,苹果的 Objective-C 即将迎来退休?
在新一年度的调查报告中,JavaScript 依然是最受欢迎的编程语言,占比 61%。其次分别为 Python、HTML/CSS、SQL、Java。
JavaScript 虽稳居第一,但使用率逐年下降
不过,对比过去 7 年的数据来看,JavaScript 的份额一直在下降。对此,JetBrains 估测,未来它仍然会呈现小幅下降趋势,其中主要有两层因素:
- 其一,在 JavaScript 用户中,想要学习另一种语言的程序员比例要高于其他语言的程序员。这也增大了用户流失的机率,而 TypeScript 将从用户迁移中获益。
- 其二,似乎一些最初将 TypeScript 与另一种语言结合使用的程序员正在逐渐过渡到只使用该语言。2020 年,有 47% 的 TypeScript 用户将它与 JavaScript 一起使用;今年,这一数字下降到 38%。可以合理地假设,未来 JavaScript 的份额将进一步下降几个百分点。
Objective-C 客观来讲已经退休了
排在榜单末位的 Objective-C 在过去六年间已经失去了三分之二的用户,JetBrains 官方直接做出这样的评价——「它似乎即将走到生命的尽头」。
在过去一年中,只有不到 2% 的程序员至少使用过一次,只有 11 名调查参与者报告说该语言是他们的主要语言。Objective-C 使用率的下降速度甚至超过了古老的 COBOL 和 Perl 语言。
JetBrains 表示,这种语言自 1984 年推出以来一直发展良好,直到 Apple 于 2014 年发布其继承者 Swift。由于存在其他跨平台语言,例如 Kotlin、Dart 等,iOS 开发者的选择余地很大,几乎没有理由继续使用 Objective-C。
Rust:在任何编程语言榜单都不容忽视的一颗新星
在今年最受欢迎的语言中,唯一创造新使用记录的语言是 Rust。Rust 的用户群在过去五年中稳步增长,有望凭借其严格的安全性和内存所有权机制取代 C++。根据 JetBrains 的数据显示,有六分之一的 Go 用户正在考虑采用 Rust。
网站、使用工具、数据库是最常被开发的软件类型
调研结果显示,超八成的开发者使用 JavaScript、TypeScript 和 PHP 来开发网站,57% 的 SQL 用其开发数据库/数据存储系统。
**Scala、Go、Kotlin 成为最高薪的三种编程语言
**
2023 年,Scala、Go 和 Kotlin 开发者位列薪酬最高的三大类别。雇主们正在认识到能够驾驭这些语言复杂性的专家的价值,从而催生了 Scala、Go 和 Kotlin 开发者作为最高收入者的竞争格局。
03
ChatGPT 是最常用的 AI 工具,开发者主要使用它询问软件开发问题
在本次报告中,JetBrains 首次加入了 AI 趋势的调研。
数据显示,开发者对 AI 文本生成工具比代码生成工具更熟悉,这可能是因为 ChatGPT 的受欢迎程度和易用性。
然而,由于 ChatGPT 等最新的 AI 文本生成工具也能够编写代码,开发者也可能将其用于这一目的。目前 77% 的开发者正在使用 ChatGPT、46%的人在使用 GitHub Copilot。但无论是由于与工作流的集成不完善还是通用方式,目前很少有开发者在长期使用。
此外,开发者使用 AI 助手的最常见方式是使用自然语言询问软件开发相关一般问题。
79% 的开发者认为编写代码是最耗时的活动,但它也是受访者最喜欢的活动。
只有 1.6% 的受访者从未听说过生成式 AI 工具,而在尚未熟悉生成式 AI 工具的人中,略低于一半的人计划在不久的将来做出尝试。安全顾虑是采用生成式 AI 工具时最常被提及的障碍。
总体而言,受访者似乎对 AGI(通用人工智能)持积极态度。不到五分之一的人担心 AGI 会对人类产生敌意。然而,十分之六的受访者对使用 AI 存在安全顾虑。
数据显示,虽然五分之三的受访者认为 AI 编码工具将从根本上改变软件开发就业市场,但只有 13% 相信 AI 将完全取代开发者编写代码。尽管如此,大约三分之一的人相信软件工程一定会变成提示工程。
总体看来,开发者相当乐观,相信 AI 将成为协助编写代码的新工具,而不是开发者被 AI 所取代。
*04*
**Spark、Redis 是开发者最常用的大数据、数据库技术
**
信息时代,如何用好数据也是很多开发者面临的难题。调研显示,Spark 是开发者最常用的批处理工具,占比 30%。
不出所料,Apache Airflow 是最受欢迎的编排工具,特别是在数据工程师中。有趣的是,9% 的编排工具是自定义或自建的。
在数据库方面,MySQL、PostgreSQL、MongoDB 是开发者最常用的数据库。整体来看,SQLite 的排名从第三位下降到第五位,这一趋势其实还是让不少开发者感觉困惑的地方,因为轻量化、易于使用的 SQLite 可用于独立桌面应用程序、嵌入式开发、移动应用程序的本地存储以及几乎其他任何地方,但是它的使用率的确较去年下滑了不少。
按照区域来显示,中国大陆最常用 Redis、MySQL 等数据库。
与此同时,Navicat 在中国非常受欢迎,有 42% 的开发者使用它。这并不奇怪,因为这款工具从一开始就为中国用户量身定制,积极建立了在该市场的强大影响力。
*05*
其他值得关注的最新趋势
52% 的国内开发者为开源做过贡献
在开源趋势下,41%的受访者为开源项目做出过贡献,20% 或多或少定期做出贡献。值得关注的是,全职开源开发者占少数,而能获得报酬的开源开发者只有 4%。
在地理位置上来看,中国大陆有 52% 的开发者为开源项目做出贡献,排在第五位。
云领域,阿里云的使用率相较去年有所增长
在开发过程中,54%的受访者表示会使用 Docker。
而使用 K8s 集群最流行的方式是 kubectl——Kubernetes 的官方命令行工具。许多云提供商提供自己的控制台或命令行界面 (CLI) 工具,搭载特定功能并与云提供商的服务和功能集成。另一种常用的管理 K8s 集群并与之交互的方式是使用适用于 JetBrains IDE(例如 IntelliJ IDEA、GoLand 和 PyCharm)的特殊插件,或适用于 Visual Studio Code 的插件。这通常包括集群探索、部署管理和资源可视化等功能,这使开发者更容易使用 Kubernetes。
在云服务方面,AWS 稳居第一,其份额是第二名 Microsoft Azure 的两倍。与此同时,阿里云的使用量相较去年有一定的增长。
Python、C++、C 是嵌入式开发者最常用的语言
近几年,随着 AI 的崛起,嵌入式向着更智能、更个性化、更高效的方向发展,开启了新的应用场景和机遇,也有越来越多的开发者加入这一浪潮之中。
根据数据显示,31%的开发者在嵌入式开发中使用 Python 语言,其次热门的语言有 C++、C 和 Java。
嵌入式开发中使用的语言
对于嵌入式开发者而言,C++ 是必入门的一项编程语言。近几年来,不少人认为 C++ 越来越复杂,调查显示,即使如此,也有很大一部分嵌入式开发者已经在使用 C++20 了。因此,此版本扩展了编译时能力,这对于那些非常重视运行时性能的行业非常有利。
经常使用的 C++ 标准
Visual Studio Code 则是这些开发者最常用的 IDE。
最常用 IDE/编辑器
当问及嵌入式开发者最常使用那些单元测试框架时,35% 的 C++ 开发者在使用 GoogleTest。对此,PlatformIO Labs 首席执行官Ivan Kravets 评价道,嵌入式软件开发生态系统中越来越高的测试框架采用率是一个有希望的趋势,虽然目前仍有 20% 的开发者尚未使用。这种向测试驱动方式的转变标志着一个积极的方向,增强了嵌入式系统的可靠性和质量,也展示了业界交付稳健产品的承诺。
经常使用哪种(哪些)单元测试框架
GCC 是开发者最常使用的编译器工具。“GCC 编译器的压倒性偏好可归因于其开源特性、广泛的架构支持和强大的优化功能,这为开发者的嵌入式项目带来了灵活性和经济高效的解决方案。”
经常使用哪种(哪些)编译器
**团队工具
**
在团队内部,76% 的开发者经常使用源代码协作工具。
最常使用的工具类型
对很多团队而言,其在 2020 年和 2021 年最常使用了移动应用通讯工具,近两年,随着越来越多的员工重返办公室,这些工具的使用率均有所下降。
具体工具维度,对于企业而言,Jenkins 是最受欢迎的 CI 系统工具,而 GitHub Actions 是个人开发者最常用的。
与此同时,Git 已成为通用软件开发中版本控制的事实标准。但是,在某些领域,其他系统仍有很强的竞争力,例如游戏开发领域的 Perforce(35% 的用户是游戏开发者)。
最常用的版本控制系统
*06*
开发者生活方式:转行 IT 源于兴趣,四分之三的开发者曾经历过倦怠
事实上,在全球科技竞争愈演愈烈的趋势下,很多人加入 IT 行列。
调查数据显示,转向 IT 的主要年龄是三十多岁,占职业转变的 38%。从职业生涯一开始就从事 IT 行业的人中有 46% 年龄在 21-29 岁之间。
而之所以选择转行,71% 的受访者表示,是因为“技术、计算机以及与之相关的一切对我来说都很有趣”。20%的人出于「能拿到丰厚的薪水和其他福利」这一层因素。更有趣的是,在转型 IT 的人中,有 14% 的人是被远程工作的可能性所吸引,只是当前全球“远程办公”的趋势正在减缓。
对受访者来说,良好的工作时间、良好的薪酬和感觉自己能有所成就是开发者选择一家公司的关键因素。
对于开发者而言,学习一门新语言的动机最主要还是出于兴趣,其中 Python、JavaScript 和 Java 在他们开始或继续学习的语言列表中位居前列。超过 50% 是出于兴趣学习新语言,44% 和 43% 的学习者分别是出于个人项目和跟上最新趋势。TIOBE 指数证实了 Python 的受欢迎程度,许多组织在 AI、自动化、数据分析和数据可视化需求方面的持续爆炸式增长使其成为对任何开发者都有用的语言。
随着现在竞争环境激烈,近四分之三的受访者在职业生涯的某个阶段经历过倦怠。
好消息是,近一半的人关注自己的心理健康,主要是通过自己练习心理技巧。
在进一步调研中,JetBrains 发现经历过倦怠的开发者倾向于表示提高其日常编码效率的因素涉及心理健康、自我组织和时间管理(46% 对未经历过倦怠者的 42%),以及情绪状态管理(25% 对 15%),而较少表示工具提高其编码效率。
同时,未经历过倦怠者更常提到的因素包括学习 IDE(59% 对经历过倦怠者的 55%)、工作和流程的组织(31% 对 28%),以及 IDE 功能升级(37% 对 32%)。