程序员的技术负债怎么还?( 三 )

这种用支付利息代替支付本金的方式,可以帮助我们决定优先解决哪个负债。假设有一个非常可怕的代码库,修改这个代码库简直就是一个噩梦,如果我没有必要动这个代码库,那就不是个问题。只有当我用到这部分软件时,才需要支付利息(这是这个比喻与金融上的负债不同的地方,因为金融的利息支付是由时间决定的)。因此,我们可以不必理会那些稳定的负债。相比之下,活跃度非常高的区域需要非常及时地修改,我们应该采取零容忍的态度,因为这部分债务的利息非常高。这一点非常重要,因为开发人员往往只知道一味地更改代码,却不关注内部质量的时候,这些负债将不可避免地积累起来——代码变更越多,风险就越大。

有时,这种债务的比喻也可以判断是否应该忽略内部质量。关键在于我们需要付出时间和精力才能阻止负债的积累。如果有些新功能非常迫切,那么也许我们不得不继续背负债务,只有等到将来再来处理这笔负债。

然而,大多数时候我们的这种分析做得都不好。另一方面,技术负债的影响非常快,会迅速拖慢新功能开发的速度。不断积累负债的团队最终都会被自己的债务搞得一塌糊涂,大幅延迟交付,所以还不如趁早努力提高内部的质量。这个比喻往往会让人误解,因为这种发展趋势与金融贷款并不完全相同。

推荐阅读