原文:http://www.csdn.net/article/2014-04-21/2819407-How-%27DevOps%27-is-Killing-the-Developer
之前,CSDN研发频道曾发表过《 全栈工程师会是未来的发展趋势吗?》,该文引起了开发者们的热烈讨论,很多工程师认为,全栈工程师更适合于一些初创公司,想要做到面面俱通,并不是简单的事情。而本文作者Jeff Knupp认为,DevOps的流行让越来越多的程序员身兼多职,也就是大家所说的“全栈”,这种流行趋势正在扼杀真正的程序员,真的是这样吗?
最近,我很讨厌两个趋势,分别是:DevOps和“全栈”工程师。DevOps运动的流行也让我不喜欢x86架构或单核。事实上,并不是每个公司都是初创公司,但似乎每个公司都要搞的跟初创公司似的。
DevOps
DevOps主要强调开发人员、运维人员以及QA之间的合作与沟通。因为软件会定期的更新,发布新版本,所以,以前旧的“瀑布式”的软件开发-测试-发布流程已经变的不适用。作为开发人员,除了实现功能外,还需关心负责产品的质量测试和发布环境。
开发者职责的不断扩大也催生了一些新角色的出现,“全栈”工程师。什么意思呢?一个开发者除了会编写代码外,还可以充当QA团队成员、业务分析师、系统管理员和DBA。如果你指责我说的太夸张,那么你可以去查查什么叫“全栈”工程师。
“全栈”的流行主要源自于创业(当然,还有敏捷)。尤其是在创业初期,由于资源的匮乏以及资金上的短缺,一名工程师常常扮演着多重角色。因此,网络上也诞生了这样的说法:全栈是被创业逼出来的。
身兼多职
想象一下,如果你目前在一家创业公司,该公司的开发团队只有7个人,你已经有1年的Web开发经验,你所参与的项目也都在很好的运行,尽管也会遇到 各种难关,但仍能正常工作。但有时,如果你遇到一个数据库领域的问题,该问题需要专门的DBA团队才能解决,但由于资源有限,你只能亲力亲为,绞尽脑汁地 去解决这个问题,即使你不擅长数据库。
在一个创业公司里,开发者随时可能扮演着QA、测试人员、部署/业务分析人员、系统管理员或数据库管理员的角色。这些也都是业务的根本需求,有的人 在这样的环境里会快速成长。即使这种“全栈”工程师真的存在,他们也并没有得到很好的使用,在各种角色中来回切换。这真的很糟糕,大多数优秀的开发人员几 乎都可以把这些事情办完了。
技术层次
优秀的开发者都是非常聪明的。任何一个组织都会有一定的技术层次结构。开发在最顶端,紧随其后的应该是系统管理员和DBA。QA团队、运维人员、发布协调等在最低端。为什么会这样安排?
因为每个角色在必要时,都可以做比他层次低的工作。
创业公司可能会这样想:在需要时,好的开发人员也可以充当DBA、测试人员、部署工程师等任何他们需要的角色。他们的需求驱使着这些优秀的程序员扮演着许多低能的角色。这里面存在着很大的问题:他们并不能反向工作,比如,一名QA并不能去做开发。
不知从何时起,提高软件质量已成为一场闹剧,一些非常有才华的员工常常超时工作,而一些低级别的职位甚至都不存在。这就是问题的症结所在。开发者、 QA、运维等人员都由“全栈”工程师来充当会显得相当多余,但大公司一般都喜欢这样做,意味着他们可以雇佣更少的人做相同的工作。在整个工作过程中,实际 的开发工作只占到了很小一部分。这就是为什么大多数开发者无法通过FizzBuzz:他们从来没有真正写过任何代码。
广而不精
如果你是一名技术不错的软件开发者,你需要在适当的地方部署系统,那么,你可以快速说出这些系统的优缺点吗?Puppet、Chef、Salt、 Ansible、Vagrant、Docker。现在,来将你的部署方案付诸实践吧!你甚至会认识到,在这些系统中,有一个是不必要的。
专业化是有原因的:人类所吸取的知识是有限的,在任务之间来回切换的代价是昂贵的。强迫开发者身兼多职意味着:
- 没有时间用于开发
- 需要不断地充电,好让自己能够跟上庞大的知识领域
- 会崩溃
更重要的是,公司强迫开发者接受“全栈”任务,那么公司所给的薪水就要高于市场平均水平。如果一个开发者一年可以赚100K,你可以雇佣4个同样的 开发者来做两个人的任务,其中50%的时间用来做开发,50%时间做发布管理。或者,你可以花75K来雇一个发布管理员,然后2个做全职开发。值得注意的 是:开发者来兼职发布管理工作完全是浪费时间,因为发布管理无需一直不间断地进行。
不要扼杀程序员
这样做的效果就是以“技术实用”来摧毁开发者。开发者之所以从事这份工作,是因为他们享受这份工作带来的乐趣(在某点上)。当你强迫这些聪明人执行额外的任务时,你其实是在伤害每个与之相关的人。
并不是每个公司都是初创公司。出于选择,初创公司也没有让开发者身兼多职,他们这样做是出于必要。请不要混淆“精简”与“以最少的雇员运营”的区别。看在上帝的面子上,让开发人员写代码吧!
相关推荐
02 _ DevOps的价值:数字化转型时代,DevOps是必选项?.pdf
DevOps 是一种旨在促进开发(Development)和运维(Operations)之间协作与沟通的软件工程文化、运动和实践。它的目标是缩短从代码编写到生产环境部署的时间,提高软件质量和可靠性,同时降低风险。随着企业逐渐走向...
DevOps是一种旨在促进开发人员和运维人员之间协作与沟通的文化、方法论和实践,以提高软件的交付速度和质量。企业迈入DevOps的第一步至关重要,因为它不仅涉及到技术的变革,还涉及到组织文化和流程的调整。 1. **...
DevOps 是一种旨在促进开发(Development)和运维(Operations)团队之间协作与沟通的文化、实践和工具集,以提高组织的软件交付速度和质量。在当今快速变化的商业环境中,企业越来越重视敏捷性和创新,而 DevOps ...
5. What are the unpinning principles of DevOps? 6. What are the areas of DevOps patterns? 7. What is the value of DevOps? 8. How does Infosec and QA integrate into a DevOps work stream? 9. My DevOps ...
DevOps正是这样一种能够在IT组织内部不同团队之间将业务敏捷性贯穿于协作、交流与整合工作中的重要手段。超越敏捷开发,打通开发与维运藩篱的竞争关键,不只让产品上市快,还能周周比对手早一步──Gartner预言:...
devops主题系列演讲一共有14个部分,这是第11部分,每个部分里有10个大佬演讲的PPT,每个PPT都是独立的。 龙井-龙门阵之DevOps门外汉须知 罗伟-蘑菇街基于容器的全生命周期 DevOps 运营平台建设 牛晓玲&景韵-转型...
正向度量:如何建立完整的DevOps度量体系?
04 _ DevOps的衡量:你是否找到了DevOps的实施路线图?.pdf
1_ DevOps的“定义”:DevOps究竟要解决什么问题?
关于DevOps是一个很大的话题,它可能既涉及到公司的技术文化构建,也包括开发者技术能力的支持,这次。本文从4个方面介绍:1.什么是Kubernetes?为什么Kubernetes比较适合用来构建DevOps的流水线?2.如何基于...
DevOps 持续交付能力成熟度模型及最新实践 DevOps 是一種软件开发方法,它强调了团队之间的沟通和协作,以实现软件的快速交付和高质量。 DevOps 的实施可以带来许多好处,例如减少停机时间、更快上线、减少人为错误...
随着信息技术的快速发展,DevOps作为一种融合了开发(Development)与运维(Operations)的新型协作模式,正在成为推动企业数字化转型的重要力量。牛晓玲与景韵在GOPS全球运维大会2018·上海站上分享的《转型的灯塔...
DevOps 基础课程讲义 DevOps 是一种实践,旨在将开发和运维团队紧密合作,以提供高效、可靠的服务。它涵盖了从设计和开发过程一直到生产支持的整个服务生命周期。 DevOps 还要求运维人员在他们的系统工作中使用...
DEVOPS 概述 DEVOPS 的历史可以追溯到计算机刚刚出现的时期,当时软件开发还是少数人通过高学历才能够掌握的技能。那时只有程序(Program),但没有软件(Software),所以那个时候编写程序的人员被称为程序员...