“神奇”的程序员日常:不写程序、运行别人的代码、每周只“深度工作” 10 小时?
很大程度上,人们习惯于将“软件开发工程师”、“软件测试工程师”、“运维工程师”等计算机行业相关岗位等同于“程序员”,而顾名思义,其工作主要是写程序、敲代码——理论上来说,应该是这样的。
但事实证明,多数程序员的真实日常并非如此:
据 DevOps 公司 Software 的代码时间报告显示,大多数开发人员平均每天的编码时间为 52 分钟。
据 CSDN 发布的《2021-2022 中国开发者现状调查报告》显示,只有不到 10% 的开发者会每天花费 70% 以上的时间写代码,且大多开发者平均每天只写 200 行代码左右。
近日,低代码应用公司 Retool 也最新发布了一份基于 600 名软件工程师的调查报告,其结果依旧令人感到意外:软件工程师平均每周只有大约 10 个小时的“深度工作”时间,甚至运行的还大多是别人的代码。
被“困”在琐事之中的程序员
既然每周只有约 10 个小时的“深度工作”时间,其余时间他们在干嘛?答:他们被“困”在了层出不穷的琐事当中,面试、等待代码审查、测试和构建,还要弄清楚谁拥有什么代码。
漫长的测试流程
在最希望可以减少时间花费的事项上,不论是初级还是高级工程师,都不约而同地认为测试流程实在是浪费了太多时间。
随着项目功能愈发完善,构建变得愈发复杂,为确保稳定性,测试必不可少。但问题在于,在大型表上运行 SQL 查询需要很长时间、数据库同步很慢、构建一个单体存储库可能就需要 20 分钟——这也就意味着,软件工程师只能花费许多时间在等待上。
等待代码审查
除了必须等待的测试流程,与人交际也令许多开发者感到“头疼”:38% 的工程师表示“等人”也是一个重要问题。57% 的受访者指出,他们通过代码审查获得 PR 需要 4 个多小时,还有 26% 的人表示这个过程需要一天以上的时间。
弄清谁负责什么代码
在大型项目中,开发者之间的高效协同十分必要。在这过程中,超过 30% 的工程师均表示,他们可能要花半天以上的时间来弄清谁负责什么代码并获取相关需求。
不过具体情况可能也要视情况而定,大型企业往往更加严重:在拥有 1000+ 名员工的公司中,21%的开发者表示,通常需要一个工作日以上的时间才能确定相关代码的负责人,而在员工基数较小的公司,这一比例不到 10%。
不断的招聘面试
以上“琐事”虽然耗费时间,但总归与编程工作有直接联系,令超过 30% 的工程师感到有些疲惫的是接连不断的面试,他们希望在新员工的招聘和面试上减少一点时间。
“我们都在运行其他人的代码”
在以上各类繁杂琐事占据开发者的精力之余,留给他们用来专心编写代码的时间也随之减少。在此形势下,为了省时省力,很多开发者采取的应对方式为“运行其他人的代码”。
Retool 对此解释道:如今绝大多数软件工程师都在复制和运行别人的代码,或引用开源代码,或重用公司代码库,也可能借鉴在线教程中的代码。
出于意料的是,在统计开发者每周复制代码行数时,超过 80% 的初级工程师每周会复制 100 行以内的代码,相比高级工程师高 11%;但同时,也有 30% 的高级工程师每周会从不同来源复制超过 100 行代码。
在这多种复制代码的方式之中,开源代码是一个重要途径。其实随着近些年的开源热潮,开发者在工作中使用开源代码早已不是什么新鲜事,但调查结果显示,他们对于开源代码的依赖性似乎有些超乎想象:近九成的受访者认为开源代码在他们的日常生活中是必不可少的,仅有 1% 的人自信表示完全不必要。
这种依赖性,具体表现在他们将开源代码添加至代码库中的频次:超过 80% 的开发者每月至少引用一次开源代码,每周引用至少一次的开发者占比也超过了 50%。此外,相较于高级工程师,初级工程师对开源代码的引用频率也更高。
开源软件的广泛应用固然会促进开发进度,但与之带来的供应链安全、开发者贡献、项目维护、开源“白嫖”等问题也亟需解决,去年年底影响全球近一半企业的 Log4j 2 漏洞就是一个警醒。Retool 对此总结道:“目前,关于开源领域的规范,实际上还尚未赶上它在当今软件生态系统中的重要程度。”
参考链接:
https://www.zdnet.com/article/what-do-developers-do-all-day-long-the-answer-may-surprise-you/
https://retool.com/reports/state-of-engineering-time-2022/
— 推荐阅读 —
一键三连 「分享」「点赞」「在看」
成就一亿技术人