湖水与岩石

乔梁 | 2021-01-18

湖水与岩石效应,是《精益产品开发》一书中的提到的一个隐喻

当一个湖中有很多水时,水面很高,湖中的石块都被水所覆盖。
此时,即使湖底有很大的暗礁,人们也看不到。

但是,当水面降低时,有一些大石块就会暴露出来。

随着不断降低水平面,中等石块和小石块也逐步被人们发现。

湖水岩石效应

在《精益产品开发》第 12 章,控制在制品数量(下),开篇就讲了这个隐喻。

湖水水位相当于在制品的数量,岩石相当于组织内部的问题。

如何应用这个隐喻

《持续交付2.0》提倡通过不断优化与改善,让验证环周期尽可能短。

当组织运作一段时间后,验证环中的所有活动就趋于达到一种平衡,而且很多组织并不想打破这个平衡。因为,在这个平衡中,所有协作部门都达到了一种默契。

这些活动中,有一部分是增值活动,剩余的活动就是非增值活动,如下图所示。

缩短迭代周期,会发生什么?

当我们保持某个固定迭代周期一段时间以后,通常不断优化,我们针对将非增值活动(也就是下图中的固定成本)压缩到一定的水平。

当我们缩短固定迭代周期(如从两周迭代变成一周迭代)时,由于工作方法与协作流程通常没有发生变化,所以其固定成本所占比例会上升。此时,其直观感觉是:现在两个迭代的产出不如原来一个迭代的产出。

的确是这样的,因为固定开销太高。使用“湖水岩石”的隐喻,迭代周期就是湖面,固定成本就是岩石。当缩短迭代周期(降低湖面)时,固定成本(岩石)就显得高出来了。也就是下图中,后面小环的固定成本所占比例与第一个大环的固定成本所占比例是差不多的。

此时,如何改变呢?

必须继续想办法,降低小环上的固定成本。才能再次达到下一级的平衡。

Bug 的分派与修复时间

当我们有比较长的迭代周期时,团队通常会将缺陷堆积到迭代的后期再做修复。那么,整个迭代周期就是缺陷的湖面。

在某个团队中,对于缺陷,我们强化了“当日事,当日毕”的原则。希望,当天发现的缺陷在当天就能被修复和验证。

有人说:“当日事,当日毕”是一种追求速度的牵引,本身就不利于研发质量。

我认为:这种说法是错误的,这是对自己团队实力没有正确的认识,才得出的结论。因为,当我们说“当日事,当日毕”的时候,应该是在质量达标的前提下做出的承诺。

任何的承诺都是在预期质量的前提下做出的。而很多声称所谓的“快速交付”(也有人自己称为“敏捷交付”)的开发团队,其实际上是把手中的活儿“毛糙地做完”,赶快交给下一个环节。并且心想“反正我在要求的日期里把东西交出去了”。

这实际上就将缺陷的湖面降低到了“一天”。当然,最开始时,团队很难做到。其中有几个原因,都可以找到方法解决。

  1. 缺陷多,当天修复不完。这也同时说明:前期工作质量差,应该在前期投入更多的精力,确保产生的缺陷少。
  2. 缺陷定位的时间长。这通常是由于测试环境难以构建,场景难以复现,日志不全等原因。那么,我们就需要找到一些方法,解决这些问题。
  3. 缺陷验证的时间长。原因可能与定位问题差不多。但还有一个原因是:修复了当前的缺陷,是否引入了其它方面的问题。我们也需要找到方法来解决这个问题,比如自动化测试。