您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

想解决技术债,你要先学会如何量化它

时间:2023-08-30 11:17:37  来源:51CTO  作者:

作者 | Ryan Donovan

编译 | 徐杰承

当Ward Cunningham在“敏捷宣言”中首次提出“技术债”概念时,他表示需要用一种方式来讨论项目早期所做的决策,这些决策会在工程师后续的开发工作中困扰他们。一些企业为了将产品推向市场而在早期做出的技术决策可能并不适用于长期发展,除非修正这些决策,否则团队的生产力将会受到影响。

这里的一个例子是,Facebook最初是用php编写的。然而随着增加特性、复杂性和规模,PHP开始变得不再适用于新的需求,这便是PHP给Facebook带来的技术债。但值得注意的是,技术债并不一定意味着最初的选择是错误的。用PHP编写网站起初是一个明智的决定——问题并不出在语言,而是需求的改变。

事实上,不仅是语言,工具、框架、软件架构这些都有可能会产生技术债。这在当时可能是为了眼前的利益而做出的善意的编码决策,但这不意味着它们将一直适用。对企业而言,越早解决技术债问题越好,这将有利于企业的持续高速发展。但解决这些问题需要进一步挖掘技术债的本质,并准确量化你的工程团队到底背负了多少债务。

1、维护成本

虽然开发人员喜欢解决问题,但这并不总是意味着他们喜欢寻找技术债所带来的bug。技术领导需要更多的考虑为业务服务,因为业务通常关乎公司的利润和损失。因此,为了还清技术债,你首先需要从成本和收益的角度来考虑。

技术债的经济影响是真实的。根据Stripe在2018年的研究,他们发现,开发人员平均每周会因技术债带来的问题花费13.5小时,如果你用开发者的工资乘以这个数,那么你就可以基本判断技术债的成本。

如同有人在Stack Overflow上所说,“由于复杂性,低质量的代码通常需要更长时间来维护,这将严重影响开发者所产生的价值。”大多数公司都已经使用了某些问题跟踪系统,因此评估花费在维护技术债上的时间其实并不困难。

而要确定特定领域债务的影响,则需要审查代码,跟踪哪些代码获得了最多的修改。进行这样的数据挖掘还可以让你识别出代码维护时的聚类,并将其与跟踪系统中的错误完成情况进行比较。

当然,你也可以直接询问团队。Stack Overflow的工程总监Roberta Arcoverde说,“这听起来可能很天真,但这背后确有实际依据,如果团队一致认为某个东西很重要,但这部分因为代码或其他问题导致维护困难,那么你就可以基本定位问题所在。”

2、机会成本

如果开发人员将大量时间花在技术债和糟糕的代码上,这意味着他们没有多余的精力创新。对于注重速度的软件行业来说,这是一件大事。你发布新功能的速度越快,就能越好地满足客户的需求,也能为产品增加更多的价值。相反,将功能和补丁推向市场花费的时间越多,你就越落后于竞争对手。

任何技术债几乎都会影响到编写你要交付的代码的时间,但从另一个角度看,解决技术债同样存在着不小的复杂性,这种复杂性本身也会成为一笔债务。因此,技术管理者需要决定到底该在哪个时候解决问题。

这需要权衡开发者的生产力与业务需求量。因为随着代码变得越来越难维护,新特性的发布时间也越来越长。而代码库中需要修改的地方越多,花费的时间就越多。

有时技术债来自过时的或基于以前版本软件的善意技术决策。更新这些可能需要大量的代码重写而不是简单的重构。虽然一些度量标准会有所帮助,但如果这与紧急的业务需求冲突,还是要根据实际情况进行决策。

当然如果条件允许,越早解决问题越好。随着技术债的增长,它会产生“利息”,支付利息将变得越来越繁重,甚至超越“本金”。在一个软件企业中,随着技术债务的增长,整体开发速度会越来越慢,交付给客户的新特性也会越来越少。

3、人力成本

软件公司一直在激烈争夺顶级技术人才,这使得寻找和聘用新员工的成本非常高。入职后的前几周对开发人员非常重要,如果这段时间开发人员对公司产生反感——20%的开发人员在接受角色后的45天内离职。详细的文档、流程以及代码库的可读性非常重要。所有人都知道在某个时候你会需要它,但很多企业在早期为了省事而跳过了它。这使得新员工必须四处打听,并占用高级工程师的时间,以便让自己能够开始工作。

一旦开发人员准备好开始工作,他们可能会因为发现自己面对堆积如山的杂乱代码而感到沮丧——他们不得不花大量时间试图弄清楚这段代码到底想要表达什么。

此外,过时或低效的工具和依赖也会让开发人员绝望。想象一下,当你在编写代码时发现一个令人困惑的古老漏洞。“我以为这个问题在Y版本中已经解决了?”“是的,但是我们仍然在使用X版本,升级尚未获得批准。”

