提问:你印象中的程序员工作是怎样的?相信会有人回答:敲一天的代码、修一天的 Bug,日复一日的披星戴月吧——一直以来,这就是我们对程序员的传统印象。
但事实似乎与我们想象的有些出入:据 DevOps 公司 Software 的第一份代码时间报告显示,大多数开发人员每天的编码时间根本就不到一小时。
一、每天编程不到 1 小时,周三最高效 伴随着软件领域逐年激烈的竞争,全球各大技术公司每年在开发人员身上的投资越来越多,他们协调分布在世界各地和跨时区的数百个项目和团队,争先为客户创造最好的价值,只为引领行业的创新步伐。
在这过程中,还有很多公司“掉队”了:工程团队在开发过程中遇到障碍和瓶颈,将一个想法投入生产可能需要几个月甚至几个季度。究其根本,在于开发人员很难全神贯注地将时间全部用来编程:无尽的会议、不断被同事中断、等待流程通过的繁琐…无法专注投入于编程的程序员,工作效率可想而知。
为此,Software 公司统计了全球社区中 25 万多名开发人员的相关数据,得出他们平均每天的编码时间为 52 分钟——从周一至周五,工作中的编码时间总共约为 4 小时 21 分钟。
(注:Software 将编码时间定义为在编辑器或 IDE 中积极编写或编辑代码所花费的时间,且为了过滤掉兼职开发者,Software 的分析仅限于在过去 30 天中至少有 7 天编写过代码的开发者。)
文章图片
在这之中,每天编码耗时超过 1 小时的开发人员仅有 40%,每天编码时间超过 2 小时的仅占约 10%。
文章图片
除了真正花在编码上的时间,Software 发现开发人员每天还会花费约 41 分钟在其他代码工作上,例如阅读代码、审查拉取请求和浏览文档等。
接下来,Software 还就编码时间的主要发生时段,以一天和一周为维度分别做了进一步分析:
- 在一天中,只有 10% 的编码发生在上午 9 点到 11 点之间,大约 45% 的编码发生在下午 2 点到 5 点区间内,还有 12% 的编码发生在工作时间之后的下午 5 点到晚上 7 点。
文章图片
- 在一周之中,开发人员普遍会在周三达到一个效率高峰,平均编码时间能达到 55 分钟——同一数据在周五只有 46 分钟。显然,即将放假的周五是最不受欢迎的编码工作日。不过这并不意味着开发人员周末就会完全“放飞”:Software 调查发现,大多数开发人员会在周末继续编码,周六和周日的平均编码时间约为 18 分钟。
文章图片
若诚如 Software 调查结果所示,开发人员每天的编码时间不足一小时,那他们剩余的工作时间都哪去了?如上文所说,大多都被分布在了许多其他事项中:规划项目、审阅文档、开会统筹、协作讨论。
二、高效工程师:每天 100-150 行代码 当然,如果只用编码时间或代码行数来评判一位开发者的工作效率,或许又有些过于片面了。
早在 2017 年,Google AdMob 全栈工程师 Raymond Farias 的一番发言就曾在开发者圈中引起巨大争议:
“我的同事告诉我,根据以往的调查证明,一名高效的工程师每天能写 100-150 行代码。我一开始嘲笑他的估计值肯定低了很多,结果我汇总了我一个月的代码数据进行求和,并除以 20(周末不上班)得出的平均数,居然真的等于 150 !!!”为了验证这一说法的真实性,CSDN 当时也在论坛上发起了相关话题讨论:“以代码为主要工作的程序员,一天写多少代码才算达标?”结果,征集到的回答几乎与 Raymond Farias 的说法没有出入:
- 很多时候都在分析问题,查看代码,写代码越来越少了。
- 如果写的话,基本上每天 100 到 200 行,但是更多的时候在开会、开会、开会。
- 真正优秀的程序员都拿着高工资,其本上不用怎么写代码,如果你还拼命在写代码,说明离“优秀”还有一段距离。
为此,Software 建议有这类现象的开发公司可从以下三个方面进行改变:
1、改善日常工作流程:查找破坏团队开发流程或阻碍开发人员效率的症结所在,改进 DevOps 实践以减少等待时间并改进日常工作。
2、让 DevOps 可视化:测量系统级 DevOps 指标,例如交付速度和后期返工等,了解推进过程中的障碍因素,减少会议和低效的审核流程。
3、用数据持续改进:工程团队应为改进工作预留开发时间和周期,以提高团队生产力,包括偿还技术债务、迁移、重构和重组。
最后想了解一下,你是否如文中报告所说每天编码时间不满 1 小时?你每天能写多少行代码呢?
【程序员|程序员“真实”日常(每天敲代码不到 1 小时)】参考链接:https://www.software.com/reports/code-time-report
推荐阅读
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- Python|教你写个简单好用的Python脚本一键自动整理文件非常适合办公用~
- 为了搭建冬奥会志愿者系统,他独自跨越大半个中国学习低代码
- GitHub|7 款可替代 top 命令的工具