深入理解技术债务:原理、成本、价值与应对策略
1. 技术债务的本金与利息
在软件开发中,我们可以借助金融债务的比喻,如房屋抵押贷款,用本金和利息来阐述技术债务的财务后果。与技术债务项相关的本金,与开发团队消除该债务所需付出的努力成正比。而因这项技术债务产生的利息,则是团队若将技术债务留在系统中,在后续开发中额外付出的努力。随着依赖相关开发工件的开发工作不断推进,本金和利息都会随时间增长,最终使得偿还债务的成本越来越高。
下面通过一个简单的例子来说明这些概念:
- 步骤 1:产生初始债务
你需要在系统及其底层软件栈中实现一个新功能——库存管理。此时有两种设计策略可供选择:
- 设计选项 U :基于 MEAN 栈(MongoDB、Explore.js、Angular.js、Node.js)的自制栈,这种方式快捷但扩展性欠佳,成本较低,假设为 6 人天。
- 设计选项 V :商业中间件产品,这是一种更好的设计,具有扩展性且设计优雅,但成本较高,为 10 人天。
由于进度压力,你在首次发布时选择了自制栈(设计选项 U)。这个自制栈没有“漏洞”,无论选择哪种方案,库存管理功能都能完美运行。
- 步骤 2:系统演进与面对债务
在第二次发布时,你想实现一个新功能——订单录入功能,该功能依赖于库存管理,因此也依赖于 U。我们将这个订单录入功能的实现称为 W。
在快速且粗糙的自制栈 U 上实现订单录入功能 W 的成本较高(W/U),比你一开始选择中间件产品选项 V 时的成本(W/V)要高。
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



