DevOps教练是个什么鬼?我如何成长为DevOps教练?
Posted DevOps咖啡馆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DevOps教练是个什么鬼?我如何成长为DevOps教练?相关的知识,希望对你有一定的参考价值。
简介:随着企业对DevOps需求的不断增加,预计DevOps教练会像敏捷教练一样,未来为企业大量所需,但目前很多人还不了解DevOps教练做什么。本文分析了DevOps教练的三个层级的职责要求,提供了一个典型的职位描述作为参考,并在文末给出通过快速学习成长为DevOps教练的建议。
1. 企业DevOps转型取决于组织中人的能力
根据Gartner的数据,70%的IT市场现在都集中在DevOps上。下图的谷歌搜索趋势也反映了DevOps从诞生(2009年)到现在越来越火爆的势头。
但是另一方面,Gartner也同时发现,目前使用DevOps的组织中,至少有50%无法达到原本商业论证中所期待的好处。甚至有文章指出, "在财富500强企业中敏捷和DevOps正在失败(https://dzone.com/articles/agile-and-devops-are-failing-in-fortune-500-compan)"。为什么一方面有些企业DevOps越做越好(见DevOps状态调查报告),而另外一些企业实施DevOps则出现平台期,甚至有退回到原点的情况呢?
说到底,不管是组织还是个人能力的成长,都有一定的规则:
任何技能的掌握都有一个学习了基本技能之后,通过不断努力练习可以达成的由“不会”到”会“临界线。比如游泳,当你掌握了基本的打腿、划臂、呼吸等技巧之后,如果能比较好的把这些动作组合起来,就可以在游泳池里游上个100米。那么我们可以认为游100米是个区分“不会游泳“和“会游泳”的临界线。
当然具备“会”的能力之后,离真正的高手还是有很大距离。比如在游泳池里游100米和在海水里自如地(不需要大量体力消耗)游上1千米是有很大区别的。我们可以把“在开放水域自由地游1千米”作为“会游”和“游得好”的分界线。
组织的DevOps能力发展和以上个人能力的发展路径是类似的:
我们往往期待的是A路径:从开始采用DevOps到组织具备高绩效的DevOps能力的线性发展的过程。
但很常见的比如B路径:组织尝试引入DevOps实践之后感觉困难太多,领导不支持或者目前的项目人员能力不足等,从而退回到原点。
或者C路径:取得了早期成功,但在继续往更高绩效水平推进的时候由于要偿还的技术、文化债务较多,无法有效地克服此类问题,则会导致退回到原点。
也有D路径的情况:取得一定的成功,并且可以维持在该水平绩效。但一直无法取得下一步突破,也无法真正达到组织和客户所期待的业务价值。
图1:能力成长的可能路径
DevOps说到底是系统性的改变,其中最重要的当然是人。工具是由人引入、使用的,变革由人来推动,制度流程由人建立并执行,当然识别和解决问题更是要靠人。没有任何一个组织可以通过“购买”或“外包”DevOps而实现持久的成功。
对于希望成功变革的组织来讲,很重要的是要识别、保护和支持有创新能力和意愿的那群“领头雁”(创新者和早期使用者)。通过这群人的成功,引领组织获得早期成功,跨越中级绩效陷阱,并不断推动DevOps在整个组织中的规模化和达成更高的绩效。
图2: 技术采纳生命周期曲线
2. DevOps教练做什么
在组织DevOps转型所依赖的人才团队中,DevOps教练是一个极为重要的关键角色。那么,什么是DevOps教练,团队又为什么需要DevOps教练?
这里可以参考敏捷教练的定义来说明,即:DevOps教练帮助团队或个人采用并改进DevOps方法和实践。DevOps教练帮助人们重新思考和改变他们交付软件的方式(关注价值流的方方面面)。教练的角色一部分是嵌入在团队内的培训师,一部分是咨询。
雅虎一项针对敏捷的研究表明,没有教练支持的Scrum团队可以提高35%的生产力,而有教练支持的Scrum团队则提高了300%甚至更多。既然敏捷教练已经为大家所熟悉和认可,那么作为敏捷2.0的DevOps必然更需要教练的支持。
DevOps教练可以大体分为两类:管理教练和技术教练。在下图Nationwide的DevOps登山图中,这两者分别被命名为DevOps Leaders(DevOps领导者)和Tech Consulting(技术咨询师 - 这个角色应该对软件架构、部署流水线构建优化、软件交付整体质量等负责)。本文聚焦于前者 - 偏管理类的DevOps教练一职(注:管理教练也需有对技术的一定理解)。
图3: 全美互惠保险的DevOps登山图(右下角的DevOps Leaders即为DevOps教练一职)
根据DevOps教练职责范围,从小到大有三个不同的层级。
第一级:团队级别教练
在团队级别上,DevOps教练所做的工作可以对应Scrum团队里的Scrum Master。当然DevOps目前并没有像敏捷中Scrum一样的一套方法。下图是参考EXIN DevOps Master课程中对DevOps团队角色定义(白皮书下载:https://www.exin.com/certifications/exin-devops-master-exam)。其职位名称为流程主管(Process Master)。
图4: EXIN DevOps Master课程里定义的DevOps团队各个角色。其中Process Master可以认为是团队级别的DevOps教练。
严格来讲,成熟团队里的Process Master和标准DevOps教练还是有些区别的(教练要求为整体项目的成功提供支持),但其核心职责是类似的。
EXIN DevOps Master课程体系中对这一角色有明确定义:
领导并促进团队,这个角色类似于在Scrum中 的Scrum Master。
对整个过程实施可视化管控,力求建立单件流作业(one-piece flow)的流水线式的流程。
可视化管控意味着“在不需要解释的情况下,通过信息板是否每个人都能很容易的理解当前的情形?”它不并显示状态。但它可以用来表达是否有问题出现。
经验需求:Scrum Master,敏捷项目领导(Agile Project Leader)。
第二级:多团队级别教练
这个级别的DevOps教练指导多个DevOps团队,让团队内部和外部的力量参与进来,解决阻碍DevOps实施的问题。在这个层级上,教练的四项核心技能需要充分发展:教授(teaching),辅导(mentoring),协调(facilitating),以及专业教练(professional coaching)。下图即为跨多个团队指导的DevOps教练一职(在DevOps Master的角色定义中,也被称作流程主管 Process Master,不过是跨团队的)。这里的跨团队教练角色和上一级的教练可以一起合作。
图5: EXIN DevOps Master课程里定义的跨团队的DevOps教练角色,指导多个团队的DevOps实践。
第三级:企业级DevOps教练
可以有效制定企业DevOps转型的整体战略,保障试点项目的成功,引导DevOps实践的规模化发展,引入行业最佳实践,制定企业跨部门的DevOps流程实践,发展高绩效组织文化实践,协助DevOps技术咨询师制定适合的工具集,等等。
这一角色在某些企业中是敏捷/DevOps变革领导小组的关键成员。下图来自张乐老师的《某大型互联网金融项目百人团队持续交付转型实践》一文。
图6: 某大型互联网项目里的专门推进变革的小组。企业级DevOps教练应该是其中的关键角色(虽然职位的具体名称可能不同)。
3. 一个典型的DevOps教练职位描述
下面我们通过一个典型的DevOps教练JD(Job Description)来看看作为DevOps教练具体来讲都需要哪些技能。该工作职位描述为CGI公司于2018年8月10日发布(JD链接:https://lensa.com/devops-coach-jobs/bloomfield/jd/46253990864f90c4436dc5ed06d3cc5d)。需求覆盖了DevOps教练的所有关键技能,非常具有典型意义。
其中,属于技术咨询范畴当然更是技术咨询师的核心职责,不过对于DevOps教练来说也需要有相当程度的了解。DevOps本身是个系统工程,虽然不用每种技能都是专家(也不可能),但各项技能的有效组合才会使得快速解决问题成为可能。
我认为属于DevOps教练的核心能力用蓝色字体标出。
职位描述 - DevOps 教练:
一、工作职责(Responsibilities)
DevOps方法方面专家,能够要求团队成员以规范的方法来推进开发和运维的能力
通过变革来指导组织,帮助识别和克服限制团队生产力和质量的阻碍
对构建和部署过程给出建议以确保最佳实践
指导团队如何更好地使用DevOps工具
帮助平台团队实现平台自动化
培养团队精神和遵守规范
在需要的时候进行一对一的指导,特别是对刚刚接触DevOps思维的成员
评估团队DevOps成熟度并提供进度反馈
预测和识别问题,并提供解决障碍和问题改善的建议
参与或领导复杂问题的解决,以定义问题,评估当前状态的根本原因,设计和测试解决方案,并实施能产生预期结果的解决方案
二、成功担任这一职务所需的资质(Qualifications)
理解精益和敏捷流程背后的原则和价值。有SAFe/Scrum/看板经验者优先
善于与组织中各种技能和角色的人沟通,包括技术工程师和有成本意识的高管人员
从运维/客户服务的角度对价值流有很强的理解
具有使用CI/CD工具(如Jenkins、Deploy、Ansible等)自动化工作流和流程的经验
能够解释内部和外部业务挑战并实施最佳实践以改进产品、流程或服务
能够领导复杂的项目并承担风险
在解决技术、运营和组织方面的挑战时具有判断能力
具备管理团队的能力,包括识别和招聘人才,管理绩效,以及决定资源分配
有能力影响他人采用新的角度,能够有技巧地处理人际关系问题。
三、经验要求(Experience)
至少6年敏捷环境中工作的经验,最好是开发或IT运维角色
至少3年以上指导多支团队的经验
在开发生命周期中使用DevOps工具的经验(GitHub, GoCD, Jenkins, AWS, Azure, Docker, Splunk)
在运维领域有经验,例如变更和发布管理、网络、安全和托管
四、能力(Competencies)
能够使相关方跨职能参与,以减轻团队的障碍
较强的沟通能力,能够处理和解释复杂的技术概念,并在决策上协调组织
协作、高效、创新
五、能够指导任何DevOps实践(Practices)培训,包括但不限于:
XP实践
测试驱动的基础设施
ATDD / TDD / BDD核心
持续集成/交付
分布式安全实践
静态分析(代码质量检查)
4. 成长为DevOps教练的建议
从以上JD可以看到,DevOps教练对能力的要求是非常全面,从技术、管理、流程、业务、组织文化、个人领导力都有要求,而这并非该职位描述的过度要求或不切实际的期望。实际上,由于DevOps的复杂度和系统性,确实要求DevOps教练具备职位描述里提及的各项能力。从另一方面讲,这样的复杂度也会有效地建立起较高职业屏障。其实,通过有效的集中式学习,是可以快速建立起相关能力的。
根据你自己的工作经验来选择学习成长路径:
如果你是敏捷/精益教练,因为敏捷/精益和DevOps有很多共通之处,这对成长为DevOps教练很有帮助。而你的沟通和领导能力可能也是强项。你主要需要补全的是:持续交付相关的工程技术实践、IT服务管理等方面的知识。敏捷教练和DevOps教练的差异可以参考这篇文章 Can any Agile coach lead a DevOps implementation?(http://agilopedia.blogspot.com/2017/11/what-role-of-devops-coach-part-4-can.html)
如果你是技术专家,你的技术知识可以使你更多的把精力集中在敏捷/精益方面,以及教练/咨询的能力。下图的敏捷教练模型,展示的各个技能项可以作为DevOps教练的参考。
图7: 一个敏捷教练所需要的技能。在教练技术上,DevOps教练的要求也是相通的。技术岗位的学习者需要不断磨练。
针对其它的非技术岗管理者,比如项目经理、PMO、产品经理、质量和过程保证部门人员、也包括一线或中层职能部门经理人,你的长处在于管理和沟通、组织文化、业务以及领导力,你最需要学习的是跟持续交付相关的技术实践,以及敏捷、精益、ITSM这些流程管理实践。
5. 结语
就像初学游泳者首先需要有一套"基础技能包“反复练习一样,要从你现在的岗位成长为DevOps教练也有一套初学者必会的技能组合(Starter set of a few half-assed skills)。通过集中的训练,是可以做到在知识和能力上的快速成长,尽快突破第一层的绩效临界线。帮助不同背景的学员快速掌握成为DevOps教练的核心能力,是我当下最重要的目标。
关于作者 许峰
“专注于为企业培养面向未来的DevOps教练”
(转载请保持文章的完整)
以上是关于DevOps教练是个什么鬼?我如何成长为DevOps教练?的主要内容,如果未能解决你的问题,请参考以下文章