重构是“必要的浪费”?

按照精益思想理解,很多人会认为所有不能给客户带来价值的活动都是浪费。过多的文档、过多的项目会议不能给客户带来价值,因此这些都是极大的浪费。但是如何来解释重构呢?重构不会给客户带来直接的价值,但是对于任何真正的敏捷实践者来说,重构都是不可或缺的。如何从传统的精益思想来解释重构这个活动呢?如果称之为“必要的”浪费,那如何去界定这个“必要”和“不必要”?

举一个类比,我们每天在家里做晚饭,做完之后都会去收拾一下,把桌子擦干净,把菜整理好,把冰箱收拾好,把剩下的材料分类放好。所有这些活动其实不能给我们做饭这个事情带来直接的价值,但是我们还是会每天都去做。为什么?

对于任何一个组织来说,组织的生存一定需要产生价值和减少浪费。也就是说提高投入产出比(ROI, Return on Investment)才是一个组织的生存之道。因此对组织来说他在乎的是投入和产出之间的比例。企业应该追求的是更大的ROI,因此我们在改进我们的工作和组织我们的生产的时候总有两个努力方向:

  • 让我们的产品更有价值
  • 让我们的开发成本更低

任何组织活动的目标都应该是以扩大ROI为宗旨的。这也就很容易解释为什么我要去收拾厨房,去做重构。我收拾厨房是为了我有更加有序、有条理的工作环境,我有更加愉悦的心情去做饭,从而保证我在第二天能够以更低的成本去做饭。重构也是同样的道理,在基本功能完成之后,我们花很多的功夫去把代码简单化、提高可读性、提高可维护性和健壮性,因此我们代码维护的成本就会更低。如果没有重构,我们可能需要去花几个小时去读一个有无数个分支和边界条件的函数,去猜想整个系统的逻辑流和数据流。这些都是成本,很大的隐含的成本,这其实都是我们的技术负债。这就是回到了那个磨刀还是砍柴的问题(Sharpen the Saw),磨刀不能直接带来价值,但是聪明的人从来都会保证自己的砍柴刀足够锋利。因此重构是一种降低成本的活动,他也会帮助组织获得更大的ROI,从这个角度讲重构不是浪费!

 

image

 

Share