现在企业对质量要求越来越高,又要求能快速迭代,作为研发团队,我们如何进行软件研发度量体系建设?
我们先谈谈度量的意义,主要体现3个方面
1)让目标更明确,比如让大家在项目开始时、研发过程中、项目结束后,对目标有共同的认识。
2)让现状更清晰,度量可以告诉我们现状如何、效率如何、质量如何、流程如何以及问题所在。
3)让改进更精准。
研发度量体系
整体的研发度量体系可以从三个维度来考量:即价值、效率、质量。
一 价值
价值指的是我们要做正确的事情,而不是有效率的做一些错误的事情。从价值的出发点,我们可以思考三个问题:
1)怎样度量我们的团队正在做正确的事?
2)我们既然明确了正确事情,我们怎样以最高效率交付它?
3)我们既然做了正确的事情,又很有效率,那交付是否符合我们的预期,符合用户的预期呢?
可能每个公司都有自己的价值指标体系,但是整体可以分成两大类,就是商业价值和技术价值,每一类又可以细分为可度量价值和不可度量价值。
商业价值的可度量价值包括 钱、订单量、dau、客户转化率等,不可度量价值包括公司在业界影响力、美誉度等
技术价值的可度量价值包括qps、可用性、响应时间、故障恢复时间等;不可度量价值包括技术竞争力等。
假设我们做一个产品,开始立项时定了一堆目标,比如dau增长目标、订单量目标、技术目标等,然后进入功能设计阶段,为这个产品设计了n个功能,接着就进入到功能x的研发流程阶段 包括评估与设计、开发与测试、发布上线、反馈与复盘等。
在流程实践上的创新之处在于,我们把项目目标和需求目标相关联,将项目目标作为需求设计的目标之一,从实际结果看这个
需求为整个项目目标分担了多少指标,比如做完这个需求,我们可以增长多少的订单量等。其中反馈和复盘特别重要,在需求上线之后,可能一周或一个月,我们就需要进行复盘,来判断它到底有没有达到预期。把项目流程分为3个阶段,事前计划、定期跟踪、事后复盘。带来的好处有哪些呢?1)我们所有的需求都是从价值出发,项目的所有参与人都明确目标,能够提升成就感2)拆解高价值需求,更早交付,提升roi 3)把控需求质量,降低部门浪费。
二效率
当我们确定价值以后,就需要考虑如何有效率的交付这些价值,大部分企业经常采用典型的技术研发流程,包括需求评估、需求设计、待开发、开发、联调、待测试、测试、发布等环节。那我们如何来衡量效率呢?有2个核心指标:一是吞吐率二是交付周期。我们先看吞吐率,吞吐率就是在单位时间内,团队能够交付多少产出。对于产出的衡量,大家也是各有各的看法,有些团队以需求个数或者故事点数来衡量,有些团队以价值来衡量,比如这个团队在一季度内为公司增收的盈利等。交付周期,就是一个需求从提出到上线所用的时长,可能有版本交付周期、需求交付周期、故障修复周期等。我们一般采用 累计流量图(横轴是时间,纵轴是需求个数) 和价值流程图(需求卡在每个阶段的平均时间)。
从效率角度来看研发度量体系,可以收获3点:第一识别团队瓶颈,优化短板,减少资源浪费;第二、缩短 交付周期,提升吞吐率,提升市场反应速度 ;第三:对团队产能预估更准确,提高团队工作幸福度。