最近有两个趋势我非常讨厌:DevOps和“全栈”开发人员的概念。随着DevOps运动越来越流行,我越来越讨厌x86架构和单核。但这是真的:我无法忍受。是什么导致了我的痛苦?原因如下:并非每家公司都刚刚起步,所以为什么每家公司都必须表现得像他们已经经历过一样。DevOps“DevOps”用来表示紧密协作,穿插纯开发人员、纯运维人员和纯QA的角色。由于软件需要以不断增加的速度发布,旧的开发-测试-发布“瀑布”循环被打破了。开发人员还负责测试和发布环境的质量。“开发人员”的责任范围不断扩大(该术语是否合适还有待商榷)导致需要一个求职者联盟:“全栈”开发人员。这样的开发人员可以做开发工作,可以做QA组的一员,可以做业务分析,可以做系统管理员,也可以做DBA。在你指责我夸大之前,回去看看这份清单。列表中有什么是您不希望“全栈”开发人员精通的吗?这些概念从何而来?初创公司,是的(和敏捷方法)。初创公司的起步很奇怪,在头几年里艰难挣扎。我不否认这一点。但不幸的是,初创公司的工程师承担着多种技术角色,并且在没有一套最基本的能力的情况下被迫承担“开发人员”的角色。身兼多职想象一下,您在一家拥有7人开发团队的初创公司。您已经在Web应用程序上工作了一年,现在看起来还不错,一切都进展顺利,但要让它继续运行通常会让人抓狂。如果你有一个特别麻烦的问题需要深入数据库,你没有权利说“那不是我的专长”就交给DBA团队。由于条件所限,你不得不承担起DBA的工作,自己解决这个问题。现在将此场景扩展到所有先前列出的作业。初创公司的开发人员可以同时担任开发、QA、部署/运营分析师、系统管理员和DBA。这是创业公司的天性,有些人特别适合这种环境。然而,在某些时候,我们开始自欺欺人地认为自己适合;因为在任何时候,初创开发人员都必须身兼数职,他/她也必须同时兼任所有职务。即使有这样的人,这些“全栈”开发人员仍然无法按照他们喜欢的方式工作。初创公司不是要求他们担任一个角色一段时间然后过渡到下一个角色,而是要求他们同时担任所有角色。最糟糕的是:大多数优秀的开发人员几乎无法处理它。拥有良好课程的开发人员是聪明人。我知道我说这话肯定会被拍照,但技术人员在一个组织中还是有一定的重要性的。最上面是开发人员,其次是系统管理员和DBA。QA团队、“操作员”、发布经理等角色位于层次结构的底部。为什么是这样的顺序?因为每个角色都有能力做比它低一级的所有工作。初创公司教会了我们这一点。如果需要,优秀的开发人员也可以成为优秀的DBA。他们还可以成为优秀的测试人员、“部署工程师”等。他们的工作要求他们也了解较低级别工作的领域。但这有一个问题,我希望你能在这里看到它:反向不起作用。QA凑合不过开发,构建工程师也凑不过DBA的活儿。他们没有必要的专业知识来担任这些角色。那也没关系。不管你喜不喜欢,每个组织都有这个层次结构,成员有不同的能力水平、技能水平。即便如此,你让开发人员去做其他的工作,谁也不能替他做开发工作!一个例子可以使它更清楚。我爸爸是一名牙医,他经营一家私人诊所。他聘请了一名秘书、一名医疗保健专业人员和一名牙科助理。在所谓的“牙医行动”环境中,我父亲需要记录患者预约、清洁牙齿,并抽出时间进行钻孔、根管治疗等。我父亲能够在诊所做其他工作,因为他有做这些工作的专业知识。但是其他人做不到他的工作,就算全部加起来也做不到。如果诊所要这样经营,所有相关人员都会受苦,(当然)员工除外。本应是希望提高软件质量的实验变成了一场闹剧,最有才华的员工精疲力尽(而且有价值的工作产出要少得多),而低级别的职位根本不存在。这就是问题的症结所在。“全栈”工程师让那些以前由不同能力水平的人担任的角色不再需要这些角色。大公司喜欢这一点,因为这意味着他们可以雇用更少的人来完成同样的工作量。然而,一路走来,真正的开发在开发人员工作中所占的比例越来越小。这就是为什么我们看到如此多的开发人员失败了FizzBu??zz:他们实际上从未编写过任何代码。这个问题现在很常见,你能想象采访一位厨师并问他一天中有多少时间实际花在烹饪上吗?样样都做过一点,样样精通如果你是某种规模软件的开发者,你会需要一个可以使用的部署系统。为了考你,立马说出以下系统的优缺点:Puppet、Chef、Salt、Ansible、Vagrant、Docker。立即实施您的部署解决方案!您可能没有注意到上面列出的系统之一是完全不相关的?专业化是有原因的:人类掌握的知识有限。在任务之间切换无疑是代价高昂的。强迫开发人员承担其他专业人员的角色意味着他们将:员工远高于大多数这些任务的平均市场价格。如果一个开发者年入100K,你可以聘请4个年入100K的开发者来做一个两人的任务,50%的时间做开发,50%的时间做发布管理;或者,你可以只聘请一个发布经理,花费大约75k,然后两个开发人员全职开发。更不用说兼职作为发布管理的开发人员在没有要管理的发布时浪费时间了。不要杀死开发人员这样做的全部效果是破坏“开发人员”的角色,取而代之的是“技术工作”。我认识的每个开发人员都痴迷于编程,因为他们真的很喜欢它(在某些时候)。当你强迫这些聪明人执行额外的任务时,你伤害了所有相关人员。并非每家公司都是初创公司。初创公司不会让开发人员选择参与多项功能,他们这样做是出于必要。在您创建一些资源之前,您的公司可能会受到很大的限制。请不要将“精益”与“以最少的员工进行运营”混淆。看在上帝的份上,让开发人员编写代码吧!英文原文:How'DevOps'isKillingtheDeveloper翻译链接:http://www.oschina.net/translate/how-devops-is-killing-the-developer
