预计利息

2008年12月10日

技术债务 是一个非常有用的概念,但它提出了一个问题:如何衡量它?遗憾的是,技术债务不像金融债务,因此很难判断你欠了多少(尽管我们似乎最近在衡量金融债务方面遇到了一些麻烦)。

这里有一个想法可以考虑。当团队完成一项功能时,请他们告诉您他们花了多长时间(实际工作量)以及他们认为如果系统干净的话需要多长时间。两者之间的差异就是技术债务的利息。(因此,如果他们实际花了 5 天,但他们认为如果系统干净的话只需要 3 天,那么你为你的技术债务支付了 2 天的利息。)

这种方法当然存在一些严重的缺陷。关于在干净系统上需要多长时间的陈述是基于一个想象状态的估计——因此很难客观地做出。收集这些信息需要付出努力,这很容易失控。但结果可能有助于以非技术人员可见的方式描绘代码库的状态。

此外,它还有助于决定是否偿还本金。一些团队喜欢将技术债务故事添加到他们的产品积压中——并估计消除这些故事需要多长时间。这些技术债务故事也是估计,但也提供了技术债务积累了多少的图景。你可以通过将估计的利息支付分配给这些债务故事来变得更聪明一些(我因为 flipper 模块的状态不好而在这项功能上多花了一天)。将利息支付与本金进行比较可能有助于决定是否偿还本金。

我最近遇到一个人,他尝试了一些类似的东西,发现它很方便,但我没有遇到过很多。当然,这样做存在缺陷——但可能值得尝试几个迭代。

更新:最近的一次讨论提出了另一种捕获估计利息的方法。在回顾中(明智的团队会在每次迭代结束时进行),捕获针对系统每个问题区域支付的利息估计。针对最近完成的工作进行此估计可能比针对未来故事进行前瞻性估计更容易。