我们进行软件研发的目标是什么?书中关于目标的思考也引发了我很多的思考,是的,我们研发的目标是什么?更快的研发效率?更高的质量?更炫的功能?更多的功能?更好的能力提升?公司养活了这么多的研发人员,目标就这上面的这些吗?那么我们的目标是什么呢?
我能得到的答案就是赚钱,利润,不管用什么去表达,最终公司的目标都离不开这一点,没有资金的公司最终是无法存活下去的,不管是伟大的苹果还是谷歌,利润考核永远都无法逃脱得掉。《目标》这本书给出了三个衡量指标:有效产出(throughput)、存货(inventory)和营运费用(operational expense)。
有效产出:整个系统透过销售而获得金钱的速度。存货:是整个系统投资在采购上的金钱,而采购的是我们打算卖出去的东西。营运费用:是系统为了把存货转为有效产出而花的钱。
有效产出是通过销售而获得金钱的速度,那么换成我们的软件产品而言,也就是产品的畅销程度,交付速度等。对于我们而言就需要快速的研发出市场所需要的产品,并且可以快速交付拿回费用。一切的目标都是要提高有效产出,那么阻碍有效产出的,或者与有效产出无关的,实际上都是需要调整的。如果按照这个定义的话很多都可以定义为无效产出,比如客户不需要的功能、不需要的产品、错过最佳销售期的产品、交付复杂等等,当然制造件和软件还是有些区别,那就是每个制造件都是需要时间和成本,但是软件一旦制造出来,剩下的成本就基本为零了。但是软件需要更新版本,所以每个软件的版本都是可以看成一个制造件,如果这样对比的话,两者还是有很多的共通之处。
存货是整个系统投资在采购上的金钱,换成软件研发而言,需求过程,研发过程,测试过程,上市等等过程都是存货,存货的成本越高,利润就会越薄,如何减少存货就是一个关键的指标。各种周期的缩短,减少在制品的数量,让产品更快的销售出去都是要考虑的内容。另外减少存货的另一种办法就是不生成存货,也就是不需要的存货要减少,不需要的功能,不需要的产品,逐渐淘汰的产品等等也都是需要考虑的范围。
营运费用是系统为了把存货转为有效产出而花的钱,转换到我们软件研发上而言实施,营销,售前,广告等等一系列的动作,这些都是成本所在的地方,当然这部分都需要进行思考如何更加有效和合理。
提到上面三点指标的同时,也提到了另外的一个概念“局部效益”,要放眼于整体架构和组织,而不能只考虑局部的效益,这点我认为也是上面三点所贯穿的点睛之笔,或者上面三点的融会贯通的切入点。如果不处于整体架构的考虑的话,局部效益会导致整体效益的下降。例如研发部门考虑工作效率而言,只注重发版产品数量,而不考虑是否符合市场要求,造成的结果就是大量无法销售的产品。规划部门只考虑规划指标,那么会制造出大量的需求规划,研发因为能力问题而未能实现,被束之高阁。这些都是成本上的浪费,如果把这些成本转化为其他的有效产出将会产生更大的利益。研发人员把空余出的时间去支持项目交付,规划部门的空余时间支持售前都将产生不同的效果。
从敏捷的角度而言,有效产出减少存货也是敏捷的核心思想,每次只去研发最紧急重要的功能,随时可以交付。另外DevOps也是敏捷倡导的思想,开发(软件工程)、技术运营和质量保障(QA)一体化进行解决,而不是单独部门考量。