为何 DevOps 会给开发人员带来压力和倦怠?
企业正在享受 DevOps 实施带来的好处,但这也是有代价的。开发人员需要承担额外的责任,可能会导致他们感到疲惫不堪。因此我们可以采取一些方法来确保 DevOps 工程师的满意度。
DevOps 的支持者通常将这一概念说成是提高效率和生产力的好方法。通过加强开发人员和 IT 运维工程师之间的协作,DevOps 能让每个人都朝着共同的目标更有效地工作。在很多情况下可能都是如此。然而,有人认为 DevOps 也有一个重大缺点:负责保持 DevOps 流程运行的工程师的压力水平增加。
以下是 DevOps 可能使开发人员的工作更具挑战性的原因,以及组织可以采取哪些措施来确保他们从 DevOps 中受益而不会让工程师抓狂。
DevOps 如何为企业带来效益
首先,让我们来了解一下 DevOps 的含义及其对企业的帮助。
DevOps 的理念是开发和 ITOps 团队应该紧密合作,即开发人员和 ITOps 之间的密切合作确保两个团队能够相互支持。
DevOps 的出现是为了解决许多组织在过去几十年中面临的一个挑战,即开发人员在编写代码时往往很少或根本得不到 ITOps 团队的反馈。这导致了沟通孤岛、效率低下,在某些情况下,开发人员和 ITOps 工程师之间关系紧张。通过帮助每个人持续合作,DevOps 可以让企业避免这些陷阱。
因此,从企业的角度来看,DevOps 是一件好事,因为它有助于确保工程师尽可能地提高工作效率。它能最大限度地减少时间和精力的浪费,通常还能提高企业推出新软件的速度,这反过来又能为企业带来市场竞争优势。
DevOps 对工程师意味着什么
对于开发人员本身来说,DevOps 并不总是那么美好。DevOps 迫使工程师做两件事,这会增加他们的工作压力:
承担更广泛的责任:DevOps 要求工程师们同时负责两类流程,而不是只负责软件开发或 IT 运营。
适应节奏更快的发布周期:DevOps 与 CI/CD 等实践齐头并进,DevOps 团队通常需要每周至少发布一次新的应用程序更新,有时甚至需要每天发布一次。这与 "瀑布式 "软件开发战略的时代大相径庭,在 "瀑布式 "软件开发战略下,新版本即使一年发布一到两次,也是如此。
这两个因素都会使工程师的工作变得更加紧张。在采用 DevOps 的企业中,工程师被要求做得更多、更快。
当然,DevOps 为软件交付流程带来的高效率有可能使工程师在满足这些更严格要求的同时,总体压力水平低于没有 DevOps 时的水平。如果没有 DevOps,团队通常会浪费更多时间来修复代码,并在出错时相互指责,这本身就是一种压力。通过减轻这些挑战,一个实施良好的 DevOps 战略可以让工程师们在整体上更轻松一些。
但并不是所有 DevOps 战略都能得到很好的实施,DevOps 本身就存在一种风险,那就是过多的 DevOps 实践只会导致工程师压力更大,更容易倦怠。他们可能会设法更快地发布新版本,但会牺牲工程师的工作满意度作为代价,这种成就是以高昂的代价换来的。
让 DevOps 工程师更轻松
为了避免这些问题,选择采用 DevOps 的企业应确保设定合理的期望值。例如,每周发布一次新版本可能会给工程师带来过大的压力,至少在一开始是这样。设定更适度的目标有助于降低 DevOps 工程师倦怠的风险。
限制 DevOps 工程师的职责也会有所帮助。虽然 DevOps 通常鼓励 DevOps 团队中的每个人共同承担软件交付流程中每个环节的责任,但让某些工程师牵头负责某些流程(如开发、测试和部署)通常更为现实。集体责任感仍然普遍存在,但为不同类型的任务指定牵头人可以让团队成员优先处理某些任务,而不是试图掌控软件交付生命周期的每个阶段,从而减轻每位工程师的整体压力。
在某些情况下,企业首先应该限制采用 DevOps 的范围。并不是每个应用程序都需要持续开发;有些应用程序(如传统软件)的变化频率并不高,不值得被嵌入 CI/CD 流水线。企业在实施 DevOps 时要有战略眼光,这样才能降低将过多 DevOps 实践强加给没有能力或时间处理所有实践的工程师的风险。
总 结
在 DevOps 领域中,需要谨慎执行,因为过度的任务和压力可能会减弱其优势。虽然毫无疑问,DevOps 为企业带来了显著的优势,使开发人员能够实现更高的效率和生产力,但同时也可能给他们的团队带来负担。为了防止 burnout 的风险,请避免过度采用 DevOps 实践。
参考链接:
https://www.itprotoday.com/devops/downside-devops-stress-and-burnout-engineers
为何 DevOps 会给开发人员带来压力和倦怠?的更多相关文章
- C#开发人员应该知道的13件事情
本文讲述了C#开发人员应该了解到的13件事情,希望对C#开发人员有所帮助. 1. 开发过程 开发过程是错误和缺陷开始的地方.使用工具可以帮助你在发布之后,解决掉一些问题. 编码标准 遵照编码标准可以编 ...
- iOS8 对开发人员来说意味着什么?
今天凌晨.Apple WWDC2014 iOS8 正式推出. 或许,对于广大iOS用户来说,iOS8的创新并非特别多. 但对于开发人员来说,影响却将会是无比巨大的! 正如Apple官网上的广告:Hug ...
- .NET开发人员必看:提高ASP.NET Web应用性能的24种方法和技巧
那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...
- 开发人员看测试之TDD和BDD
前言: 已经数月没有来园子了,写博客贵在坚持,一旦松懈了,断掉了,就很难再拾起来.但是每每看到自己博客里的博文的浏览量每天都在增加,都在无形当中给了我继续写博客的动力.最近这两天有听到Jbehave这 ...
- 30K iOS程序员的简述:如何快速进阶成为高级开发人员
前言: 本篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员,编程人员和程序员(或者你可能刚刚开始,但希望你能看到你的路径) 本文适合那些有着简单愿望的人:你想成为一名高级 ...
- 安晓辉大神的感悟:如果你发现了自己的学习模式,愿意学并且能坚持,我觉得没什么能阻挡你征服软件世界的脚步(对于开发人员来讲,最大的风险是:在职业规划上没有延续性地乱跳槽。时刻要牢记在心的:培养自己的稀缺性) good
从技术支持中途转战软件开发,如今从事编程工作已十多有余,2014年CSDN博文大赛编程语言组冠军.CSDN Qt论坛的版主安晓辉老师从今天开始,坐镇CSDN社区问答栏目的 第十四期,届时会接受广大网友 ...
- .NET团队送给.NET开发人员的云原生学习资源
企业正在迅速采用云的功能来满足用户需求,提高应用程序的可伸缩性和可用性.要完全拥抱云并优化节约成本,就需要在设计应用程序时考虑到云的环境,也就是要用云原生的应用开发方法.这意味着不仅要更改应用程序的构 ...
- .NET平台系列31:.NET团队送给.NET开发人员的云原生学习资源汇总
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 启动于2016年,跟K8S同年诞生,既拥有着悠久的历史积累,又集成了当下最新的设计理念,加上.NET团队持续对容器技术的官方 ...
- .NET CoreCLR开发人员指南(上)
1.为什么每一个CLR开发人员都需要读这篇文章 和所有的其他的大型代码库相比,CLR代码库有很多而且比较成熟的代码调试工具去检测BUG.对于程序员来说,理解这些规则和习惯写法非常的重要. 这篇文章让所 ...
- 防止开发人员获取到敏感数据(SQL Server的数据加密简介)
背景 有时候,我们还真的会碰到这样的需求:防止开发人员获取到敏感数据.也许你觉得很简单,把开发和运营分开不就可以了吗?是的,如果公司有专门的运营团队的话,但对于很多小公司来说,几个人的开发团队就兼顾了 ...
随机推荐
- 通信原理知识点总结(XDU网信通原)
因为感觉第2章和第7章内容特别乱,当时老师讲的时候好像也没有按照一个正确的顺序来讲,所以我就把这两部分的内容按照结构顺序整理了一下,这样更便于理解和记忆 第2章 无线信道传输特性 显示不全点链接看完整 ...
- 【RabbitMQ】当队列中消息数量超过最大长度的淘汰策略
[RabbitMQ]当队列中消息数量超过最大长度的淘汰策略 说明 最近在研究RabbitMQ如何实现延时队列时发现消息进入死信队列的情况之一就是当消息数量超过队列设置的最大长度时会被丢入死信队列,看到 ...
- ARM Trusted Firmware——编译选项(二)
@ 目录 1. 常用部分 2. 安全相关 2.1 签名 2.2 加密 2.3 哈希 2.4 中断 3.GICv3驱动程序选项 4. 调试选项 1. 常用部分 编译选项 解释 BL2 指定生成fip文件 ...
- CPU摸鱼被抓,上了一个新技术!
我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴. 我们CPU的任务就是执行程序员编写的程序,只不过程序员编写的是高级语言代码,而我们执行的是这些代码被 ...
- Linux 软件包:lvm
lvm LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制. Linux用户安装Linux操作系统时遇到的一个常见的难以决定的 ...
- CF1601 题解
偶然看这一场的题目,忽然很有感觉,于是写了一下 A 题面 考虑每一位可以单独分开考虑 考虑单独的一位,每次要选 \(m\) 个位置,可能产生贡献的位置就是这位为 1 的数,设数量为 \(x\),则 \ ...
- Unity的IPostprocessBuildWithReport:深入解析与实用案例
Unity IPostprocessBuildWithReport Unity IPostprocessBuildWithReport是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目后 ...
- C#程序的启动显示方案(无窗口进程发送消息) - 开源研究系列文章
今天继续研究C#的WinForm的实例显示效果. 我们上次介绍了Winform窗体的唯一实例运行代码(见博文:基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章 ).这就有一个问题,程 ...
- 并发工具类Phaser
前言 在面试这一篇我们介绍过CountDownLatch和CyclicBarrier,它们都是jdk1.5提供的多线程并发控制类,内部都是用AQS这个同步框架实现. 在我们的实际项目中,有很多场景是需 ...
- VINS中旋转外参初始化
VINS 中的旋转外参初始化 为了使这个两个传感器融合,我们首先需要做的事情是将两个传感器的数据对齐,除了时间上的对齐,还有空间上的对齐.空间上的对齐通俗的讲就是将一个传感器获取的数据统一到另一个 ...