《持续交付2.0》读后感——软件工程实战进阶
在还没有阅读本书之前,我以为本书是介绍devops工具的,看完之后,觉得本书应该属于软件工程,并且是接地气的,进阶版的软件工程。
持续集成2.0这本书中有很多的干货,本文我只是找了几个我认为比较重要的点进行了描述,总之就一个目的,我们要快速地、正确地、高质量地把任务完成,并交付客户。
双环模型
开篇便是从较宏观的角度介绍软件研发过程的持续交付2.0双环模型,
探索-->验证-->探索-->验证...,
很熟悉的模式,想起了实践论、小步快走、用户调研……
总的来说,双环模型是很好的抽象总结。
组织文化
接着介绍了组织文化,怎么让双环模型落地。章节内容不多,但谈到了很多要点,总结下我有感触的文化上的3点:
(1)owner意识,组织里的每一个人都对整体产品负责,任何好的制度,最终都要落到人来执行,安灯系统在制度上更容易激发执行者的责任意识;
(2)目标感,在流程的每个方面强化目标感,基于目标衍生出来的动作,包括:关键结果、培训、衡量手段;
(3)学习型组织,允许犯错,定期复盘,让组织越来越好;
除了介绍文化之外,还重点介绍了,如何建立组织所希望的企业文化的步骤,这点和团队管理比较像,作者总结的很完善:
(1)定义想要做的事情;
(2)定义期望的做事方法;
(3)提供相应的培训;
(4)做些必需的事情来强化所希望的那些行为。
读到这里「心有戚戚焉」,也是总结了我在团队管理上的探索。
我希望我们团队是一个(1)执行力强又有创造思维;(2)协作高效;(3)有分享精神、有影响力;(4)持续进步的团队。
于是,我总结出来一套做事方法,并采取一些制度流程,例如:
制定需求开发的标准流程
定期每周一次团队分享会议
每周复盘团队OKR
每周复盘个人需求规划&执行情况
鼓励每个负责人自己提炼需求——技术驱动、
强制Code Review 制度
强制文档总结
强化导师带人时间投入
…
还提供了一些职业素养的指导文档、新人手册、导师文档以及推荐阅读书籍,并在团队会议、奖项申报、绩效考核中强化团队导向,让符合团队导向的同学拿到更多激励。
软件研发流程
接下来有多个章节,主要介绍了软件研发流程中的要点。
软件系统架构
首先是软件系统架构,可持续交付对系统的架构有要求,常见的是微核架构和微服务架构。作者总结的持续交付架构写得很好:
为测试而设计;
为部署而设计;
为监控而设计;
为扩展而设计;
为失效而设计。
5个小点很精炼,高扩展、容易测试、容易部署、可监控、要有容错设计,仔细思索,影响交付效率的通用的要点就是这些。
需求协作管理
书中对需求协作管理的讨论,包括从需求产出到需求交付的全流程,其中很重要的点是如何拆分需求,例如:INVEST原则(独立的、可协商的、有价值的、可估算的、规模小且适中的。
部署流水线
需求编码完成之后,就是部署,接着介绍了部署流水线原则和工具的设计,这里详细介绍了流水线涉及的每个环节.
分支策略
接下来看的是分支策略,当前推崇的是主干开发,主干发布,注意:只要分支时间存在时间极短(书中认为,代码变更从开始到提交应尽量不超过1天、绝大多数不应超过3天),及时合回到主干,那么就可以算作这种模式。
代码编写过程中怎么能够持续的合并代码、快速编译反馈,依赖基础设施建设、研发流程,以及工程师的素质。要实现持续高效的代码合入,减少人力,在代码质量上需要自动化——自动化测试。
配置管理
为了实现流水线的“一切自动化”——软件配置管理就显得非常重要,软件配置管理是指在整个软件生命周期中,对生产和运行环节中相关产物的管理。
低风险发布
接着是低风险发布,指在发布环节如何保证低风险高效率。最后是监测与决策,服务上线之后,监控少不了。
真实案例
最后三个章节介绍了三个真实案例。
(1)将大团队拆小:feature term模式的实践;
(2)小团队从“假”敏捷到“真”敏捷转换的实践;
(3)小团队从混乱模式进入到敏捷开发,再进入到持续交付,并形成devops文化的实践;
我正好在职业生涯中参与过类似案例1和3的团队。
2011年毕业工作,遇到的第一个团队便是采取敏捷开发模式,没有猜错的话,也正好是和案例3是同一家公司,我参与的是PC客户端研发团队,当时还将我们团队的敏捷实践作为学习案例贴在宣传栏上——男厕所坑位宣传栏:)。2016年到T厂,正好是某APP团队按feature term模式拆分之后,没机会见识一个超级大团队的混乱。
身在其中,有时并不懂得其中的幸福,刚毕业以为所有的软件研发团队都该是敏捷的,有story、有需求拉通PM\RD\QA评审、有jenkins...等等,后来到了公司的深圳研发中心,才见识到石器时代的开发模式,一时震惊。
越往后见识过不同的研发模式、不同的人,越觉得那些年在B厂待过的第一个团队,无论人员战斗力、研发模式、氛围,都是难得再见的。
好的研发模式,必须要有优秀的执行者,粗放的研发模式下待了三年多之后,见到T厂某BG终于重视研发效能,重视工程师素养培养,真实可喜,如今新入职的小同学们,是否能够意识到,你们正处在前所未有的幸福之中?
附录:一些比较新的名词:测试左移、质量内建。