如何认知DevOps全貌及本质,小编本着自我学习的态度,以专辑系列形式,持续整合最新业界动态及案例,方便查阅与运用,感兴趣的朋友,大家根据情况实践起来吧。
今日系列:DevOps教练是个什么鬼?我如何成长为DevOps教练?
1. DevOps转型取决于人的能力
根据Gartner的数据,70%的IT市场现在都集中在DevOps上。
但是另一方面,目前使用DevOps的组织中,至少有50%无法达到原本商业论证中所期待的好处。为什么一方面有些企业DevOps越做越好,而另外一些企业实施DevOps则出现平台期,甚至有退回到原点的情况呢?
说到底,不管是组织还是个人能力的成长,都有一定之规:
任何技能的掌握都需要学习了基本技能之后,通过不断练习实践才能“学会”。
当然具备“会”的能力之后,离真正的高手还是有很大距离。
组织的DevOps能力发展和以上个人能力的发展路径是类似的:
图1:能力成长的可能路径
1)我们往往期待的是A路径:从开始采用DevOps到组织具备高绩效的DevOps能力的线性发展的过程。
2)但很常见的比如B路径:组织尝试引入DevOps实践之后感觉困难太多,领导不支持或者目前的项目人员能力不足等,从而退回到原点。
3)或者C路径:取得了早期成功,但在继续往更高绩效水平推进的时候由于要偿还的技术、文化债务较多,无法有效地克服此类问题,则会导致退回到原点。
4)也有D路径的情况:取得一定的成功,并且可以维持在该水平绩效。但一直无法取得下一步突破,也无法真正达到组织和客户所期待的业务价值。
DevOps说到底是系统性的改变,其中最重要的是人。工具是由人引入、使用的,变革由人来推动,制度流程由人建立并执行,当然识别和解决问题更是要靠人。
图2: 技术采纳生命周期曲线
2. DevOps教练做什么
在组织DevOps转型所依赖的人才团队中,DevOps教练是一个极为重要的关键角色。那么,什么是DevOps教练?团队又为什么需要DevOps教练?
这里可以参考敏捷教练的定义来说明:DevOps教练帮助人们重新思考和改变他们交付软件的方式(关注价值流的方方面面)。
DevOps教练可以大体分为两类:管理教练和技术教练,本文聚焦于前者。
根据DevOps教练职责范围,从小到大有三个不同的层级。
第一级:团队级别教练
在团队级别上,DevOps教练所做的工作可以对应Scrum团队里的Scrum Master。当然DevOps目前并没有像敏捷中Scrum一样的一套方法。
下图是参考EXIN DevOps Master课程中对DevOps团队角色定义,其职位名称为流程主管(Process Master)。
图3: DevOps Master课程里定义的DevOps团队各个角色
EXIN DevOps Master课程体系中对这一角色有明确定义:
领导并促进团队,这个角色类似于在Scrum中 的Scrum Master。
对整个过程实施可视化管控,力求建立单件流作业(one-piece flow)的流水线式的流程。
可视化管控意味着“在不需要解释的情况下,通过信息板是否每个人都能很容易的理解当前的情形?”它不并显示状态。但它可以用来表达是否有问题出现。
经验需求:Scrum Master,敏捷项目领导(Agile Project Leader)。
第二级:多团队级别教练
在这个层级上,教练的四项核心技能需要充分发展:教授(teaching),辅导(mentoring),协调(facilitating),以及专业教练(professional coaching)。
下图即为跨多个团队指导的DevOps教练一职。
图4: EXIN DevOps Master课程里定义的跨团队的DevOps教练角色
第三级:企业级DevOps教练
这一角色在某些企业中是敏捷/DevOps变革领导小组的关键成员。
下图来自张乐老师的《某大型互联网金融项目百人团队持续交付转型实践》一文。
图5: 某大型互联网项目里专门推进变革的小组
3. 一个典型的DevOps教练职位描述
作为DevOps教练具体来讲都需要哪些技能,下面我们通过一个典型的DevOps教练JD(Job Description)来看看。
个人认为属于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教练的参考。
图6: 一个敏捷教练所需要的技能
针对其它的非技术岗管理者,比如项目经理、PMO、产品经理、质量和过程保证部门人员、也包括一线或中层职能部门经理人,你的长处在于管理和沟通、组织文化、业务以及领导力,你最需要学习的是跟持续交付相关的技术实践,以及敏捷、精益、ITSM这些流程管理实践。
5. 结语
就像初学游泳者首先需要有一套"基础技能包“反复练习一样,要从你现在的岗位成长为DevOps教练也有一套初学者必会的技能组合。通过集中的训练,是可以做到在知识和能力上的快速成长,尽快突破第一层的绩效临界线。