Reddit上一位网友有这样的困惑:
\\显然,在任何领域都没有足够优秀的工程师,但是,为什么DevOps / SRE人才特别难找?
\\这个问题引发了大家的讨论,其中的回答总结起来大致有这些点:
\\“DevOps工程师”:被过度使用的术语
\\撇开“DevOps是一种文化而不是一种角色”这种老生畅谈的话不谈,DevOps工程师需要做任何事情:包括本地服务器系统管理,构建工程,发布管理,云基础架构管理,内部工具开发,IT支持,分布式系统工程,文化推广或几乎任何与技术有关的事情。DevOps工程师要掌握的技能范围如此广泛,扛着这么多责任,以致于在为团队筛选简历时对技能和工具的要求实在是太混乱了。
\\对于DevOps团队管理者来说,有些人倾向于不用DevOps这个词,但它现在已经很流行了。公司能做的最好的事情就是寻找体面的系统管理员和有开发技能的人员(或有良好的能力+很好的态度)。相比起硬技能,很多人更看重态度和学习的意愿。只要有一位优秀的高级导师,这些有学习意愿的人就可以学到很多东西。额外的收获是,这个人学习你们的做事方式和最佳实践,这样可以避免一个太自我的员工。
\\没有通往DevOps的传统教育途径
\\经验和背景的多样性是DevOps群体的强大优势之一,但人才很难在早期被发现。一个优秀的DevOps工程师可以来自任何地方:很多DevOps工程师没有正式的计算机专业文凭,有些甚至来自法律或会计等非技术背景。如果有更好的认证/学位真正能验证“DevOps”技能,那将是很好的,但目前的现状只能是这样。
\\还有一些优秀的候选人具有技术实力和很好的软技能,但在现在一些比较酷的面试中(如白板面试等)不能很好地展现出来,有人提到最好的方式是“试用”工作:候选人进来与团队合作,如果他们表现和沟通都良好,就可以留下来了。但这很难实现。
\\流行工具相对年轻
\\显然,大家聘请拥有二十年AWS经验的工程师和十年kubernetes生产管理经验的人。但如果对于这些工具每个人的经验都不到三年,那么很难确定谁的能力更强。
\\是的,所有的工具都很新。所以要寻找聪明,有学习动力的人(有良好的操作技能和一些开发背景的人),现在可能不具备所有的技能,但可以花时间慢慢培养。
\\有的人可能只有两年的经验,但是他们主动设置了公司整个Azure基础设施,Arm模板,自动化测试。如果有人表现出了创新的主动性,并且从技术的角度来看会使公司的运作更加顺利,就应该给他们机会,给他们3-6个月的试用期以证明他们是值得保留的。
\\而对于求职者来说,大家普遍提到的有以下这几点。
\\薪酬福利
\\招一个可以写好代码的开发人员很难。
\\想找到懂基础设施的开发人员?那几乎不可能。
\\想找到懂基础设施,自动化,部署,网络,操作系统,数据库等的开发人员,还不想开出足够的薪酬?祝你好运。
\\一位网友提到他所在地区(丹佛)的优秀DevOps工程师每年起薪约为125,000美元。高级DevOps工程师的收入约为165K-185K美元。
\\Stack Overflow 2018 年最新的开发者调查结果显示,在很多国家DevOps 专家收入最高,美国 DevOps 专家的年薪中位数接近 10 万美元。看看各种发生故障删库跑路的事故就知道,一个高级DevOps人员真的值得花钱。
\\如果你的Title是devOps并且你的年薪不到100k美元,那么恭喜你,要么你是一个发布工程师,要么是一个系统管理员。
\\其次,文化/福利/工作生活平衡。SRE需求量很大,即使你能满足你所在地区的工资需求和经验需求,公司的文化如何?如果它比我目前的工作环境更糟糕,那应聘者为什么还要考虑你们?薪酬很重要,但更有经验的工程师知道钱并不是一切。
\\总结来说,这个问题的原因在于DevOps/SRE现在很热门。如果想要招到高水平人才,就要给出比他们现在的工作更诱人的薪酬福利。或者,也可以招一个初级水平的人才慢慢培养。
\\全栈神话
\\SRE / DevOps被视为“兼职”工作。即使他们管理了数百个服务和数千个实例/容器,他们的技能组中也没有在Java中构建微服务。或者他们不会白板数据结构和二叉树,因为工作不需要。
\\但是公司希望他们能了解一切事情: “必须有5年的编程经验,必须了解CI / CD,会用docker,kubernetes,linux,windows,Azure,GCP,AWS,jenkins,懂octopus部署,VSTS等”……
\\公司对DevOps/SRE角色定位不清楚
\\对于这一点,主要问题是公司认为他们需要一个DevOps或SRE人员来填补需要来自不同背景人员的多个职位空缺。
\\招聘DevOps很难,因为雇主通常不清楚他们想要什么样的DevOps人。关于DevOps,大致可以划分成这样的三类:
\\- 偏运维的DevOps - 系统管理员,具有一些网络技能,并且可以熟练地使用除shell / powershell之外的至少一种语言编写脚本。他们会部署和自动化IT基础架构的各种组件,并可帮助解决这些组件的问题。他们还可以确定下一个项目的基础设施要求,并可以设置CI / CD管道来传递基础设施工件。\\t
- 偏开发的DevOps - 他们是熟练的开发人员并且了解公司的开发栈。他们可以深入研究构建/部署故障并进行故障排除。他们还可以识别资源需求(例如JVM设置)和要使用的潜在框架。他们熟悉构建脚本和设置构建,并知道如何添加和利用正在使用或创建的应用程序的性能指标。他们可以支持诸如应用软件开发最佳实践之类的事情,并且可以启动/使用现有的CI / CD管道来提供软件工件。\\t
- DevOps工具专家 - 他们精通DevOps管道的管理,可以协助本地开发或其他IT成员使用工具。他们能及时了解IT行业中DevOps工具的最新信息,并可帮助构建和引导DevOps管道更改的实现。\
高级系统运维人员可能没有在X云的X年经验,但他们可能一直在使用基于云的工具。对于VMWare,Chef,Docker等工具有一定的经验的人都应该能够很好地过渡到其他虚拟和云技术。
\\缺乏认可
\\现实情况是,大多数管理人员并不了解 DevOps的全部内容。对于纯软件开发人员,他们有一套指标 - 签入数量,编写代码的行数,解决的JIRA问题数量等等, 但他们不知道如何衡量DevOps人员的水平。保持一切正常运行并确保通过自动化顺利部署非常重要,但管理人员不了解这其中的发生方式,也不知道如何衡量。
\\也有很多管理人员将DevOps视为成本,而不是收入来源。他们将DevOps人员当作一次性和可互换的对象,拒绝投资DevOps人员平稳工作所需的资源。除了缺乏支持之外,DevOps人员可能还做着脏活累活:正在尝试使用的自动化工具有时候到处是bug,简直让人心累。
\\从公司管理者的角度来说,无论如何,如果你没有从你自己的工程人员内部培养出优秀的DevOps人员,那么就该问自己为什么了。如果你不重视DevOps,其他人也不会,这样就会在招人方面困难重重。
\\真正要找DevOps / SRE的雇主应该回到“谁对生产中断负责”这个问题。如果答案是DevOps / SRE职位,那么这个雇主的招聘就多了很多挑战。如果他们说整个产品团队,那么至少他们对现实情况的认识是对的,出了问题不会只想找人背锅,这样的团队才更容易找到合适的人才。
\\你的团队的DevOps/SRE职位招聘困难吗?作为DevOps/SRE工程师你在求职过程中感觉也是如此吗?