
您是否听说过软件开发团队不必面对技术债务?
我也没有 此外:
工程师将大约三分之一的时间花在技术债务上,这降低了团队的士气,并使公司每年损失约850亿美元。
研究条纹
想一想。 这是850 亿美元。
开发人员花费在技术债务上的时间占总时间的三分之一。 这使开发人员感到恐惧。 实际上,这是他们工作中最糟糕的部分-而其他业务部门往往对他们不情愿的事实加剧了这种情况。 没有人应该责怪,但是技术债务被普遍低估了。 因此,软件公司逐渐变得僵硬,直到失去增长的能力为止,这不需要花费数月和数年的时间从头开始重写其应用程序……而如今在市场上的这段时间是永恒的。
技术债务是司空见惯的现象,对吗? 我们开始编写代码,技术债务不断增加,而且繁荣起来,突然变得太多了。 我们的代码库陷入其中,我们陷入技术破产。 因此,我们正在与他战斗。 我们忍受着痛苦的需要,并偿还了部分债务。 有时我们设法做到,有时却没有。 这是软件开发的本质。 因此,我们已安排好一切。
但是应该这样吗? 是否有任何软件开发的基本法则对此负责? 而且,如果是这样,我们可以为了自己的利益而使用这些法律吗? 技术债务很常见,但不应该是技术破产。
让我们转向科学的各个领域以获取一些提示,因为热力学定律可以为我们提供理解为什么不可避免发生技术债务的关键思想。
宏观趋势使技术债务不可避免
热力学第一定律
又称能量守恒定律 ; 声称:
封闭系统的总能量保持恒定; 他们说它会随着时间的流逝而持续。
换句话说,不能创建或销毁能量,但是它可以从一种形式转移到另一种形式。
如果没有不必要的困难,让我们将代码库视为一个封闭的系统 。 我们舍弃了外部依赖关系以及代码库之外的所有内容。 在这种情况下,开发人员的数量保持不变,功能的开发速度始终如一-在我们的代码库中,熵的数量( 系统中无序性和随机性的度量 )保持不变。
我们的开发人员无法在一夜之间成为超人,因此如果他们已经尽力了,我们就无法提高其效率。 但是我们可以雇用更多的开发人员,这会增加系统的能量。 这就是布鲁克斯法则正确的原因:“如果一个项目没有按时完成,那么增加劳动力将使延迟甚至更多” –因为在一个已经很混乱的系统中,它会增加精力或混乱。
快速发展的软件公司一直在努力使用这种功能。 他们筹集了一轮投资,使开发团队的规模达到劳动力市场允许的两倍,然后,他们不得不应对代码库中“精力”的巨大飞跃。 如果不采取紧急对策,这通常会超出公司的能力,并可能导致技术债务急剧增加。
但请稍等。 为什么这会导致技术债务增加?
热力学第二定律
封闭系统中的杂物不能减少; 它只能保持不变或增加。
实际上,封闭系统自然会陷入更大的混乱状态。 这种“紊乱”-我们在“能量”或“混乱”之上称之为-熵。 Ivar Jacobson及其同事研究了代码库中的熵现象,并介绍了软件熵这一术语。 当您更改代码库时,其熵会增加。 混乱的加剧是技术债务的原因。

回到我们快速发展的软件公司,该公司的客户群不断扩大,市场也在增长。 他们不断壮大的开发团队日以继夜地提供功能,以跟上增长的步伐。 如果您什么也不做,则代码库只会变得更加混乱。 压力正在上升。
我将技术债务视为代码库中的熵。 我认为他永远不会消失,与他的斗争将是永恒的。
Carta工程部副总裁 Ron Pragides
在计划每个Sprint时,我们公司面临一个选择:您需要做些什么来遏制日益增长的复杂性,还是值得花时间开发和提供新功能?
热力学的第三定律和最后定律阐明了为什么这个难题甚至与现实的状态不完全对应。
热力学第三定律
当温度绝对为零时,系统的熵达到恒定值。
这听起来很复杂,但实际上,它实际上很简单,尽管热力学定律具有深远的影响(有时甚至是压倒性的),但它们的基本原理却易于理解。 例如,当水以蒸汽的形式出现时,其分子“自由地”以完全混乱的方式运动。 熵无处不在。 但是,当水冻结时,其分子被“锁定”并保留在原位(或多或少)。 熵减小并达到恒定值。
那么我们该如何控制软件熵呢?
好吧,我们可以停止开发新代码。 因此,一些团队喜欢“冻结”代码,以便在发布给客户之前对其系统进行全面测试。 如果代码库不再更改,那么熵也不会增加,混乱也不会再有无法预料的后果,技术债务也不会增加。
但是,不可能永远保持代码冻结-我们需要新功能。 因此,剩下的唯一选择就是重构。
代码重构过程可以帮助逐步淘汰软件熵。
维基百科
VSCode的免费扩展程序可以帮助您解决此问题 。 现在就开始吧!
减少软件熵并不容易
到目前为止一切顺利。 实际上,所有这一切似乎都是显而易见的陈述。 至少在直觉上,任何听说过软件开发的人都熟悉这一切。
为什么技术债务仍然令我们感到惊讶?
这是因为即使我们知道需要重构代码以减少混乱,但是仍然有无数其他因素凌驾于我们之上,这些因素阻碍了我们分配必要的时间和资源来正确,经常地进行重构。 这意味着在我们以及所有其他代码库中,软件的熵正在不断增长。
我们都知道摩尔定律,但想想比尔·盖茨(Bill Gates) 对维尔斯定律的描述 :
软件速度每隔一年半降低一半。
比尔·盖茨
我坚信,我们代码库不断增长的熵是这种模式背后的主要驱动力。
软件熵的增长率与诸如技术,软件市场,软件公司和代码编写素养等因素的增长率直接相关,并且每个因素的增长都非常快。

资料来源: 新兴的未来
想象一下这些期望给软件开发团队带来的压力。 这些是严重的全球趋势,一小撮人就可以感觉到它们正在崩溃。 就像让他们克服重力然后起飞,挥舞着手臂一样。

一组开发人员应对技术债务的真实镜头
在下一篇文章中,我们将考虑不断推动我们陷入技术破产的微观趋势,以及快速发展的软件公司如何与之抗衡。 和我们在一起!