引言

全栈工程师(本文称「全栈」开发者)和 DevOps 无疑是近期最火的词汇,无论是国外还是国内。而且火爆程度远超于想象。

全栈和 DevOps,究竟是我们的新职业方向,还是仅仅创业公司老板的心头所爱?且听本文理性分享。

Anyway,文末附赠 9 家把 DevOps 搞得风生水起的国外公司及更多信息。本文系 OneAPM 联合高效运维编译整理。

正文

最近有两个特别讨厌的趋势:DevOps 和「全栈」开发者的思想。

时下,DevOps 已经非常流行,以至于讨厌它就像讨厌 x86 架构或单内核一样,那么究竟是什么造成了这样的结果?让我如此痛苦的根本原因,又是什么?

事实上,并不是每家公司都是创业公司,但却又要去表现得像创业公司一样。

「DevOps」旨在表示密切合作,让原本纯粹的开发、运营和 QA 角色之间协作运转。

因为软件发布的频率越来越高,传统的「瀑布型」开发—测试—发布周期已经不能满足业务的需求,后果就是,开发者还必须为测试和发布的环境质量负责。

随着「开发者」(这个词是否恰当仍存争议)的责任范围不断扩大的同时,综合的全能型开发者需求也被触发——「全栈」开发者。

这样一来,开发者要既能做开发,还需要兼任 QA 团队成员、业务分析师、系统管理员和 DBA 的工作。

那么,DevOps 和「全栈」开发者,这些概念是从哪里冒出来的呢?

当然是来自创业公司(和敏捷方法):

不容否认的是:初创企业就像一种「蛰伏」的野兽,在最初的几年往往默默无名,而且过的也非常艰辛(人员配备不齐,所以急需 DevOps 和「全栈」开发者)。

但不幸的是,当下 DevOps 这个潮流正在迫使开发者在一个成熟的公司中继续扮演这些角色,迫使开发者担任由于基础资源缺乏而不得不为的「开发者」角色。

身兼数职

想象你在一个只有七个人组成开发团队的创业公司。花一年的时间去开发一个 Web 应用,各个项目都进展顺利,但是这个过程绝对让你混乱——如果有一个特别严重的问题出现,似乎需要深度的数据库知识。

这种情形下说:「这不是我的专长」这样的话,或者将它交给 DBA 团队进行调查显然是不可行的。由于资源限制,你不得不承担 DBA 的角色,自己去解决问题。

现在,扩展这个场景到之前所列的角色下。在任何时候,开发人员在一个初创企业可能会兼任开发者、QA 测试员、部署/业务分析师、系统管理员或 DBA。

这完全由创业公司的性质所决定,而有些人在这样的环境下可以飞速成长。但一路走来,我们不断欺骗自己,因为在任何时候,开发者都不得不身兼多职,甚至有时候要承担所有角色。

即使这样的人真的存在,「全栈」开发者仍然不会以正常的方式去工作。创业公司并非只是想着开发者暂时短期内担任某个角色,然后过渡到下一个角色;相反,会要求你一直担任所有的角色。

这真的很糟糕,这意味着,可能需要最优秀的开发者。

也谈等级

优秀的开发者都是聪明人,这么说可能会被很多人吐槽,然而在一个机构内,技术人员却是存在多个不同的等级。开发者最高,接着是系统管理员和 DBA。「运营」人员、发布管理员等角色处于最底层。

为什么这样排序呢?

因为,若有必要,每个角色都能够承担低于这一层次所能做的所有工作。

这一点在创业公司已经得到证实。在需要的情况下,优秀的开发者可以转成合格的 DBA、不错的测试员、「部署开发者」以及各种所需的角色。

他们的工作需要他们尽可能的了解底层角色的工作范围。但这存在着一个大的隐患——反之则不成立。

在紧要关头,测试员却干不了开发者的活,也不能成为构建开发者做 DBA 的工作。他们从未获得这些角色的专业知识。

