1.4.3缩短反馈弧的成本和投入产出比
要缩短反馈弧,就要建设持续集成。虽然持续集成的确需要投入成本,但是很多人只看到了建设持续集成的投入,没有看到回报:这个做好了,能节省多少时间。在缩短反馈弧上投入的成本是能从其他地方收回来的。
对每个项目来说,如果每个联调(集成)用例和校验都有自动化的投入,在项目进行的过程中就会收到回报。比如,人工做一次校验可能要15分钟,而校验自动化需要2小时(包括自动化及后面的维护),只要整个项目过程中校验超过8次,自动化就是划算的。事实上,在一个项目里面的校验何止做8次。现在,校验在一个项目里面往往只做几次,是因为校验非常累。但如果实现自动化了,校验就可以执行很多次,因为我们希望能随时随地得到反馈。
另外,随时随地做校验、随时随地得到反馈,还有一个很大的好处,就是能让排查问题变得很方便。20世纪90年代,程序员在TurboC2.0里面写代码,习惯每写几分钟就编译一下,因为当时的IDE没有错误提示,代码量越大,排查问题的难度越大(虽然编译错误会指出哪行错了,但是问题的根源未必在报错的那一行)。
不能孤立地看待投入在建设持续集成上的成本。如果只从单个开发人员的视角看,那么也许在某些情况下,用原来的方式对个人更方便。但在很多情况下,个体受益,往往会导致群体受损,进而导致每个个体都受损。相反,个体做一些小的付出,会导致整个群体受益,也就是让每个个体都受益。
这样的例子在生活中也有很多。如果每个人开车都不遵守秩序,都乱变道、乱加塞,那么整体的道路秩序就会很混乱,最终导致整条路上的车速都降了下来。