东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

怎么说服你的老板重视技术债?

  • 2020-05-31
  • 本文字数:2614 字

    阅读完需:约 9 分钟

怎么说服你的老板重视技术债?

本文最初发表在 Understand Legacy Code,经原作者 Nicolas Carlo 授权,InfoQ 中文站翻译并分享。


管理层是不会让我对遗留代码进行重构的!


你认识到自己现在的处境了吗?那是多么令人沮丧的事啊!


作为一名开放人员,经常会遇到这样的情况:管理者似乎对修复已经存在的问题不感兴趣。


新功能!紧急发布!错误修复!推迟重构那个混乱的代码库总有这样的或那样的借口。😭


就算你解释了干净代码的优点和好处,管理者们似乎仍然不理解,也不关心。他们关注的重点总是成本和时间,而不是质量。而现在,面对不断积累的技术债务,就算你想去解决,也会感到有心无力。


IT 部门深陷在为不耐烦的客户提供生产支持的困境。

客户不会为重构买单。

感觉就像是失败的事业!


这样的形势已经逼得许多优秀的开发人员卷铺盖走人了。现在的情况啊,真是铁打的公司,流水的开发者。

管理者不是工程师

你需要帮助管理层了解糟糕的代码质量对商业有什么样的影响。


归根结底,对公司来说,最重要的是创收、盈利能力。为了降低成本、增加收入,管理层需要作出最好的决策。


因此,如果你想为重构说出理由,就应该学会商业语言。


作为一名前顾问和技术主管,这些都是我曾经做过的事情,所以,就让我来帮你一把。

可用于管理层的五个论点

1. “重构将减少功能边际成本的波动性。”

这句话是出自 J. B. Rainsberger 的名言:“软件设计经济学”(The Economics of Software Design)。


别逃避!这只不过是一种听起来似乎很明智的方式,把自己已经知道的事情说出来就好。


让我们来分解一下:


  • 到目前为止,“重构将减少”这说得还不错。

  • 波动性”就是“不确定性”的另一种说法。

  • 边际成本”是指多生产一个单位的成本。

  • 功能”就是商业价值!是啊,我们都对商业价值感兴趣。


它的要点就是这五个论点的核心。当我们与非技术人员交谈时,我们却忽略了这一点:


用他们的语言来说。


不要用极客们惯用的话语。要谈经济、谈商业。这就是我的秘诀!


与你的管理者联系去吧。


所以,来试试这样跟他们谈论这个论点吧。毕竟,你知道这个论点到底是什么意思。

2. “在过去三个月里,我们用了 63% 的开发预算来解决质量问题。”

我会让你根据实际情况对这个数字予以调整。😉


此处的重点,就是要用数据来说话。这个技术宅肯定会影响到你的日常工作。你能证明这一点吗?


你当然可以!


下面是一些例子,你可以参考:


  • 随着时间的推移,你的速度会怎么变化?你每次冲刺能拿到多少分?它会下降吗?

  • 每周报告 Bug 的数量。每周修复的 Bug 数量。Bug 是否在积累?花在 Bug 修复上的时间是不是越来越多?

  • 跟踪每周发生的紧急事件的数量。是否在持续?这个数量会不会上升?


给管理层看看劣质产品的成本。


额外建议:将这些数字与实际金额挂钩。💰


有一天,我参加了一个 Bug 的事后调查分析。这个 Bug 本可以通过静态类型检查来避免。代码是用 JavaScript 编写的。当时公司里正在进行一场迟日旷久的辩论:到底要不要采用 TypeScript。


进行事后调查分析的开发人员做了一些挖掘工作,并能计算出那个 Bug 对业务的影响。


就在这个 Bug 存在的那几个月里,已经让我们损失了 100 万加币。100 万加币啊!


仅凭这一点,TypeScript 就值得投资!


因此,公司决定,新的服务将用 TypeScript 实现,而关键服务将通过类型检查重新审查。

3. “我们拿了技术贷款,为了更快地交付,我们需要偿还一些债务,以保持降低上市时间。”

我再说一遍,用他们的语言来说


使用比喻可以非常有效地传达信息。它通过与他们所熟知的东西联系起来,可以帮助别人理解他们不熟悉的概念。


“贷款”是管理者们都会熟悉的一个概念。“技术债务”也是一个著名的比喻。


你还可以将公司想象成一个餐厅,把代码库想象成这个餐厅的厨房。当你任由盘子堆积如山时,外面等待的客人越来越多,问题会变得非常棘手,在这种情况下,你的员工需要开始洗碗刷盘。


4. “我们可以通过将 10% 的时间投入到代码质量上来减少员工离职带来的影响。”

我们已经讨论了劣质产品的直接成本。


但有一个恶性的因素可能会被忽视:员工离职。


如今,企业要想留住开发人员已经很难了。尤其是优秀的开发人员。当员工士气低落时,他们就很容易会跳槽。一些能让他们摆脱困境的东西。


嘿!也许你已经在那里了,梦想着有一片更绿的青草!


现在,请提出一个问题:


为了更换一个已离职的开发人员,我们需要花多少钱?


要吸引新的人才,聘用他们并让他们入职。而这既要花钱,又要花时间,还会拖累团队的效率。


你的管理者肯定不愿意每年都更换开发人员。减少员工离职率是一个令人信服的理由。并且,如果能有个解决技术债务的计划,就已经对团队士气起到了提振作用。

5. “将预算的 20% 用于重构,可以减少一半的首次回应时间,并对开发人员的工作效率带来正投资回报率。”

首次回应时间(First Response Time,FRT),是客户支持的关键指标。