举个例子说得更清楚吧:

比如一名牙医,他开了家私人诊所,然后聘请了秘书、卫生员和牙医助理等很多人员。一般情况下,秘书可以帮忙做预约,卫生员可以帮助消毒,牙医助理也可以帮忙做一些基础的工作,但是如果需要给牙齿钻孔或者进行根部的治疗时,就必须需要牙医亲自「出马」,毕竟没有专业的知识是绝对搞不定的,如果没有专业的「牙医」,即使是全部的“雇员”加起来,也搞不定这件事。

无论乐意与否,每个组织都有层次结构,人们按不同技能和能力水平分类。所以,当你一昧要求开发者担任其他角色时,最后的结果可能是:没人能担当得起开发者的角色。

如此运转会损害所有人员,除了雇主。这场实验本意是提高软件质量,却无意之间成了闹剧,让最有才华的员工过度工作(做了很多无用功),同时低层次的职位没有存在感。

而这正是问题的症结所在。所有最初由不同层次的人所担任的岗位,都是由「全栈」开发者进行的。大型公司非常喜欢这一点,因为这意味着他们可以雇用更少的人来做同样的工作。

尽管在这个过程中,实际开发成为开发者的工作中很小的一部分。这就是为什么我们看到这么多的开发者无法通过 FizzBuzz:

他们几乎没写任何代码。这个问题非常普遍,你能想象一下面试一位厨师,问他每天有多少时间真的花在烹饪上?

博而不精

如果你是一个中等规模软件的开发者,你应该需要一个适当的部署系统。考考你,请马上说出下述这些系统各自的优缺点:

Puppet、Chef、Salt、Ansible、 Vagrant 和 Docker。现在开始实现你的部署解决方案吧!你是否注意到以上系统有一项是完全无关的吗?

专业化是有原因的:人们只能专注于有限的知识。任务切换无疑是昂贵的。强迫开发者承担其他角色意味着:

  • 无法专注开发
  • 需要补充庞大的知识领域
  • 不堪重负

更重要的是,通过迫使开发者承担「全栈」责任,他们会支付其远远高于完成大部分工作的市场平均价格。

如果开发人员每年挣 100K ,你可以支付 4 个开发者每年 100K 来做一两个人的任务,50% 时间完全做开发,剩下 50% 的时间做发布管理。或者,只是雇一个发布经理,花大约 75K,但两个开发者全职开发。

注意一下兼职发布管理的开发者在无需发布时浪费了很多时间。

不要再扼杀开发者!

这样做的效果是摧毁「开发者」这个角色,以一种「全能技术工人」来替代。

就笔者所知,每个进入编程领域的开发者,都是因为他们实际上喜欢开发(或者一度喜欢)。当你强迫最聪明的人承担额外角色时,其实伤害了所有人。

并非所有公司都是创业公司。创业公司不得不让开发者身兼多职,也有其必要性。但是请根据实际情况进行判断,你是否需要 DevOps。

推荐9个 DevOps 实践公司

你可能知道 Netflix 和 Etsy 在 DevOps 领域的突出表现,但是下面的9个 DevOps 实践公司却可能让你感到不可思议,我们一起来盘点下。

1. Starbucks

星巴克在2015年4月的 #DevOpsTogether 开始了其 DevOps 计划。尽管「在一起」已经是个陈词滥调,但是不用担心。从Medium.com这篇文章了解到,星巴克 CEO 非常支持 DevOps 理念,并且一直努力让公司保持技术上的创新。

2. Ancestry.com

Ancestry.com 是 DevOps 运动的早期采用者,是 Continuous Delivery 和 DevOps 运动的先锋。

早在2013年,这些流行的方法就对发布次数和公司满意度上有了显著提升。想了解更多关于他们的过程、迁移和 DevOps 文化,不妨查看一下他们的系列文章

3. Ashley Madison

