DevOps正在扼杀程序员?

原文: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个做全职开发。值得注意的 是:开发者来兼职发布管理工作完全是浪费时间,因为发布管理无需一直不间断地进行。

不要扼杀程序员

这样做的效果就是以“技术实用”来摧毁开发者。开发者之所以从事这份工作,是因为他们享受这份工作带来的乐趣(在某点上)。当你强迫这些聪明人执行额外的任务时,你其实是在伤害每个与之相关的人。

并不是每个公司都是初创公司。出于选择,初创公司也没有让开发者身兼多职,他们这样做是出于必要。请不要混淆“精简”与“以最少的雇员运营”的区别。看在上帝的面子上,让开发人员写代码吧!

你可能感兴趣的:(程序员)