中兴通讯某分组产品敏捷转型实践

本产品从2014年开始正式推行敏捷转型,到2016年实现产品级敏捷,大概用了两年时间。本文是根据我在中兴通讯这两年的经验做的总结,见识比较肤浅,且大部分是靠回忆写下来的,免不了存在一些不一致的地方。

一、     敏捷转型方案

1     项目概况

       产品用途:中国移动IPTN承载网络传输设备

       项目团队:开发120+测试30

       产品需求数(Feature):约500

       用户故事数(Userstory):约3000

       新开发单板:10

       新增修改代码:约300W

       测试用例数:自动化7000+手工3000

       研发周期(立项到设计定型):约1

2     转型思路

       研发过程遵循公司HPPD研发过程框架,结合CMMI过程域,推广敏捷实践

       敏捷推进工作遵循从团队级敏捷向项目级敏捷、产品级敏捷演进的思路

      团队级敏捷

      定位于软件开发团队内部,团队7-15人,涉及软件开发与系统测试部

      敏捷实践范围局限在团队范围,团队间实践内容和能力水平差异性较大,团队间协同工作能力弱

      项目级敏捷

      定位于PDT内研发组工作,以研发项目为载体,涉及规划部、软件开发部、系统测试部、中试部等多个角色和团队

      敏捷实践的范围拓展到整个研发项目层面,适用于强项目组织的敏捷开发团队,弱化或取消了部门

      追求多角色、团队协同工作能力,以提升项目研发质量和效率为目的

      产品级敏捷

      定位于整个PDT团队和HPPD产品研发全流程

      敏捷实践范围涉及到PDT团队各个领域

      以市场需求驱动、高效内部成本和风险控制为主线、以客户价值实现为中心的产品研发过程

3     组织结构调整

中兴通讯某分组产品敏捷转型实践

       改变以前的矩阵式,每个团队都由SM+PO+Team组成,形成特性团队

       SM:从开发经理、测试经理、SE或其他业务骨干中产生

       PO:一般是熟悉业务的技术骨干,如SE

       Team:含开发(软件、逻辑、微码)、测试

4        SMPO的职责

       SM职责:

      引导各项Scrum活动

      与团队一起向PO承诺迭代的输出物

      跟踪迭代内的任务进展,带领团队按时完成迭代任务目标

      管理与其他团队的依赖,团队的外部协调、对外接口

      帮助团队移除工作中障碍

      和团队一起做绩效考核,听取团队的声音,尊重团队意见

      关注团队能力提升,包括团队成员的业务技能和软技能

       PO职责:

      维护Backlog,及时根据竞争对手、市场变化和客户反馈调整列表

      需求不明确时与产品级PO沟通

      从客户的使用场景中挖掘出对其最有价值的特性,并及时传达到团队

      负责回答团队关于测试场景的问题,让测试场景尽可能地与客户使用场景一致

      PO参加每日立会,回答业务问题,但不干预管理工作

      参加需求梳理会,负责回答团队关于澄清需求的问题,确定userstory验收标准

      参加计划会,和团队共同确定每个团队迭代输出的内容

      参加评审会,在团队内验收工作产品,最好请到真实用户来验收

      参加回顾会,搜集对产品方面的改进意见

5     敏捷框架

中兴通讯某分组产品敏捷转型实践

       团队级:系统方案完成到系统测试结束,主要是特性团队

       项目级:产品需求包确定到验证阶段结束,特性团队+测试团队

       产品级:整个产品开发周期(运营与维护阶段前),特性团队+测试团队+硬件组+中试组+生产组+电源+工艺结构

6     敏捷方案

中兴通讯某分组产品敏捷转型实践


       应用项目:所有软件、软硬件系统项目

       立项标准:

      明确关键需求

      明确发布迭代周期或版本发布里程碑

       项目组成:强项目组织的敏捷开发团队,弱化或取消了部门

       交付条件:团队级敏捷满足系统测试准出条件(成果鉴定),项目级敏捷满足验证测试准出条件(设计定型),产品级敏捷满足小批量生产验证准出(生产定型)

7     敏捷模型

中兴通讯某分组产品敏捷转型实践


       把产品的三个层级:产品级、项目级、团队级的活动整合在一起。

二、     敏捷转型实践

中兴通讯某分组产品敏捷转型实践


1     每日站会

       每天早上8:45准时开始,按迭代轮流组织

       团队轮流发言,站在看板前面,手上拿着故事卡讲

       SM收集需要在项目SOS站会上沟通的问题

中兴通讯某分组产品敏捷转型实践


2     SOS

       角色

      各特性团队SMQA、敏捷教练必须参加,PM视情况进行旁听和补充

       沟通内容

      上次会议结束到现在,我们组做了什么?

      这次会议以后,我们组主要任务是什么?

      我们遇到了什么困难,期望什么样的协助?

      我们需要跨组解决的问题有哪些?

       输出

      待解决的问题列表和当前状态更新

      好的建议和方法记录

       不做什么

      不在会上具体解决问题

      无法快速定位的问题,确定跟进人和参与者,会后专题讨论,项目增加一张故事卡跟踪

      复杂的技术和业务相关问题,提交给项目组,统一安排架构组讨论解决

       其他

      每人1分钟,总时间控制在20-30分钟

      鼓励组间协作,鼓励跨组沟通