没人会觉得这是一个 DevSecOps 博客,尽管其数据库被黑已经成为 DevOps 安全的反面教材。冒着风险开始一个更大的话题,这个著名公司的失败有助于阐明事实,也许 DevOps 并不总意味着更快和更经常。这里有一些不错的DevOps安全文章,仅供参考。

4. Etsy

Etsy 也在实践 DevOps。Etsy 不仅是一个超级酷的公司,专注于节日礼物,他们同样也在努力的 DevOps。

2008年,他们看到了 Flickr 每天发布10次部署,2009年,他们建立自己的工具来更好更快地发布代码,而且不仅由开发团队。「Etsy 如何应用 DevOps」绝对值得一读,或者再看看他们的代码

5. U.S. Customs and Border Protection

这个肯定是你想不到的!在司法部、海关、边境保护署和美联储,美国政府异常活跃于采用 DevOps。

6. LinkedIn

LinkedIn 成为一个大型的 DevOps 用户不足为奇。早在2009年,LinkedIn 团队就开始使用自动化部署工具,用于管理在1000+节点环境下发布上千个应用/服务的复杂性。现在他们正在培养世界级的 DevOps 社区。看看这篇关于他们使用第一个工具的文章。

7. NASA

不管你是否知道 NASA 正在使用 DevOps,这都非常振奋人心。我们最爱的方法可能正帮助人类登上火星,或许是有点夸张……或者也名副其实。无论哪种方式,NASA 一直在思考软件部署,自从2004年首先采用了 JIRA 后,他们已经抵达 DevOps 星球。

8. Apple

不要让苹果巨大的 IOS 更新,以及它重要的九月发布季,让你误以为他们放弃了技术创新的风口浪尖。尽管苹果的 DevOps 还没有广泛使用,但他们正在寻找合适的工具,雇佣优秀的人才,来完善日常部署。

9. Airbnb

类似 Netflix 和 Uber,Airbnb 被认为是一个「第三平台公司」,因为他们利用社交、移动、分析和云。作为一个第三平台公司,DevOps 需求不可避免,这便于迅速发布多个小型部署。

如果你有兴趣学习更多关于 Airbnb 的数据和基础设施,可以参考这个slides

然而,是否每个公司都需要紧跟这个潮流,Jeff Knupp 在 「How ‘DevOps’ is Killing the Developer 」一文中发表了他的观点。

OneAPM 是应用性能管理领域的新兴领军企业,能帮助运维人员进行故障预警和定位,减少业务系统维护的工作量,同时还能提供可追溯的性能数据,量化运维部门的业务价值。想告别加班熬夜,欢迎免费注册使用!

荣誉,还是苦逼?| 也议全栈工程师和DevOps的更多相关文章

  1. 通往全栈工程师的捷径 —— react

    腾讯Bugly特约作者: 左明 首先,我们来看看 React 在世界范围的热度趋势,下图是关键词“房价”和 “React” 在 Google Trends 上的搜索量对比,蓝色的是 React,红色的 ...

  2. 教你成为全栈工程师(Full Stack Developer) 〇-什么是全栈工程师

    作为一个编码12年的工程师老将,讲述整段工程师的往事,顺便把知识都泄露出去,希望读者能少走一些弯路. 这段往事包括:从不会动的静态网页到最流行的网站开发.实现自己的博客网站.在云里雾里的云中搜索.大数 ...

  3. Python全栈工程师(递归函数、闭包)

    ParisGabriel            每天坚持手写  一天一篇  决定坚持几年 全栈工程师     Python人工智能从入门到精通 函数式编程: 是指用一系列函数解决问题 每一个函数完成细 ...

  4. Web全栈工程师修养

    全栈工程师现在是个很热的话题,如何定义全栈工程师?在著名的问答网站Quora上有人提出了这个问题,其中一个获得了高票的回答是: 全栈工程师是指,一个能处理数据库.服务器.系统工程和客户端的所有工作的工 ...

  5. 《web全栈工程师的自我修养》读书笔记

    有幸读了yuguo<web全栈工程师的自我修养>,颇有收获,故在此对读到的内容加以整理,方便指导,同时再回顾一遍书中的内容. 概览 整本书叙述的是作者的成长经历,通过经验的分享,给新人或者 ...

  6. 《Web全栈工程师的自我修养》读书笔记(转载)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/5 ...

  7. JavaScript 全栈工程师培训教程(来自阮一峰)

    来源于:https://twitter.com/ruanyf http://www.ruanyifeng.com/blog/2016/11/javascript.html 全栈工程师培训材料,帮助学习 ...

  8. 全栈工程师是不是必须得会HTML5?

    最近看了很多招聘,都要求前端工程师必须得会HTML5.个人觉得只要会了html,HTML5不会太难,不过全栈工程师要求会的太多了 HTML CSS JavaScript HTML 5 CSS 3 都说 ...

  9. 全栈工程师学习Linux技术的忠告

    随着科技的普及,Linux作为最受欢迎的服务端操作系统,无人不知,无人不晓.当今,不论是服务器搭建,还是客户端开发,Linux系统的基础技能对全栈来说都是必备的,而了解如下几个问题可以更好的帮助你成为 ...

