瞎扯淡 ‘DevOps’ 是如何伤害一个开发者的

mojidong · 2014年04月17日 · 最后由 swordray 回复于 2014年04月20日 · 3662 次阅读

转载:http://www.oschina.net/translate/how-devops-is-killing-the-developer

最近有两个趋势我真的很讨厌:DevOps 及 “全栈” 开发者的概念。随着 DevOps 运动越来越受欢迎我越发讨厌 x86 架构和单内核。但确实如此:我受不了。是什么引发我的痛苦呢?这是原因:不是每一个公司都刚起步,那怎么还要每个公司都必须表现得像它们的经历一样。

DevOps

“DevOps” 用来表示密切地协作,将之前纯粹的开发者、纯粹的操作者以及纯粹的 QA 的角色内容进行穿插。因为软件需要以不断加快的速度释放出来,老的开发 - 测试 - 发布的 “瀑布” 型周期被打破了。开发者还必须为测试及发布环境的质量责任。

“开发者”(这个词是否适当有待商榷)越来越广的责任范围导致了对联合体求职者的需求:“全栈” 开发者。这样的开发者能够做开发工作,是 QA 团队的成员,能够进行业务分析,做系统管理员和 DBA。在你指责我夸张前回头再看下这个列表。列表中有你不希望 “全栈” 开发者精通的吗? 这些概念是从哪来的呢?初创公司,对(以及敏捷方法)。初创公司初起时奇形怪状,需要以一种艰苦的方式撑过最初的几年。对此我不否认。但不幸的是,初创公司的工程师承担了多种技术角色,被迫在缺乏一系列最基本能力的情况下承担 “开发者” 的角色。

身兼多职

想象你在一家初创公司,开发团队共有 7 人。你已经开发了一年某个 web 应用,现在看起来像模像样,一切顺利,但是在保持正常运转这方面却往往是令人抓狂的混乱。如果有一个特别麻烦的问题,需要深度研究数据库,你可没有权力说 “这不是我的专长”,然后交给 DBA 团队处理。 条件所限 ,你不得不承担起 DBA 的工作,自己解决这个问题。 现在把这个情景扩展到之前列出的所有职位吧。一个初创公司的开发者可能同时担任开发,QA,部署/操作分析员,系统管理员,还有 DBA 。初创公司天然如此,而有些人会特别适合这种环境。然而,不知从什么时候起,我们开始自欺欺人说自己适合;因为在任何时候,一个初创公司的开发者不得不身兼多职,他/她还必须一下子担任所有这些角色。

即使 居然真有 这样的人,这些 “全栈” 开发者仍然不能以他们适应的方式工作。初创公司并不是让他们在一段时间内担任某一个角色,然后再转换到下一个角色,而是要求他们 一直同时担任所有这些角色 。最糟的是:大部分好的开发者还几乎可以应付。

阶级

好的开发者都是聪明人。我知道我这么说肯定会被拍,但一个组织里的技术人员还是有一个重要程度的层次区别的。最顶层是开发,接下来是系统管理员和 DBA。QA 团队,“操作员” 之类,发布管理员等等角色处于阶级的最底层。为什么是这么个顺序呢? 因为每个角色有能力做比它低的层次的所有工作。 初创公司教会我们这个道理。如果需要,好的开发者也能当合格的 DBA。他们也能当不错的测试,“部署工程师”,或者其他什么形形色色的职位。他们的工作需要他们对更低层工作的领域也了如指掌。但这其中有一个问题,希望说到这里你也能看出来:

反过来却行不通。 QA 无法凑合当开发用,构建 (build) 工程师也做不了 DBA 的工作。他们不具备担任这些角色所必须的专业知识。这也没关系。无论你喜欢与否,每个组织里都有这种阶级层次,而成员的能力层次、技术水平也有所不同。尽管如此,你让开发去做其他工作,没有人能来替他做开发的工作! 举个例子能说得更清楚一些。我爸爸是一个开私人诊所的牙医。他雇了一个秘书,一个保健专家和一个牙医助理。在所谓的 “牙医 Ops” 环境下,我爸爸需要一边记录病人的预约,一边洗牙,同时还要挤出时间来给牙钻孔,实施根管治疗术,等等。我爸爸能做得了诊所里的其他工作,因为他具备这些工作所需的专业知识。

但是其他人做不了他的工作,即使全加起来也不行。 如果诊所要这么运转,牵涉到的所有人都会受到损害,(当然)除了雇员们。这场本意是希望提高软件质量的实验演变成了一场闹剧,最有才华的员工疲惫不堪(并且有价值的工作产出远远减少),而低层次的职位根本不存在。 这就是这个问题的关键所在。之前那些职位由不同能力层次的人分别担任,而 “全栈” 工程师使得这些职位没必要存在了。大公司非常喜欢这一点,因为这意味着它们可以远远减少雇佣人数,来完成同样的工作量。然而,在这个过程中,真正的开发在开发者工作所占的比例越来越小。这就是为什么我们会看到这么多的开发者通过不了 FizzBuzz:他们从来不用真正写任何代码。现在这个问题已经太普遍了,你能想象面试厨师时要问他,每天他有多少时间是真正用来烹饪的吗?

什么都做过一点,什么都不精通

