技术债务–您何时必须还清债务?

有2次考虑技术债务:
  1. 当您构建系统并在“可以在将来的某个时候”和现在需要做什么之间做出权衡决策时
  2. “将来的某个时候”,当必须处理这些决定时,当您需要还清债务时。

现在“将来的某个时候”会发生什么? 多少债务太重了? 如果需要,您什么时候需要付款?

多少债务太多了?

每个系统都有一些债务。 总有一些代码不够清晰。 方法和类太大。 过期的第三方库。 为解决已消失的问题而进行的更改。 您后悔做出的设计和技术选择,如果有机会的话,它们会做的不同。

但是,这真的减慢了团队多少速度? 这真的要花多少钱? 您可以通过查看代码库来衡量技术债务是否随着时间而增加。 代码复杂度是一个因素。 看看引入回归的机会, 复杂度和维护代码的难度之间存在简单的关系:

复杂 错误修复的几率
1-10 5%
20-30 20%
> 50 40%
100 60%

仅凭复杂性还不够。 一些代码本质上是复杂的,或偶然地复杂,但是不需要更改,因此不会增加开发的实际成本。 诸如Sonar之类的工具会研究复杂性以及其他变量来评估代码库的技术风险:

修复重复项的成本+修复违反样式的成本+评论公共API的成本+修复未发现的复杂性的成本(自动化代码覆盖率不到80%的复杂代码)+使复杂度低于阈值的成本(拆分方法和类)

这使您对技术债务成本有了一些了解,可以随时间跟踪或在系统之间进行比较,但是什么时候必须修复技术债务? 你什么时候越界?

确定是否需要还清债务取决于两个因素:

  1. 安全/风险。 代码太难更改还是太危险? 它有太多错误吗? Capers Jones表示,每个系统,特别是大型系统,都有少量的例程会集中错误 (20%的代码包含80%的问题),清理或重写此代码是您最重要的事情确实可以提高可靠性并减少长期运行系统的成本。
  2. 成本–真实的证据表明,随着时间的推移进行更改会变得越来越昂贵,因为您承担了太多的债务。 是因为代码太难理解,还是因为代码太难修改,或者太难测试而进行更改或修复错误?

虽然显然对于某些团队来说,很明显,如果您放慢速度,这一定是由于技术债务造成的,但我认为这不是那么简单。

随着系统的变大和老化,有很多原因导致团队随着时间的流逝而放慢速度,这与技术债务无关。 随着系统变得越来越大,更多的客户以更多的方式使用更多的功能和自定义功能,代码将需要更长的时间来理解,更改将需要更长的时间进行测试,您将拥有更多的操作依赖性,更多的担忧和更多的事情可能会打破,对您可以做什么和可能承担的风险施加更多限制。 所有这些都使您减速。

您怎么知道是技术风险使您放慢脚步?

当人们不得不花太多时间调试和修复事物时,特别是在系统的同一部分中修复事物,或者在系统的不同部分中修复相同事物时,团队就会放慢速度。 当您看到相同的错误或相同的错误反复发生时,您就知道自己有债务问题。 当您开始发现生产中出现更多问题时,尤其是由回归或手动错误引起的问题时,您就知道自己背负着沉重的债务。 当您看到维护和支持成本在上升–当每个人花在升级,错误修复和调整上的时间比添加新功能上花费的时间多时,您的工作就圈了。

偿还技术债务的80:20规则

随着时间的流逝,债务逐渐增加,直到达到临界点。 没有仔细的注意,所有代码都会随着时间的流逝而恶化,但是您遇到的任何问题在某些地方都会变得比其他地方更糟。 在偿还债务时,您最关心的是热点:

  • 代码复杂且
  • 代码变化很大,
  • 难以测试的代码
  • 具有错误和问题历史的代码。

您可以通过检查签入历史记录, 挖掘版本控制系统Michael Feathers在此上所做的工作确实很酷)和错误数据库,通过静态分析检查以及与开发人员和测试人员交谈来确定这些问题区域。

这是您必须关注的代码。 在这里,您可以通过偿还技术债务来获得最佳的投资回报。 其他一切都保持良好的卫生习惯–不会受伤,但也不会赢得比赛。 如果您要偿还技术债务,请明智地偿还。

参考: 技术债务–您何时必须还清债务? 来自JCG合作伙伴 Jim Bird在Building Real Software博客上的介绍。


翻译自: https://www.javacodegeeks.com/2012/09/technical-debt-when-do-you-have-to-pay.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值