技术债务几乎是任何IT项目的昂贵且不可避免的现象。但通过合理的管理策略和实践,它不必危及你的业务。
图片来源:Rob Schultz / Shutterstock
世界上没有完美无瑕的事物,软件代码也不例外。
事实上,大多数程序员都得不到足够的时间来编写近乎完美的代码。在快速部署的压力下,他们常常发布一些问题代码,明知未来必须修复这些代码。
这就产生了技术债务。
“从代码角度来看,我们看到了大量的技术债务。程序员倾向于追求速度和创新,他们实施的代码没有经过应有的QA测试。这在未来会引发问题,而且这种情况越来越多。”数字服务公司West Monroe的合伙人Nate Buniva(内特·布尼瓦)说道,“技术债务最初特指代码债务,但在许多技术圈子里仍然被视为如此。
然而,就像首席信息官必须清理其IT架构中拖累业务战略、带来安全隐患并增加预算成本的遗留组件一样,CIO同样必须应对技术债务。
如果不这样做,成本可能会很高。2022年的一项研究显示,仅在美国,软件质量差就造成了约2.41万亿美元的损失。
鉴于这一现实,有人呼吁CIO实施实践来控制技术债务。以下是经验丰富的技术领导者分享的六条他们用来削减技术债务的策略。
一、深入分析以衡量你的技术债务
作为Info-Tech Research Group基础设施与运营实践研究总监的Andrew Sharp(安德鲁·夏普)是创建技术债务清单的坚定倡导者。这位分析师建议IT领导者列出关键的技术债务,了解这些债务对业务的影响,并制定解决债务的流程。
他和其他人都表示,许多首席信息官在这些基础问题上做得不够。
“最大的挑战之一是理解和组织技术债务的范围,”Sharp(夏普)说,他解释了IT团队在了解技术债务的数量和影响方面所面临的困难,“因为它会蔓延到不同的系统,并产生连锁反应。”
但就像当今商业领域的大多数事情一样,如果债务没有被衡量,就无法成功管理,Sharp(夏普)说道,并补充说IT需要更好地识别、跟踪和衡量技术债务。
“IT总是知道问题所在,知道哪些地方有问题,但通常没有正式的分析,”他说,“我认为,对这个问题采取结构化的方法是一个机会,可以让我们思考以前未考虑过的事情,这样做的关键在于了解问题及其影响,而不是仅仅知道存在这些问题。可视性至关重要。”
Sharp(夏普)警告不要跟踪每一项技术债务,而是强调要跟踪那些计划修复的债务。
二、不要对AI生成代码放任不管
IT部门的员工,以及整个企业的员工,都在使用生成式人工智能来编写代码。一些研究发现,生成式人工智能稍微提高了代码质量。然而,据提供软件设计与交付以及咨询服务的Thoughtworks的首席人工智能官Mike Mason(迈克·梅森)说,大多数组织预计会在未来一两年内看到大量质量一般的软件。
“AI允许你快速生成代码,但人们似乎更擅长快速生成新代码,而不是修复代码,”他说,并指出太多这样的低质量代码在没有经过专家开发人员审查或自动化质量保证检查的情况下被投入生产环境。
“我们预测,组织会陷入困境,更快地推出更多功能,但会导致代码膨胀,进而产生更多技术债务和遗留代码,”Mason(梅森)补充道。
这并不意味着员工不应该使用AI进行编码,Mason(梅森)说。相反,组织应确保拥有流程和工具——包括AI赋能的工具——以确保不会让过多的低质量代码溜走。
三、对技术债务实施治理
大多数组织对其软件开发项目都有一定的治理措施,Buniva(布尼瓦)说。但许多这样的治理计划远未达到应有的强度,也未详细到足以指导团队如何平衡速度与质量,随着AI赋能的代码生产速度加快,这一事实变得更加明显。
“治理跟不上生成式人工智能的发展,”Buniva(布尼瓦)说,“你需要适合生成式人工智能的治理,这种治理不会减缓创新,也不会允许产生大量技术债务。”
一个好的治理计划应设定测试和质量保证的要求,并明确何时应由人工而非自动化质量保证决策介入,Buniva(布尼瓦)补充道。它还应解决培训要求,以确保所有编写代码的人员都了解相关标准。
四、优先偿还债务
就像遗留技术一样,代码债务是生活的一部分,因此永远无法完全偿还。
因此,与其试图让余额归零,Entrust的首席信息官Rishi Kaushal(里希·考沙尔)优先修复最具破坏性的部分——那些可能让他的公司付出最大代价的部分。
“你不想把精力放在那些需要很长时间和很多钱来修复,但修复后却没有任何价值的技术债务上,”Kaushal(考沙尔)说。
他专注于解决那些构成安全风险或在用户体验中造成摩擦的技术债务——他对待整个遗留技术的方法也是如此。
“有些技术债务是可以接受的,可以保留。因此,你必须决定可以接受哪些技术债务,同时改善其他方面,”他补充道。
专业服务公司KPMG的全球技术、媒体和电信业务主管Mark Gibson(马克·吉布森)提供了一种类似的策略,建议在处理任何遗留技术时进行“超级针对性、主动投资以及快速的路线调整”。
他说,大多数首席信息官都知道这些痛点所在。他引用了该公司2024年全球技术报告中的一项发现,57%的受访组织领导者表示,他们基础IT系统的缺陷每周都会扰乱日常业务。
修复这些有问题的系统是一个好去处,Gibson(吉布森)说,并补充道,首席信息官可以利用日志和对IT员工的调查来识别其他应该优先处理的修复任务。
至于争取高层支持以解决技术债务,IT领导者应将技术债务作为业务风险推销给高管团队。
五、在设定目标时要具体明确
North America at Schneider Electric高级副总裁兼首席信息官Bobby Cain(鲍比·凯恩)必须在2025年底前将遗留技术削减12%。“我们有明确的目标状态,”他说。
有了具体目标,Cain(凯恩)和他的团队就有了现代化系统和解决任何问题代码的强大动力。
为了实现这一目标,Cain(凯恩)制定了一项多管齐下的战略,包括对现状进行编目和衡量,以了解遗留技术/技术债务的位置,以及优先排序和规划行动。
尽管这些工作是良好运行的IT功能的基础,但Cain(凯恩)承认,设定目标可以让团队保持警觉。正如他指出的,“没有强制因素,你就无法推动变革。”
六、认识到债务管理是一个持续的过程
国家农村电力合作社协会的首席信息官兼信息技术高级副总裁Wayne F. McGurk(韦恩·F·麦格克)并不认为技术债务是好是坏,而是“开发过程的自然结果,因为正在构建新事物。”
“人们倾向于尽快推出最小可行产品,而一开始并不一定会构建一个高度工业化的应用,”他说,团队会做出权衡,选择那些对最小可行产品有效的技术,但他们知道这些技术在解决方案扩展时会不足。
因此,McGurk(麦格克)不仅将其纳入开发周期,还纳入IT运营,采用各种策略来创建一个全面的持续管理技术债务的方法。作为这种方法的一部分,McGurk(麦格克)的团队会记录并详细说明任何新引入的技术债务,这些债务随后通过组织的工单系统进行跟踪,以便IT团队“可以将其全部调出并报告和查看。”
McGurk(麦格克)还考虑每项技术债务对运营的五个关键领域的影响:简单性、灵活性、连续性、安全性和透明度。
“当技术债务开始阻碍这些运营原则时,它就上升到我们需要处理的层面,”他解释道。
McGurk(麦格克)和他的IT团队考虑影响程度、组织面临的风险以及组织的整体战略,以确定需要关注的内容。然后,他们将这些决定公之于众,从而在组织内提高对这一主题的可见性。
所有这些都融入了他的IT部门的工作流程,McGurk(麦格克)说,这确保了管理技术债务不是一次性项目,而是持续进行的。例如,他的Scrum团队被期望识别新的技术债务,并确定何时以及如何处理它。
“你必须建立责任和问责的文化,让团队知道,项目交付并不是结束,而是一个旅程,没有终点,因此它就成为了需求管理战略的一部分,既要处理新工作的需求,也要处理遗留工作和技术债务。”他说。
作者:Mary K. Pratt(玛丽·K·普拉特)
译者:穿山甲
本文主要观点:
技术债务是IT项目中几乎不可避免的昂贵问题,它会阻碍创新、消耗大量预算和资源,但通过有效的管理策略,企业可以控制并减少技术债务,从而提升业务表现。
支撑要点:
分析衡量技术债务:IT领导者需建立关键债务清单,了解债务对业务的影响,并建立解决流程。要像管理财务债务一样,识别、跟踪和衡量技术债务,但不必追踪所有债务,重点是需修复的债务。
对AI生成代码加强管理:虽然AI能快速生成代码,但可能导致大量质量平庸的代码涌入生产环境,增加技术债务。组织应确保有相应流程和工具来避免低质量代码通过审查。
对技术债务实施治理:许多组织的软件开发治理力度不足,难以平衡速度与质量。良好的治理应明确测试和QA要求,规定何时需人工介入而非自动化QA决策,还应涵盖培训要求,确保开发人员了解相关标准。
优先偿还关键债务:代码债务难以彻底清零,IT领导者应聚焦于修复最具破坏性的债务,即那些可能给公司带来最大损失的债务,如存在安全风险或阻碍用户体验的债务。
设定具体目标:设定明确的减少技术债务目标,如施耐德电气北美首席信息官鲍比・凯恩设定了到2025年底减少12%遗留技术的目标,这能为团队提供强大动力,促使其在现代化系统和解决代码问题方面采取行动。
持续管理债务:技术债务是开发过程的自然结果,要将其管理纳入日常工作流程中,创建持续管理的全面方法,如记录债务并跟踪,考虑债务对运营各领域的影响,确定优先处理事项等,让管理债务成为日常工作的一部分。