让客户满意,对企业来说很重要。


重点是:


  • 获取对客户支持部门重要的指标。

  • 确定一些反复出现或需要开发人员解决的问题

  • 提出一项计划,通过解决问题的根源,来减少支持问题的数量。


通过解决这些问题,开发人员在协助客户支持方面将花更少的时间。这将弥补所投入的时间:正投资回报率。

额外建议

但最终他们还是做出了决定


对吗?


好了,我刚才给你了五个论点,这些论点可以帮你向管理者们论证解决技术债务的重要性。


但是,我觉得在你去找管理者谈谈之前,我还应该给你最后一个额外的建议。


需要重构时就动手吧。


重构不应该是实现功能之外的独立步骤。事实上,你无法预知下一个功能是什么。因此,你必须对代码进行重构,使其适应新的现实。


这是你工作的一部分。


作为一名专业开发人员,你知道怎样才能不断带来商业价值。


这是行之有效的做法,即使是在遗留代码库上也是如此。但也就这样了,不会再好到哪里去了。而且,你也不可能做到随时进行大规模的重构。但至少,情况不会变得更糟糕。


使用遗留代码并不是一件什么好事,而是为了更好。


每修复一个 Bug,就要多花一个小时编写一个自动化测试。对于每个功能,都要多花一天的时间来清理代码。让改变变得更容易。每天都要如此。这样,几个月后,这个习惯将会对你的工作效率产生巨大的影响。


你知道为什么吗?


因为这些利益复合,降低了功能边际成本的波动性!


作者介绍


Nicolas Carlo,在加拿大蒙特利尔生活和工作。他创建了软件工匠蒙特利尔社区(Software Crafters Montreal community),该社区关注构建可维护的软件。


原文链接


https://understandlegacycode.com/blog/5-arguments-to-make-managers-care-about-technical-debt/


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-05-31 08:053215
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 492.4 次阅读, 收获喜欢 1966 次。

关注

评论

发布
暂无评论
发现更多内容

云服务之PaaS:PaaS怎么帮助企业走向云

高端章鱼哥

云计算 低代码 PaaS JNPF

融云深度参与「新加坡 GTLC 大会」,连接亚太机遇、开拓国际市场

融云 RongCloud

通信 服务 融云 GTLC 东南亚

国内智慧工业的实践,在一首曙光《长歌行》中

脑极体

AI 算力 数智化 曙光

社交语聊平台运营,需要哪些资质?语聊APP原生开发和混合uniapp开发的利弊分析

山东布谷科技胡月

语音聊天系统软件开发 语音直播平台开发 语音聊天室开发 语音程序源码 社交直播APP开发

Last Week in Milvus

Zilliz

非结构化数据 开源社区 Milvus Zilliz 向量数据库

常用的国内外组态软件推荐

2D3D前端可视化开发

物联网 组态软件 工业组态软件 web组态软件 SCADA

2023年科技趋势展望报告,这几个领域程序员可以恰饭

互联网工科生

人工智能 软件开发 麦肯锡

我是如何使用Spring Retry减少1000 行代码

越长大越悲伤

Java spring retry spring-retry

避雷干货丨初创或中小企业公司该如何选择云服务器?

YG科技

cad设计绘图必备:AutoCAD 2024激活中文附补丁安装教程

mac大玩家j

Mac软件 CAD绘图 CAD设计 cad工具

九科信息成功签约中交房地产集团有限公司RPA项目

九科Ninetech

融云:AI 机器人在社交软件中的花样存在

融云 RongCloud

AI 融云 社交软件 AIGC My AI

知识管理工具和方法有哪些?分享15种

PingCode

产品经理 PingCode wiki软件 知识库管理软件

以财证道,终身成长

少油少糖八分饱

读书笔记 思维 搞钱 致富 有钱人

首批通过!柏睿数据旗下数据库产品获强制性国标最高级别认证

新消费日报

代码随想录Day48 - 动态规划(九)

jjn0703

电商店铺管理,为何需要华为云云耀云服务器L实例

YG科技

一文看懂:小程序游戏需要版号吗?

FN0

几款常用基于Web的组态编辑器

2D3D前端可视化开发

物联网 web组态 web组态软件 组态可视化 web组态编辑器

如何将数据从 InfluxDB 无缝接入到 TDengine 中?来看看

TDengine

tdengine Influxdb 时序数据库

图智能在反洗钱方向的应用实践丨Fabarta 技术专栏

Fabarta

图计算 图分析 反洗钱 图智能 智能风控

C++头文件和std命名空间

攻城狮Wayne

FuncGPT(慧函数)教你用Mybatis进行一对一查询映射处理

SoFlu软件机器人

ARTS 薪火重启之第二周

渣渣辉

Kyligence Copilot 登陆海外,斩获 Product Hunt 日榜 TOP 2

Kyligence

指标平台 Kyligence Copilot 数据分成

一张图读懂TuGraph Analytics开源技术架构

TuGraphAnalytics

大数据 分布式 流计算 图计算 流图

走进大模型

统信软件

人工智能 深度学习 大模型

唯一受邀参会通信服务商!融云出席数字经济头部盛会「中数大会」并发言

融云 RongCloud

人工智能 互联网 通信 数字 融云

什么是HTTP代理?HTTP代理的作用?HTTP代理怎么设置?

巨量HTTP

代理IP IP地址 http代理 socks5代理

基于Vue3.0的优秀低代码项目

这我可不懂

Vue 低代码

k8s发布应用

tiandizhiguai

微服务 云原生 k8s

怎么说服你的老板重视技术债?_AI&大模型_Nicolas Carlo_InfoQ精选文章