软件质量保证业内提到的各种过程改进的模型、方法众多,根据我们在淘宝研发团队里的经验,从解决问题、保证产品质量的角度出发,针对不同团队的现状实施适宜的改进策略尤为重要,特别是在业务迅速发展、组织架构变动频繁的情况下,各部门的改进规划要既有长期的目标,也要尽可能看到短期的效果/评价。
解决问题的出发点:
●产品质量。
●团队效率。
●人员意识和能力。
我们对各种不同研发团队进行观察,发现虽然业务特点不同、团队管理风格不同,但是在相同的研发过程下,各个角色的关注重点/协作上的问题,存在一定的相似性,举例如下。
产品经理:
●开发资源的使用,项目/日常需求进度是否透明。
●开发是否能按计划完成项目。
●开发完成的功能是否符合预期。
●开发的版本质量是否令人满意。
开发:
●产品经理对商业远景和项目目标是否有很好的把控。
●产品经理对运营需求是否很好的疏通、整理、归纳。
●产品经理对项目效果是否有及时的分享和反馈。
●技术驱动项目是否能获得产品经理的支持。
●开发是否疲于响应运营抛出来的查问题的要求。
●打包发布过程是否顺畅高效。
测试:
●测试资源被浪费的现象是否明显(约定的提测时间不能提测、测到错误的版本、反复预发测试等)。
●WonfixBUG是否有计划地安排到开发计划里。
●是否存在未经测试就上线的行为。
SCM、安全、PE:
●对于安全漏洞开发同学是否能及时修复并推进上线。
●QA是否及时进行发布前后的确认。
●发布计划延期和变更是否频繁。
●上线手册是否正确和考虑周到。
综合各个角色对协作方的要求,我们能够明晰出各个角色的职责,通过建立研发流程、流程推行和培训、改进效果评价、持续改进的各项活动,让这些角色充分发挥作用。例如,我们在量子统计团队建立的项目管理流程就如下图所示。
流程出发点为解决问题、提高整体交付的质量、效率和人员平均能力,力求简洁清晰,避免形式教条。对于必须遵守的原则,我们也会明确要求,例如:
● 晨会—— 必须准时到,开发前期、测试阶段产品经理必须参加。
● 技术设计文档—— 必须覆盖需求文档中需要开发的所有技术点,对于数据指标计算和计算流程需要双人Review。
● 任务分解记录—— 建议任务的分解要低于一个人日,分解的人时必须是该工作的最终开发人员认可的,要选择一个好的形式:Scrum的任务墙是一个好方式,每天一定要更新。
● 进度图—— 是一个很好的仪式工具,大家一定要用。
● 上线计划和手册、技术运维手册—— 所有的项目必须要有这两个手册。
● 总结—— 是项目的一部分,利于每个参与人的成长。
● 文档融入代码—— 对于函数的功能说明,模块的功能说明,请加入到代码中,以后我们会进行自动的考核。
这里在研发部门整体层面上,我们通过制定产品月度计划流程(解决立项和项目资源分配)、项目经理指南、运维流程、安全规范、配置管理规范等流程,为研发团队铺垫好整体环境。研发团队通过月度计划,确定当月需求列表,从而快速进入开发阶段,借鉴部分敏捷实践,比如Scrum、XP等,不断尝试适合自己团队情况的方法。