推荐序一
管理学大师彼得·德鲁克曾经说过“你如果无法度量它,就无法管理它”(“It you cant measure it, you cant manage it”)。要想有效管理,就难以绕开度量的问题。
可实际上人们总是倾向于关注容易度量的元素,而忽略难以度量的元素。容易度量的不一定是重要的,难以度量的反而可能是重要的。
软件开发的过程中就是这样。
Martin Fowler曾经说过,软件行业至今还没有找到一个可以有效度量软件开发生产效率(Productivity)的方法。想要度量生产效率,首先需要有可以量化的产出物。而软件的产出物是什么呢?人们最直观的结论是一行行的代码。可实际上代码行数的多少并不代表价值的多少,甚至代码产生的功能都不一定是。这些功能运行起来产生的业务价值才是真正的产出,而这又是难以度量的。Standish Group Study的一份报告就指出:45%的代码在运营当中是从来不会被使用到的。最简单直接地对代码行数进行度量实际上是舍本逐末。
度量也是一把双刃剑。度量具有极强的引导性。它会激励你重视并改善能够度量的元素,但也可能使你忽视无法度量的元素并使之恶化。
我曾经在有些软件开发的组织里看到过用代码行数的度量来考核开发人员。结果是产生了很多副作用,大量的复制,不舍理的设计,产生了大量冗佘的代码,不但难以理解和维护,甚至没有在实际运行中运营起来。这在造成大量浪费的同时,也造成了软件质量的严重恶化。
软件开发方法,尤其是敏捷开发方法,正在越来越多地借鉴精益生产中的管理理念,其中主要的核心就是持续改进。要想持续改进,除了对改进方向的经验性认识以外,可以量化的改进目标也是一个无法回避的环节。在大规模实施精益管理的过程中,如何找到舍理的度量,并舍理利用这些度量,始终是一个难题。
国內外的很多企业在实施敏捷精益软件开发方法的过程中,在不同的情况下使用了不同的方法尝试解决这个难题,也产生了很多有效的和创造性的解决方案。可惜的是,很多优秀的想法只是在很小的范围內产生了影响,并没有被提炼出来,并广为人知。
很高兴终于看到本书能够提炼汇总这些实践,形成一个比较完整的精益度量体系。
张松有着国內外软件行业的从业背景,十几年来一直沉浸在敏捷精益实施的第一线,参与了众多大小企业的转型实践,作为许多CIO和CTO的专家顾问,在这个领域积累了大量实战经验。我想不出有更舍适的人来写这本书了!
感谢张松在忙碌的工作中抽出时间来完成这项工作,相信所有读到这本书的人都能从精益度量体系和这些实践案例中有所借鉴。
ThoughtWorks大中国区董事总经理 郭晓