随机推荐

  1. 调整Windows8允许多用户登录

    最近LP说要在继续教育平台上学习,好像是中级的需要进行继续教育吧,具体情况不管了.LP说网站登录后没办法听到声音看到视频,但是我的可以,系统环境是Win8,IE10,不过是在Chrome下使用IPA插 ...

  2. Javascript中的函数

    Javascript中的函数 1.什么是函数 函数是被命名的,独立的,完成特定功能的代码段.其可能给调用它的程序返回值,我们把这个代码段就称之为"函数". 被命名的:函数大部分都是 ...

  3. StringBuilder和StringBuffer

    StringBuilder java.lang 类 StringBuilder java.lang.Object java.lang.StringBuilder 所有已实现的接口: Serializa ...

  4. 查看mysql集群状态是否正常

    如何查看mysql集群状态是否正常: 进入mysql 输入show status like 'wsrep%': 查看cluster sizes 是否为3

  5. LXC-Linux Containers介绍

    Linux Containers,Linux的容器,容器嘛,可以想象成一个大的装东西的罐子,罐子口很大,里面可以装很多同样形状,只不过大小不同的小罐子.专业的话,叫做基于容器的操作系统层面的虚拟化技术 ...

  6. poj 1077 Eight(A*)

    经典的八数码问题,用来练习各种搜索=_=.这题我用的A*做的,A*的主要思想就是在广搜的时候加了一个估价函数,用来评估此状态距离最终状态的大概距离.这样就可以省下很多状态不用搜索.对于每个状态设置一个 ...

  7. PHP 反射 ReflectionClass

    今天遇到了这样一个问题,如下代码: classA.php <?php class ClassA{ public function funcAa(){ } public function func ...

  8. 关于canvas中的jquery

    关于h5,相比前端的同事们都很了解了吧!h5里面有个canvas,现在用的蛮火.但是canvas里面的代码确实是有点繁多,特别是要对于图形做什么操作的时候...我昨天无意间发现了一个canvas的插件 ...

  9. android eclipse集成环境

    Android开发工具(ADT)是一个插件为Eclipse IDE,它的目的是给你一个强大的,集成的环境来构建Android应用程序. ADT扩展了Eclipse的功能使用Android SDK工具, ...

  10. 【CSDN人物访谈】蒋守壮分享他的技术成长之路以及对Hive技术的解读与思考

    结缘大数据技术 CSDN:请简单地介绍一下自己. 蒋守壮:首先非常感谢CSDN能够给我这次被专访的机会,可以让我重新审视自己的职业发展历程,也希望能够帮助一些同行的朋友们.目前就职万达网络科技集团有限 ...