包阅导读总结
1. 关键词:技术债务、软件开发、商业问题、AI 编码助手、重构
2. 总结:本文主要探讨技术债务对软件开发和业务的影响,包括降低开发速度、影响产品路线图等,提出解决技术债务的方法,如重构和利用 AI 编码助手,并强调技术债务是商业问题,需收集数据说服管理层解决。
3. 主要内容:
– 技术债务的概念
– 是软件开发中采取捷径的成本
– 如盖房偷工减料会让房子出问题,软件同理
– 技术债务的影响
– 减慢开发速度,缺陷累积,产品路线图难以预测
– 影响团队士气、客户和业务
– 解决技术债务的方法
– 反应式方法:为重构建立商业案例
– 主动式方法:利用 AI 处理重构
– AI 编码助手对技术债务的影响
– 可能帮助偿还技术债务,但也存在风险
– 成功使用取决于人类开发者的专业知识和判断
– 结论
– 技术债务是商业问题,缺乏可见性和与商业价值联系是容忍原因
– 技术领导者应让代码品质成为商业问题,决策应数据驱动
思维导图:
文章地址:https://mp.weixin.qq.com/s/JK77rfE_Rmr4Zm8WG4IXxQ
文章来源:mp.weixin.qq.com
作者:Christian
发布时间:2024/8/27 0:01
语言:中文
总字数:4030字
预计阅读时间:17分钟
评分:84分
标签:技术债务,软件开发,AI编码助手,产品路线图,商业案例
以下为原文内容
本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com
作者:@Christian Bonzelet
原文:https://cremich.cloud/dont-let-technical-debt-sabotage-your-product-roadmap
前言
技术债务简单来说,就是软件开发中采取捷径的成本,而这种成本会累积到需要偿还债务的时候。就像建造房子一样,如果你在基础打地基的时候偷工减料,最终这些捷径会让你付出代价。房子可能会开始摇摇欲坠、屋顶可能会漏水,墙壁可能会开始崩塌。软件也是如此。当技术债务累积时,开发速度会减慢,缺陷会开始累积,你的产品路线图也会变得越来越难以预测。
【早说】技术债
本文系列将探讨如何建立一个引人入胜的重构商业案例,说服你的管理层投资代码品质不仅仅是技术问题,而是一个战略性的商业需求。我们先从观察技术债务的不同观点和 AI 编码助手对技术债务的潜在影响开始。
技术债务的两个观点
技术债务是一个商业问题。然而,缺乏对技术债务对你的业务影响的了解,导致短期投资回报(例如实施新功能)往往以减少技术债务的长期业务增长机会为代价。只有 10% 的业务经理主动管理技术债务。在我看来,我们可以考虑两种解决技术债务的方法:反应式方法是为重构建立商业案例;主动式方法是利用 AI 来处理重构。两种方法都有一定的不确定性。
深入观察你的开发团队
技术债务会让添加新功能或修改现有功能越来越困难。研究表明,在低品质程序中的开发速度比高品质程序慢 124%。想像一下,你的团队在实施一个应该只需要一周的功能时,却花了两周多,他们会有多沮丧!这种减速不仅仅是一种不便,它会严重影响生产力,并可能严重填满你的产品待办事项清单。
由于低代码品质和高技术债务造成的缺陷会转化为计划外的作业,例如令人头疼的除错、热修复和修补程序,这些都会吞噬团队的时间和资源。Software.com 发布的「未来工作」报告发现,开发者每周仅花 60 分钟编写程序代码。Stripe 的研究发现,开发者平均每周花费 17 小时处理维护问题,另外 4 小时处理「不良代码」。根据 Stripe 的说法,计划外作业代表着巨大的机会成本,仅开发者生产力损失估计每年高达 850 亿美元。
这种情况下的计划外作业意味着,你的团队的精力花费在救火上,而不是开发新功能或改进你的产品。这会破坏你的产品路线图,因为它几乎不可能计划未来的发布。这种不可预测性是规划的噩梦,可能会严重损害你与利益相关者的信誉。
但是,为什么我们不能通过招聘新的开发人员来解决技术债务问题呢?事实上,这可能会使情况更糟,因为它会增加协调成本,并可能降低软件开发的效率。特别是在那些在技术债务上投入大量的企业中。
连锁效应
技术债务不仅仅限于你的代码库,它会影响你团队的士气、你的客户以及你的业务。我称之为技术债务的连锁效应。
随着技术债务以故障、崩溃和性能问题的形式出现,它会影响用户体验你的产品的方式。这可能会导致负面评价、客户流失,最终导致收入损失。
技术债务会损害创新,阻碍你利用新机会的能力。这会让你处于竞争劣势,并阻止你走在时代的前沿。
最后,我们不要忘记技术债务的人力成本。使用混乱、复杂的代码对于开发者来说可能是极其令人沮丧的。开发者会觉得他们的生产力受到诸如遗留系统、不明确的优先级和没有足够时间修复不良代码等因素的阻碍。
当有才华的工程师由于技术债务引发的沮丧而离开你的团队时,你会失去宝贵的知识和经验,进一步加剧问题。根据 Stripe 的说法,高管们认为开发者人才的缺乏比获取资金对他们的业务构成更大的威胁。这本身就足以证明技术债务不仅仅是一个技术问题,而是一个严重的商业风险。但通常情况下并非如此。
AI 编码助手对技术债务的影响
AI 可以帮助我们编写新的程序代码,但它也能帮助我们改进程序代码或提高程序代码品质吗?虽然 Amazon Q Developer 或 GitHub Copilot 等工具承诺提高生产力并简化编码任务,但它们对技术债务的影响是一个复杂且不断发展的问题。
AI 编码助手有可能帮助工程师偿还技术债务。通过自动化重复性任务、建议改进,甚至生成完整的程序代码片段,这些工具可以让开发者腾出时间专注于更高层次的设计和问题解决。然而,实际情况比这更微妙。
我试图更好地理解我们目前处于什么阶段。我发现 GitClear 发布了一份有趣的白皮书,名为「Copilot 上的编码」。他们评估了在 30% 的情况下,AI 助理未能改善程序代码健康状况。在三分之二的情况下,它破坏了现有的测试。AI 编码助手倾向于幻觉,并且比人工编写的程序代码更多。部分由 AI 编写的代码库,比我们以前使用的代码库增长得更快。
众所周知,更多的程序代码并不意味着更好的程序代码。更多的程序代码会增加增加技术债务的风险。回到我对技术债务的定义,即软件开发中的捷径。公平地说,AI 编码助手不是根本原因。这是因为我们多年来了解了从 StackOverflow 或 AI 编码助手中简单复制粘贴程序代码作为软件开发捷径的好处。除非你负责任地使用这些工具,否则你可能会想到这个结果。
随着我们继续前进,探索 AI 如何最好地支持重构工作至关重要。这包括开发能够更好地理解程序代码结构和域上下文的 AI 模型,以及将 AI 助理整合到现有的开发工作流程中,以促进程序代码品质和可维护性。
ThoughtWorks 发布了一个有趣的播客,名为「使用 AI 重构」。Martin Fowler 提出了一个有趣的问题:
有没有尝试使用这些在抽象语法树层级而不是程序代码文本本身运作的模型来做这种类型的事情?
CodeScene 的 CTO 和创始人 Adam Tornhill 解释说,他们尝试过使用机器学习模型,这些模型使用抽象语法树而不是将编码视为文本。我了解减轻幻觉的潜力,因为这种方法消除了程序语言之间的差异,并为编码助理提供了一种处理程序代码的新方法。
我看到的另一个趋势是,在每个编码助理背后,不仅仅有一个执行所有任务的模型。在深入研究 Amazon Q Developer 时,我了解到,当你发送提示时,会评估多个模型。根据评估结果,Amazon Q Developer 会选择最适合执行你的任务的那个。
最终,AI 编码助理在管理技术债务方面的成功使用将取决于人类开发者的专业知识和判断。这些工具可以成为强大的盟友,但它们不应被视为健全软件工程实践的替代品。
结论
我希望这部分可以帮助你找到足够的论据和轶事来强调技术债务是一个商业问题。
研究表明,开发者有 23% 到 42% 的时间浪费在技术债务上。为什么在许多情况下仍然容忍这种情况?我观察到,缺乏可见性和与商业价值之间的联系缺失是两个原因。围绕解决技术债务的讨论通常会简化为「我们必须重构这个」之类的陈述,而没有基于数据的论证。
技术领导者需要明白,他们有能力让代码品质成为商业问题。由于每个现代企业都是数据企业,因此解决技术债务与其他任何商业决策一样,是一个数据驱动的决策。
推广1、这是一本 “课外” 书。知道如何编写代码,仅仅是 “战斗的一半”。像与资深导师喝咖啡一样,本书将教授你学校里计算机课没有涉及的技能。2、这是一本有态度的书。公司之间总有差异,基本原理总是相通。书中构建团队的经验取自那些快速成长的、由风险投资公司资助的或者准上市的硅谷公司。【👉点击详细了解】
技术债务的常见问题解答
技术债务是什么?
技术债务是指在软件开发过程中为了加快进度或降低成本而采取的捷径,这些捷径会在日后造成负面影响,就像在盖房子时偷工减料,最终会导致房屋结构不稳、漏水等问题一样。技术债务会降低开发效率,增加维护成本,影响产品质量,最终损害企业的长期利益。
技术债务会造成什么影响?
技术债务会对企业造成多方面的影响:
-
降低开发效率:在低质量的代码中进行开发比在高质量的代码中开发慢 124%。
-
增加维护成本:程序代码质量低下和技术债务高会导致更多非预期工作,例如除错、修复和更新,浪费开发团队的时间和资源。
-
影响产品质量:技术债务会导致产品出现故障、性能下降等问题,影响用户体验,造成负面评价和客户流失。
-
阻碍创新:技术债务会阻碍企业开发新功能或探索新技术的能力,导致失去竞争优势。
-
降低团队士气:在糟糕的代码中工作会让开发者感到沮丧,导致他们失去动力和士气,甚至离职。
如何识别技术债务?
识别技术债务可以通过以下方式:
-
代码分析工具:使用代码分析工具可以找出程序代码中的漏洞、重复代码、不必要的复杂性等问题。
-
开发团队反馈:询问开发团队他们在开发过程中遇到的困难,例如代码难以理解、修改或测试等。
-
用户反馈:收集用户关于产品性能、稳定性等方面的意见反馈,以判断技术债务是否影响了用户体验。
如何解决技术债务?
解决技术债务需要进行重构,也就是说要对现有的代码进行重新设计和编写,使其更易于理解、修改和维护。
-
循序渐进:不要试图一次性解决所有技术债务,而是要制定一个循序渐进的重构计划,逐步解决最严重的问题。
-
优先排序:对技术债务进行优先排序,优先解决对产品性能、稳定性或用户体验影响最大的问题。
-
不断重构:重构是一个持续的过程,需要不断地对代码进行优化和改善。
AI 编码助手如何影响技术债务?
AI 编码助手可以帮助开发者提高编码效率,但它们也会增加技术债务的风险。
如何利用 AI 助手解决技术债务?
-
选择合适的 AI 编码助手:选择能够理解代码结构和领域背景的 AI 编码助手。
-
使用 AI 助手进行代码重构:使用 AI 助手自动化代码重构的某些任务,例如代码格式化、代码清理等。
-
人工审核:始终对 AI 助手生成的代码进行人工审核,确保代码质量。
如何说服管理层解决技术债务?
-
收集数据:收集数据证明技术债务对业务的负面影响,例如开发效率降低、维护成本增加、用户流失等。
-
建立商业案例:制定一个清晰的商业案例,说明解决技术债务的投资回报率。
-
强调长期利益:强调解决技术债务对企业长期发展的意义,例如提升竞争力、提高产品质量、降低风险等。
技术债务管理的关键原则是什么?
-
意识问题:首先要认识到技术债务是一个严重问题,并了解它对企业的影响。
-
主动管理:要主动管理技术债务,而不是等到问题严重时才进行处理。
-
持续重构:重构是一个持续的过程,需要不断地对代码进行优化和改善。
-
团队合作:技术债务管理需要开发团队、产品团队和管理层的共同参与。
早阅:了解技术资讯的一种方式。