转 管理技术债
技术债被广泛视为一件坏事,它应该避免或者要尽快进行偿付。 你应该这样做吗?我们并不这么认为。首先,我们对比了技术债与财务债,阐述了它与战略设计(Strategic Design)的相似性以及它的利益相关者。然后,我们列出了识别代码中技术债的各种可行的方式,这可能是你所关心的。 最后,我们描述了项目中可以偿还技术债的不同方式,并且阐述了当你在决定要偿还债务、转移债务或者只是支付利息哪个方案更好时,必须要考虑的因素。 什么是技术债 开发人员在实现新特性的时候,有两种不同的方式:一种是快速且混乱地完成,这会使得将来的变化很困难。另一种是整洁(clean)和明智的方案,它需要更长的时间来实现但是将来的变化会更为容易(亦可参见 Martin Fowler )。不过,如果同一个特性以较为凌乱的方式实现时,能够具有相同的功能和较低的成本,那么项目的赞助者为什么会接受一个较高成本的整洁实现呢?他们为什么会花费金钱在自动化测试覆盖率上呢?测试不是什么特性,因此不会交付业务价值! 如果凌乱的代码和没有测试的代码能够交付期望的业务价值,对于客户来说也会运行得很好,但是这将会导致难以控制的代码基、极其专门化的开发人员并最终形成缺乏灵活性的软件产品。大量的混乱代码有可能会使得整个工程部门 停滞(stand-still) 。 “技术债”的比喻说法——与“财务债”的相似和不同 1992年