如果你是一个有点规模的软件的开发者,你会需要一个能用的部署系统。考考你,马上说出以下系统各自的好处和坏处:Puppet,Chef,Salt,Ansible,Vagrant,Docker。现在实现你的部署解决方案吧!你恐怕都没有注意到,上面列出那些系统里有一项是完全无关的吧? 专业化是有原因的:人类能运用的知识有限。在任务之间切换,无疑是代价昂贵的。强迫开发者去承担其他专业人员的角色,意味着他们将:

  • 没有把时间花在开发上
  • 需要跟上一个极其庞大的知识领域
  • 会不堪重负

不仅如此,要强迫开发者接受 “全栈” 的任务,公司要付给雇员的工资远高于完成其中大部分任务的市场平均价格。如果一个开发者 1 年赚 100K,你可以雇 4 个 1 年 100k 的开发者来做一个两人的任务,50% 的时间做开发,50% 的时间做发布管理;或者,你也可以只雇一个发布管理员,花上大概 75k,然后两个开发者全职开发。更不用说兼职发布管理的开发者,在没有发布需要管理时浪费的时间了。

不要扼杀开发人员

这样做全部的效果就是毁掉 “开发者” 的作用,并且替之以 “技术工种”。我所知的每个开发人员都沉迷于编程,因为它们真正热爱它(在某点上)。当你强行让这些聪明人执行额外的任务时,你则伤害了每个相关的人。 并非每个公司都是初创公司 。出于选择,初创公司没有让开发人员参与多种职能,他们这样做是因为必要。你的公司很可能在你没有创造出一些资源之前有着极大的制约。请不要混淆 “精简” 与 “以最少雇员运营” 的区别。看在上帝的面上, 让开发人员写代码吧!

原文:How 'DevOps' is Killing the Developer

这的有这么多代码需要写?

我做了差不多一年的 devop,就没写过自动测试,bug 出过,不过都是逻辑上的

分工是生产力进步的重要因素。。

我第一眼看见这个概念就感觉不靠谱 说白了就是小作坊的思维嘛 做不了什么大事

什么都做过一点,什么都不精通, 小公司的” 全栈 “ 绝大多是这个样。 喜欢最后一句话 “看在上帝的面上, 让开发人员写代码吧!” 👏

要分清全栈和打杂....

扔个 byvoid 博客

当年汇编和 C 时代,开发人员要做很多事情,一个问题要同时考虑很多方面的技术。 现在 Ruby on Rails 这么简单,如果一个开发人员说,不会数据库,不了解代码如何在服务器上运行的,HTML 也不熟悉,就专门写 Ruby 代码么?遇到其他的就说,这不是他的工作内容?

全栈是指技术方面熟悉纵向知识,而不是只会拧螺丝。但绝不是楼主说的那种打杂工作。

匿名 #10 2014年04月18日

这个嘛,比如说其实写代码的活我可以做、扫地做饭的活我也可以做,但是每天时间有限,公司要愿意的话每月付我写代码的💰让我做家政的活,没准我为了转换心情也至少能干一阵子,就看老板亏不亏得起了…

赞同 #8 楼 @kgen

Rails 就是一个全栈开发框架,从 数据库(ActiveModel)-> 服务器(ActionController)-> 页面(ActionView)-> 模板(Slim)-> 样式(Sass)-> 交互(CoffeeScript)-> 测试(RSpec)-> 部署(Capistrano)

我觉得是国外和国内的技术氛围不一样吧,国外写代码可以写得退休。。。

换一个角度想, devops 兴许是说让 ops 接触 dev 的工作, 然后把 ops 做的更好.? 原本 ops 不会写代码, 运维基本靠小脚本. 高贵的 dev 们则专注于业务, 做那些能赚钱的东西. 运维系统这么烂又没人愿意来写怎么办? 只能 ops 自己上了呗

#10 楼 @swordray capistrano 不是运维..它只是部署, 你这么说是因为基本没接触到运维, 你还只是个 dev. 去机房换硬盘才是运维

#11 楼 @whhh 求解,国内不可以写代码写到退休吗?

#12 楼 @ruohanc 已修正。我们公司出于政治原因,部署只能由运维来开发和操作,所以我不太清楚怎么区分

#14 楼 @swordray - - 我了个去..政治原因是嘛意思........dev 和 ops 严格权责分离吗.?

做的事情太杂是对开发者的快速消费。每种技术都需要花时间研究,花时间跟踪更新,花时间优化效率。就算一个 CSS,下足功夫也可以玩出世界级的花样。

什么都做哪里有时间专注主要的、感兴趣的、擅长的事情? 只能是消费开发者之前的积累。

#15 楼 @ruohanc 是的

按领导的要求: 1、代码隔离,dev 只能写业务功能代码,不能写部署代码 2、信息隔离,上线只能通过 OA 审核流程进行,不能直接发邮件 3、地理隔离,dev 在北京,ops 在天津

不同团队隔离开来好管理

  1. 还好理解,
  2. 稍微还能理解. 已经有点那啥
  3. 这真的不是意外么...

#18 楼 @ruohanc 3 确实是意外啦,但也是我最着急的,单个 Rails 应用上线要几个小时,比坐京津高铁过去还慢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号