2022 年开发者时间报告
0. 阅读完本文你将会
了解开发人员对于开源代码的使用程度
了解开发人员在日常工作中把时间浪费在哪里
了解开发人员在远程工作模式下的效率怎么样
本文一共 2600 字,阅读时长大概 6 分钟。
1. 前言
软件开发人员到底把时间花在了哪里呢?随着工作场所和工作方式发生了巨大变化,这个问题变得越来越举足轻重。现在的人才缺失也达到了前所未有的严重程度,每个人也想知道开发人员们对他们的工作满意否。
开发人员更想做什么?或者他们更不想做什么?代码构建的过程哪一部分是最让人心烦的?开发人员真正花费在写代码的时长有多少?我们调查了 600 位软件开发工程师,然后汇成了下面这样一份可能会令你惊奇的报告。
2. 报告
2.1 开源代码的使用
在我们想象中,一位软件工程师的一天应该是这么度过的——在 IDE 中写下崭新的代码,构建新的功能,修复 bug 等。
但是实际上在 2022 年,绝大部分的软件工程师的笔记本上跑的是别人的代码。他们的代码要么来源于开源库,要么复用公司代码库中的其他部分或者直接从网上”借鉴“。
2.1.1 开源使用调查
开源流行的论调已司空见惯,但是有多少开发人员会认为开源对于今天的代码基库非常重要呢?
大概 90%的受访开发人员认为开源代码对于他们的日常工作来说至少是一般重要
的。仅有 1%的开发人员胸有成竹地认为开源代码根本不重要
。
如果你用 Node 开发你的 app,很明显你无时无刻不在使用开源代码。然而开发人员对于开源代码的依赖远不止如此。
超过 80%的开发人员每个月至少一次使用开源代码(通过 StackOverflow 或者其他方式)。大约 50%的开发人员是每周一次至少一次。相比于中高级开发人员来说,初级开发人员的比例稍微高些。
开发人员对于开源代码的使用频率日渐增长,一方面它促进了软件开发,但是它也带来了一些隐患和担忧。比如:
软件供应链的安全问题(参考 Log4J 漏洞)
谁来支付开源工作者的报酬
幂律分布现象
谁来承担开源代码的责任
开源软件在今天的软件生态系统中的角色可谓是至关重要,然而上面这些议题还没有提升到与开源生态同等的地位。
2.2.1 代码复制
图里的数字说明了一件事:开发人员正在乐此不疲地复制大量代码。当然,这里的复制行为不只是从网络上拷贝,也包括复用你自己写过的代码。
相比中高级开发人员来说,初级开发人员复制的代码更多。这一行为也符合上一小节关于使用开源代码的调查结论。
2.2 时间都去哪了?
尽管我们拥有了更多的工具(如 Vercel,Netlify 等),但是部署一个应用程序反而更加复杂困难了。相比于过去,软件应用在这个世界占据了更大的一席之地。随之而来的是,它也带来了更多运行时的异常情况以及过去不存在的可靠性。
相应地,我们需要更加频繁地测试软件。现在花费数个小时去跑集成测试算得上常规操作。但是集成测试却很难去构建——它需要假数据,mock,stub。我们在不同的运行系统中、夜间模式,白天模式,各种浏览器中,甚至是不同的 Mac 芯片里进行测试。
毫无疑问的是软件工程师更乐意花费更少时间在测试上。对于这个观点,无论是初级开发人员还是中高级开发人员都表示赞同。
下表列出了开发人员最想节约时间的事项:
1. 中高级开发人员
2. 初级开发人员
2.2.1 等待机器
随着软件代码的构建过程变得更加复杂——特别是还有很多测试(这当然是好事情),软件开发工程师们正在花费更多的时间用来等待机器的运行。
在一张很大的表上执行 SQL 查询会花费很长时间,数据库的同步变得缓慢,一个庞大的代码库会花费你 20 分钟来构建——这些都浪费了宝贵的时间。
2.2.2 等待别人
如果生命只是写代码,事情会变得更加简单。但是实际上呢?
我们的调查报告显示,人为的障碍才是开发人员每天要面对的最难的几件事之一。比如:
项目方向上的颠覆性转变
code review 的拖沓
试图搞明白谁写了这段代码
甚至有时候,开发人员需要花费整整一个礼拜将某位软件工程师的想法落地。不信吗?请看这篇文章。
1. 请给我 feedback
”嘿,我只是想把这个东西拿出来 review 一下——很想在今天结束之前把这个东西部署好“——57%的开发人员认为 code review 要花费四个小时才能请求合并,26%的开发人员认为 code review 可以花费一天的时间。
2. 这代码到底是谁的?
超过 30%的开发人员表示,搞清楚谁是某段代码的拥有者——以及获取代码上下文的需要,可能要超过半天的工作时间。而在大公司里,这项工作的拖沓更加普遍:在员工人数过千的公司里,它可能需要一个工作日。在员工人数较少的公司中,这一比例低于 10%。
3. 抱歉迟到了,我刚在面试别人。
每个人看起来似乎都一直在招聘软件工程师。而且在职的软件工程师承担了很大的招聘压力——面试,人脉关系或者其他事项。超过 30%的开发人员表示他们更情愿在招聘和面试上花费更少的时间。
在这个方面,大公司的工程师们也不例外。员工数超千人的公司的 45%开发人员想要在招聘上花费更少的时间。这个比例比员工数少于 250 人的公司的比例高出了将近 50%。
这两个比例的差异可能纯粹是因为公司规模——更大的公司会有更长更繁琐的面试流程
。当然除了公司规模,公司成长速度也是一个重要因素。快速成长的公司需要迅速招聘软件开发工程师,当然它们其实也没有充足的人手去应对面试和招聘带来的压力。
2.3 远程工作
在新冠疫情大流行的当下环境,我们可以看到在Hacker News的头版上看到关于远程工作的讨论。无论如何,远程工作为软件工程师提供了尝试不同工作方式的机会。有些人喜欢它,有些人真的不喜欢。
首先,开发人员普遍认为他们的工作效率和疫情之前差不多。
2.3.1 哪种办公方式更有效率?
话虽如此,很多开发人员觉得他们还是在办公室更有效率。只能在办公室工作的开发人员觉得自己很有效率的比例达到了 68%,而不完全在办公室工作的开发人员觉得自己效率高的比例只有 34%,前者达到了后者的两倍。
2.3.2 深度工作时间有多长?
我们都在追寻着那种甜蜜的心流状态,但是富有价值的东西总是不容易得到的。
我们的调查发现,开发人员平均每周只有大概10个小时的深度工作时间。
导致这一结果的部分原因是各种让人分心的事情——面试,代码审查的等待,测试,和代码构建,甚至是搞清楚谁写了那段代码。初级开发者的深度工作时间超出了中高级开发者大概 20%——主要是因为初级开发者没有那么多管理事务。
2.4 你的想法呢?
唯一不变的就是变化,这一点在软件生态的世界里是颠扑不破的真理。我们构建、部署和监控 app 的方式每年都在发生变化,我们如何花费时间也是如此。我们希望这个调查报告可以为你带来一点不一样的有趣的数据。
版权声明: 本文为 InfoQ 作者【翊君】的原创文章。
原文链接:【http://xie.infoq.cn/article/8c242e39680f07de1a69328cf】。文章转载请联系作者。
评论