当一家公司收购另一家企业时,它自然会查看其资产负债表以了解其价值。以贷款或最终需要偿还的负债形式出现的金融债务,在收购中是相对容易分析的一个组成部分。
但还有一种在软件工程中日益重要的债务,却没有被正式计入。技术债务表现为脆弱的代码、过时的架构以及无法适应新兴技术和趋势的系统。
在这两种情况下,收购方都需要做出选择,通常涉及重大的权衡。他们可以通过偿还贷款来偿还“本金”,或者以技术债务为例,重构系统。他们可以通过重新谈判财务条款或逐步进行技术栈现代化来重组。或者他们干脆接受债务的负担,并承受财务或技术灵活性降低的后果。
与金融债务一样,技术债务也会产生复利效应。今天采取的每一个捷径都会使未来的工作更慢、风险更高、成本更高,从而形成采取更多捷径的压力,导致更混乱、更多延迟——一个恶性循环。
随着代码库变得越来越难以使用,添加新功能需要更长的时间,工程师们因担心破坏某些东西而避免进行更新。新代码叠加在旧代码之上,产生不可预测的副作用。复杂性不断加剧。错误大量增加,导致潜在的安全漏洞。开发者开始觉得自己把所有时间都花在了救火和构建权宜之计上,而他们更愿意构建一些新的、令人兴奋的东西,而不是像照看婴儿一样守着旧系统。
开发者开始流失。熟悉旧系统的员工离开,导致机构知识的流失。新员工入职时间延长。文档质量下降,导致重复劳动和掩盖更大问题的快速修复。
IBM 商业价值研究院的研究表明,在 AI 业务案例中充分计入处理技术债务成本的企业,其投资回报率比那些没有计入的企业高出 29%。反之亦然:忽视技术债务会导致投资回报率下降 18% 到 29%。这对 IT 行业来说是一个有趣的时期,因为 AI 编码工具已经席卷了这一领域,无论利弊。同样可能加剧技术债务的技术,也是解决技术债务的强大工具。
获取有关最重要且最有趣的 AI 新闻的精选洞察分析。订阅我们的每周 Think 时事通讯。请参阅 IBM 隐私声明。
AI 会放大技术债务影响的累积速度,因为 AI 位于技术栈之上。例如,虽然大语言模型 (LLM) 使得快速生成大量代码、无需深入理解就能搭建功能变得容易,但编码规范和代码评审可能会滞后。
提示模板、AI 编排框架、检索流水线和智能体循环被叠加在现有系统之上,但可能会掩盖系统的实际行为,使调试更加困难。因此,当某些东西出现故障时,并不总是清楚哪里出了问题以及为什么。故障可能是微妙的,并导致下游出现意料之外的行为。
AI 还引入了新类别的债务,例如仅在特定上下文中有效的脆弱提示、低质量的检索数据以及模型漂移。而且由于模型在不断变化,这种变动可能导致因“兼容性债务”而在 AI 生命周期中引发故障。即使是敏捷的初创公司,由于技术发展速度之快,也可能从第一天起就开始积累新的技术债务。
AI 代码生成和“氛围编程”运动常伴随着一种“模型会处理”的心态,将复杂性推迟给 LLM。与传统编码相比,缺乏显式逻辑可能导致系统设计不足和不可预测的行为。
减少技术债务的前提是能够衡量债务。但衡量技术债务可能很棘手,不过可以衡量其影响,例如开发周期变慢、开发团队受挫以及交付延迟。
交付度量指标可以反映团队交付和维护软件的效率。前置时间和变更失败率可以提示技术债务方面的问题。
还有一些代码层面的指标,可以更近距离地观察底层债务,例如代码质量度量。循环复杂度、代码重复以及“代码坏味道”的存在,有助于量化修改代码库的难度,直接影响其可维护性。
但仅审查代码是不够的,因为这往往无法捕捉到技术债务如何导致不良结果和大量返工。量化错误数量、产品缺陷、新员工入职时间以及其他开发者的痛点,有助于指出 IT 中更深层的根本原因。软件开发者花费在救火上的时间与真正交付的时间相比是多少?
从历史上看,管理技术债务一直被视为 IT 的杂务,是一种出于必要而在后台进行的工作,常常被关键利益相关者忽视。但在 AI 时代,技术债务管理变成了一个关乎生存的问题,其重要性足以引起整个最高管理层的关注。根据 IBV 的研究,81% 的高管表示技术债务已经在制约 AI 的成功。69% 的高管认为技术债务将使一些项目在财务上难以为继。
尽管 AI 自动化可能使技术债务恶化,但人工智能驱动的代码辅助工具提供了一种强大的解决方案。技术债务在 IT 中会产生复利效应,将投资集中在复利效应最严重的地方是一种明智的做法。
代码重构是在不修改软件代码外部行为或影响其功能的情况下,改变其内部结构。实践者不必手动清理旧代码以强制执行一致的模式并简化过于复杂的函数,而是可以在整个存储库中运行有针对性的重构,并逐步实现模式的现代化,将一个大型项目转变为持续的债务管理过程,使日常维护更具可扩展性。
债务的最大来源之一是缺乏上下文。AI 代码文档工具可以为旧版系统生成文档,并解释函数实际的功能。它们可以对冗余代码进行去重,并建议合并的机会。这减少了新员工入职时间,简化了开发流程,消除了修改旧代码时担心破坏某些东西的恐惧。
AI 可以在高层面上分析系统,识别耦合的组件和依赖关系,并提出升级路径,从而形成考虑到关联组件如何运作的战略路线图。这在大型迁移中尤其有用,否则这类迁移可能风险很高。AI 通过在框架和语言之间转换代码、跨多个文件更新 API 以及在过渡期间保持一致性来提供帮助。
根据 IBV 的研究,AI 在 IT 支出中的占比预计将从约 11% 上升到超过 18%。这种增长需要优先考虑减少债务,否则 AI 投资可能会被资产负债表上未体现的成本所削弱。
技术债务管理通常被框定为工程问题,但它也是一个文化问题。它既关乎清理旧代码,也同样关乎团队结构的构建和激励机制的协调。
在许多组织中,工程团队因快速交付新功能而获得隐性奖励,而长期可维护性则被降低优先级。路线图强调面向终端用户的可见成果,而减少未来债务的努力往往无法与这种激励相抗衡。随着时间的推移,这造成了一种不平衡,奖励开发者增加技术债务而非偿还债务。
各自为政的团队和碎片化的工作流程会加剧这一问题。当一个系统的所有权分布在多个利益相关者之间时,没有一个团队会对其整体健康负责,而且为某个团队利益所做的决定实际上可能会损害另一个团队。一个团队所做的短期决策可能会产生不可预见且持续的影响。没有明确的所有者,就没有哪个团队有责任长期维护和优化一个系统。全新代码很快变成“旧版代码”。
除了通过组织变革来解决所有权和团队间合作问题之外,将减少技术债务的工作变成一个持续的过程也是一种必要的方法。严格的项目管理是识别技术债务并通过定期的代码评审来解决它的关键。
AI 可以通过降低日常维护任务成本来帮助系统化代码分析,使团队能够逐步处理技术债务,而不是将改进推迟到似乎永远不会到来的未来,最终实现高质量的代码。随着时间的推移,这些收益会产生复利效应,带来更高的软件质量和更好的业务成果。
借助您的 AI 合作伙伴 Bob,加速软件交付,实现安全的意图感知型开发。
利用可信的 AI 驱动型工具优化软件开发工作,最大限度地减少编写代码、调试、代码重构或代码补全的时间,从而拓展创新空间。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策能力和商业价值。