前两周写了关于技术债务的文章,尽管实践中会堆积技术债,但这个概念并不在我们的工作中频繁出现。这篇文章就系统性讲讲技术债,让大家避免知其然,不知其所以然。
一、技术债是什么
技术负债(英语:Technical debt),又译技术债,也称为设计负债(design debt)、代码负债(code debt),是编程及软件工程中的借鉴了财务债务的系统隐喻。指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,从而在未来给自己带来的额外开发负担。这种技术上的选择,就像一笔债务一样,虽然眼前看起来可以得到好处,但必须在未来偿还。软件工程师必须付出额外的时间和精力持续修复之前的妥协所造成的问题及副作用,或是进行重构,把架构改善为最佳实现方式。
1992年,沃德·坎宁安首次将技术的复杂比作为负债。第一次发布代码,就好比借了一笔钱。只要通过不断重写来偿还债务,小额负债便可以加速开发。但久未偿还债务会引发危险。复用马马虎虎的代码,类似于负债的利息。整个部门有可能因为松散的实现,不完全的面向对象的设计或其他诸如此类的负债而陷入窘境。
二、技术债表现
技术债与其他债务本身一样,是一种透支行为,通过牺牲未来来满足当下的一些需求。也跟其他债务一样,技术债务也有利息,而且随着时间利滚利,会成为埋在项目里的定时炸弹。如果产品长期的可持续的发展,那么技术债的重要性是毋庸置疑的。
技术债务的本质是产品的结构阻碍了进步,表现出来的症状有:无法轻易重构产品以满足市场需求;组件之间的依赖性过多,体系结构不良;缺陷太多,结构不良;难以理解,难以改变。
技术债务的后果有偿还技术债务造成时间浪费,员工满意度降低带来士气低落,因解决遗留代码问题而错过优质项目造成人才流失,产品质量降低造成客户满意度下降,技术债务限制创新能力、扼杀创造性等诸多问题。
技术债不单单是技术债,它就像一个垃圾堆,久而久之不处理,慢慢周围就会产生更多的垃圾,因此产生的“破窗效应”更加是会对未来的项目环境造成很大的影响,大家也会逐渐丧失维护环境的信心。所以在讨论技术债的时候不仅仅是讨论技术债本身,技术债对团队追求质量的信心、对大家维护环境整洁的积极性都会造成很大的影响。
Martin Fowler把技术债分为四个象限,如下图所示:
软件测试技术交流群
亡羊补牢,为时未晚。从现在开始把偿还技术债务纳入backlog,把避免产生技债务作为工作准则,相信不会出现被技术债务压垮崩溃的情况。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!