0. 阅读完本文你将会
- 了解开发人员对于开源代码的使用程度
- 了解开发人员在日常工作中把时间浪费在哪里
- 了解开发人员在远程工作模式下的效率怎么样
本文一共2600字,阅读时长大概6分钟。
1. 前言
软件开发人员到底把时间花在了哪里呢?随着工作场所和工作方式发生了巨大变化,这个问题变得越来越举足轻重。现在的人才缺失也达到了前所未有的严重程度,每个人也想知道开发人员们对他们的工作满意否。
开发人员更想做什么?或者他们更不想做什么?代码构建的过程哪一部分是最让人心烦的?开发人员真正花费在写代码的时长有多少?我们调查了600位软件开发工程师,然后汇成了下面这样一份可能会令你惊奇的报告。
2. 报告
2.1 开源代码的使用
在我们想象中,一位软件工程师的一天应该是这么度过的——在IDE中写下崭新的代码,构建新的功能,修复bug等。
但是实际上在2022年,绝大部分的软件工程师的笔记本上跑的是别人的代码。他们的代码要么来源于开源库,要么复用公司代码库中的其他部分或者直接从网上”借鉴“。
2.1.1 开源使用调查
开源流行的论调已司空见惯,但是有多少开发人员会认为开源对于今天的代码基库非常重要呢?
大概90%的受访开发人员认为开源代码对于他们的日常工作来说至少是一般重要
的。仅有1%的开发人员胸有成竹地认为开源代码根本不重要
。
如果你用Node开发你的app,很明显你无时无刻不在使用开源代码。然而开发人员对于开源代码的依赖远不止如此。
超过80%的开发人员每个月至少一次使用开源代码(通过StackOverflow或者其他方式)。大约50%的开发人员是每周至少一次。相比于中高级开发人员来说,初级开发人员的比例稍微高些。
开发人员对于开源代码的使用频率日渐增长,一方面它促进了软件开发,但是它也带来了一些隐患和担忧。比如:
- 软件供应链的安全问题(参考Log4J漏洞)
- 谁来支付开源工作者的报酬
- 幂律分布现象
- 谁来承担开源代码的责任
开源软件在今天的软件生态系统中的角色可谓是至关重要,然而上面这些议题还没有提升到与开源生态同等的地位。
2.1.2 代码复制
图里的数字说明了一件事:开发人员正在乐此不疲地复制大量代码。当然,这里的复制行为不只是从网络上拷贝,也包括复用你自己写过的代码。
相比中高级开发人员来说,初级开发人员复制的代码更多。这一行为也符合上一小节关于使用开源代码的调查结论。
2.2 时间都去哪了?
尽管我们拥有了更多的工具(如Vercel,Netlify等),但是部署一个应用程序反而更加复杂困难了。相比于过去,软件应用在这个世界占据了更大的一席之地。随之而来的是,它也带来了更多运行时的异常情况以及过去不存在的可靠性。
相应地,我们需要更加频繁地测试软件。现在花费数个小时去跑集成测试算得上常规操作。但是集成测试却很难去构建——它需要假数据,mock,stub。我们在不同的运行系统中、夜间模式,白天模式,各种浏览器中,甚至是不同的Mac芯片里进行测试。
毫无疑问的是软件工程师更乐意花费更少时间在测试上。对于这个观点,无论是初级开发人员还是中高级开发人员都表示赞同。
下面的表列出了开发人员最想节约时间的事项:
1. 中高级开发人员
类别 | 比例 |
---|---|
测试(编写测试,常规测试等) | 32% |
招聘或者面试新员工 | 31% |
紧急需求 | 30% |
和同事和睦相处 | 26% |
不同团队和架构的整合工作 | 26% |
关于技术、产品的问题或者流程内部会议 | 26% |
不同团队和架构的整合工作 | 26% |
组织策划 | 25% |
2. 初级开发人员
类别 | 比例 |
---|---|
测试(编写测试,常规测试等) | 37% |
重构代码 | 35% |
深度工作 | 35% |
编写新功能 | 33% |
招聘或面试新员工 | 33% |
紧急需求 | 33% |
结对编程 | 32% |
写文档(对外或者对内) | 32% |
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的方式每年都在发生变化,我们如何花费时间也是如此。我们希望这个调查报告可以为你带来一点不一样的有趣的数据。