“神奇”的程序员日常:不写程序、运行别人的代码、每周只“深度工作” 10 小时?

整理 | 郑丽媛
出品 | CSDN(ID:CSDNnews)

很大程度上,人们习惯于将“软件开发工程师”、“软件测试工程师”、“运维工程师”等计算机行业相关岗位等同于“程序员”,而顾名思义,其工作主要是写程序、敲代码——理论上来说,应该是这样的。

但事实证明,多数程序员的真实日常并非如此:

  • 据 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/

  • 6
    点赞
  • 8
    收藏
  • 打赏
    打赏
  • 14
    评论
一个程序员应该具备的基础知识和概念 1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!) 2、 机器语言和微指令集的概念。 3、 程序的概念。 4、汇编语言是低级语言但不是机器语言。 5、高级语言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语) 6、编译程序和解释程序的概念和其原理。(编译器是高手和专家编写的) 7、 HTML、XML等是标识性语言。 8、 Prolog是人工智能语言。 9、操作系统OS的概念和原理。(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手) 10、Windows编程说白了就是Windows API的调用。(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder) 11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。 12、面向结构的设计概念。 13、面向对象的概念。(好好理解,兄弟,这个东西还是很重要的) 14、软件工程的概念和原理。(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟) 15、数据库的概念。(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等) 16、了解网络概念。 17、了解多媒体概念。 18、熟悉和掌握数据结构和基本算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSDN资讯

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值