我们在平时老是说要消除技术债,那么这句话就有两个问题:
1)啥叫技术债
2)是不是一定要消除
先谈第一个问题什么是技术债。技术债首先是一个债务,就像我们财务债务一样,是向某个“对象”的借债。我们看看债务的定义:
“债务是指债权人向债务人提供资金,以获得利息及债务人承诺在未来某一约定日期偿还这些资金和利息。债户还债的义务,有时也指所欠的债为了清偿所有的债务而工作”。
从这个概念我们可以了解到,债务是有益处的,因为可以让我们在短期内获取到额外的资源,有利于集中资源加快产品的上市,所以这一定是一种有意识的决策。但是债务必须要偿还,还要还本付息。
所以技术债一定是一个清醒的决策,是我们意识到我们有借债的意识的一种行为,比如产品是否清醒的决定要做更晚一些的重构,或者做一些折中的设计,或者减少一些非关键部分的构建。
打个比方,产品要11月份推向市场,时间只有一个月了,有一个非常重要的功能,之前讨论过完美方案,但是开发期限要3个月,那么只能粗暴的采用一个折中的方案,但是未来影响产品的可用性和可扩展性。为了推出产品,领导决定不能失去市场机会,采用了折中方案,于是产生了借债行为。但是这个债务一定要还的,不然后续产品扩展就成了问题,甚至严重影响客户体验。
我们过去常常把bugs当做技术债,但这个概念是错误的,bugs不是技术债,它们只是bad code!有些设计方案的“bugs”,才是技术债。
总结一下,我们不妨把我们的设计分为不好--刚够好--完美,技术债在某种意义上可以认为是在刚够好和完美之间的gap。
再谈第二个问题,技术债要不要消除。我们知道,金融上的借债是一定要还的,“好借好还再借不难”,不然影响到你的信用,后面要归还是要有庞大的利息的。
其实技术债也一样,如果技术债不还。那么将会导致可用性和可扩展性问题。我们知道问题越早解决越好,不然后续归还的成本也会日积月累越来越高!
以上面例子为例,如果一直采用折中方案,那么后续产品扩展性和可用性将会有严重问题。是一定要还的。不然后续产品的演进将是严重的问题。
就像是没有架构的堆代码,最终代码堆是一定会坍塌的。
债务可以不立即还,但是必须要计划还的,而且在影响信用之前。
基于马丁阿尔伯特先生的讲座后,扩展资料整理所得。