3     需求澄清/梳理会

中兴通讯某分组产品敏捷转型实践


       需求是可以分层次的,就像计划可以分层次一样

       Epic/Feature/User Story是用于区分需求颗粒度的标签

       项目级PO与团队级PO一起分析Feature

       一起确定Feature的优先级、工作量、责任团队、验收准则

       项目级PO确定下一迭代的Backlog

       团队POFeature拆分成US

4     迭代计划会

       PO在会前将Feature拆分US,确定验收准则

       PO讲解US,团队估算US工作量

       团队认领US,并拆分出Task

       PO确定迭代内完成的Spring Backlog

中兴通讯某分组产品敏捷转型实践


5     迭代回顾会

       原则:

      每个人对自己的工作都已全力以赴,都充分考虑了当前的情况,施展了自己的技能,调用了可调用的资源。

聚焦

散焦

探索

而不是辩护

对话

而不是争论

交流

而不是争吵

理解

而不是防备

       议程:

      PO验收团队任务

      PO与团队一起验收SprintBacklog中的US,验收通过的关闭US

      未完成的移出本迭代,并判断在后续哪个迭代完成,阻塞问题移到阻塞区

      团队回顾总结

      团队成员在便签纸上列出本迭代做的好的、需要改进的问题

      SM将问题分类

      团队成员投票表决出三个需要保持的,三个需要改进的

      团队讨论出三个需要改进的问题的改进措施

6     持续集成

       入库前的走查

      入库前,先完成静态工具检查,通过后由结对走查人走查代码,走查通过后才合入代码。

      代码合入日志严格按照模板填写:特性编号、影响分析、建议测试方法、修改人、走查人等信息。

       每日架构组审查

      架构组制定代码走查统一模板

      每日17:00-17:30,架构师抽查业务组当天提交的代码,发现违反规则的提出整改意见,并录入到相关业务组的Sprint Backlog

      架构组每月月底对各架构师代码审查发现的问题进行分析汇总,对项目发布月度报告。

       CI持续集成:

      每天晚上12点触发PclintKlockwork、行覆盖率、复杂度等检测工具、全量构建、自动化冒烟测试,早上7点自动推送结果,空余时间运行全量自动化测试

中兴通讯某分组产品敏捷转型实践

7     分层测试

       测试分层

      Story层,开发自测

      Feature层,业务组负责自测、联调,专业测试组负责系统测试

      Epic层,专业测试组负责(方案测试)

       测试策略制定

      版本整体测试策略由版本经理和测试经理一起制定,包括版本计划、测试时间、测试规划,SM下发测试任务

       新功能测试用例

      开发自测用例、联调用例由PO牵头,输出场景,测试工程师编写用例,邀请规划SE参与评审

      系统测试用例,由专业测试组牵头,邀请PO\工程\规划\TSE参与讨论工程场景和用例制定

       测试流程

      开发自测(自动化+手工)>联调测试>自动化冒烟测试>专业组系统测试(自动化+手工)>中试部验证》

中兴通讯某分组产品敏捷转型实践


8     DOD

       DOD:完成的定义,基于“随时可向用户发布”的目标,制定的衡量团队工作是否已经完成的定义,由团队和PO协商并达成一致。

       DOD的好处:

      共同协商的完成定义,是团队的自我承诺

      清晰和明确的完成定义保证每次迭代是高质量的

      DOD的关键点:

      团队自协商

      基于交付对象

      不断改进

       DOD分类:

      每个环节都可以定义一个DOD,比如:需求DOD、开发DODCI DOD、测试DOD、计划会DOD……

中兴通讯某分组产品敏捷转型实践


9     度量

       度你所做,为优而量!每个活动都可以定义相应的度量指标

中兴通讯某分组产品敏捷转型实践


       尽量自动化度量,并实时展示

 中兴通讯某分组产品敏捷转型实践

10  COP

       COP 实践社区

中兴通讯某分组产品敏捷转型实践


      COP的工作协议由COP成员讨论得出

      COP的运作要透明化,工作协议、活动纪要、产出物等要及时公布

      COP倡导以面对面沟通为主,其他沟通方式为辅

      COP通过成员的定期回顾不断的完善其运作机制

       COP的角色

      组长:对应COP的负责人,负责推动社区的发展和进步

      专家:COP内获得大家认可的 COP不是被组织任命,而是被大家推举的,成为COP专家一是靠自身的技术影响力,二靠对COP的贡献

      参与者:对相应技术领域感兴趣的同事

       COP的运作方式

      COP活动在固定时间举行,活动前,参与者把打算讨论的议题和建议发给COP组长,或者组长主动收集

      COP组可以创建活动日历,向全员公开

      员工在COP的贡献积累为“贡献点数”,在绩效考核时参考

中兴通讯某分组产品敏捷转型实践