而当开发者在工作中无法接触先进技术栈时,他们的技能会逐渐萎缩。在一份调查中显示,30%以上的人(取决于地区)表示,他们认为自己所在企业的技术栈有些过时,希望寻找使用新技术的新工作。

这些问题都会导致企业员工的流失。如果你的公司总是遭受频繁的人员流失,这会对企业带来很大的负面影响。如果这些债务让你失去了优秀的员工,那么你将很难在下一次竞争中取得先机。

4、清点技术债

技术债的概念如今已经受到了越来越多的关注,它将工程问题转化为商业语言。如果你想偿还这些债务,那么你需要用商业语言来说明。费用是多少?它是如何对企业带来影响的?对于任何商业决策来说,权衡都是最重要的。

金融债务一样,当你花费越来越多的时间来解决它的影响时,未偿还的技术债务会困扰你。糟糕的代码会带来更多糟糕的代码,这类似利滚利的概念。你并不一定需要在某个时间彻底偿还债务,但你需要持续作出改变,削减技术债,你就有更多的空间来编写真正能够带来价值的代码。

原文链接:https://stackoverflow.blog/2023/08/24/if-you-want-to-address-tech-debt-quantify-it-first



Tags:技术   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
SASE技术应用落地的五个关键趋势
在Gartner 最新发布的《2023网络技术成熟度曲线》报告中认为,SASE技术已经开始走出最初的技术炒作期,将逐步迈向新一轮的实用落地阶段。在Gartner发布的《Hype Cycle for Ente...【详细内容】
2024-04-01  Search: 技术  点击:(9)  评论:(0)  加入收藏
域名跳转技术你知道有什么用吗?
域名重定向,又称为域名转向或域名跳转,是一种网络技术,它允许网站管理员将一个域名指向另一个域名或者一个具体的网页地址。这样,当用户在浏览器中输入一个域名时,会被自动重定向...【详细内容】
2024-03-26  Search: 技术  点击:(5)  评论:(0)  加入收藏
苹果手机将搭载百度AI技术?百度人工智能A股小伙伴有这些
财联社3月24日讯(编辑 若宇 俞琪)据华尔街日报周五晚间报道,苹果在中国寻找本土生成式AI提供方,苹果讨论了在中国的设备中使用百度的人工智能技术。受该利好消息刺激,百度美股周...【详细内容】
2024-03-26  Search: 技术  点击:(10)  评论:(0)  加入收藏
国家安全部:95后“技术宅”遇间谍网络勾连,共享国家级项目数据后次日举报获奖
国家安全部微信公众号3月25日发文介绍一起网勾案件,全文如下:2023年,某高新技术企业的青年设计师阿强,拨打国家安全机关12339举报受理电话称,某科技论坛上一名昵称“暗影Dark”的...【详细内容】
2024-03-25  Search: 技术  点击:(18)  评论:(0)  加入收藏
“只要能看到脸的都能换” 滥用“AI换脸”技术伪造女明星涉黄视频 法院判了!
“AI换脸”相信大家都不陌生。只需要一张照片,通过人工智能深度合成技术,任何人都能成为视频中的主人公,甚至连表情和动作都能以假乱真。然而,这项新技术,却让一些人产生了不良想...【详细内容】
2024-03-22  Search: 技术  点击:(11)  评论:(0)  加入收藏
古人没有指纹技术,为何还要按指纹画押?专家:我们低估老祖宗了
现代科技比较发达,能够用很多方式识别身份,比如指纹识别和面容识别等。这些身份识别的方式广泛应用于生活之中,我们日常使用的手机,以及公安机关刑侦过程都离不开这些方式。指纹...【详细内容】
2024-03-21  Search: 技术  点击:(14)  评论:(0)  加入收藏
汽车OTA技术解析:它是什么以及有何作用?
汽车OTA技术,即Over-The-Air技术,是一种空中下载技术,通过移动通信的接口实现对软件进行远程管理。简而言之,它允许车主通过手机应用程序或互联网连接直接向车辆发送更新,而无需...【详细内容】
2024-03-19  Search: 技术  点击:(14)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  Search: 技术  点击:(5)  评论:(0)  加入收藏
五种技术买点的再次详述
这篇分享贴的开头,我先讲一下周末部分朋友的问题。第一种技术买点:到达压力位时经过调整后, 再次出现的阳线买点,买点阳线的成交量小于第一次达到压力位时的阳线的成交量上图是...【详细内容】
2024-03-18  Search: 技术  点击:(11)  评论:(0)  加入收藏
编程二十年,38岁谷歌程序员的16条建议,涉创业、技术淘汰、拿大厂offer……
以能够让项目自负盈亏,并在这一约束下优化其增长的方式来管理和调整项目,这是这个世上最厉害的本事。距离我正式开始编程的工作已经过去二十年了。在这些年里,我有以下收获: 获...【详细内容】
2024-03-10  Search: 技术  点击:(4)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(5)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(12)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(8)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(10)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(8)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
站内最新
站内热门
站内头条