最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

  • 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/


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-05-31 08:053220
用户头像
刘燕 InfoQ高级技术编辑

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

关注

评论

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

Native SQLite Manager for Mac原生SQLite数据库管理器 激活版

晴雯哥

ftp管理工具Viper FTP Mac 连接远程服务器、安全地传输文件 支持M1/M2

晴雯哥

第3期 | 立势 万物互联、全域融通

用友BIP

项目管理

和鲸联合南开大学赵宏教授,共建新文科计算机交叉课程

ModelWhale

人才培养 数据科学 高等教育 新文科 双一流

大语言模型黑盒被打破;Meta 元宇宙硬件亏损可能高于市场共识丨 RTE 开发者日报 Vol.60

声网

软件测试/测试开发丨Python模块与包 学习笔记

测试人

Python 程序员 软件测试

这款可视化拖拽式低代码平台,真香!

树上有只程序猿

低代码平台 JNPF

线程的五种状态

程序员万金游

Java】 #java #java程序员 #java面试

六个实用的软件开发步骤

高端章鱼哥

敏捷开发 软件开发 瀑布开发

软件测试/测试开发丨Python异常处理 学习笔记

测试人

Python 程序员 软件测试 异常处理

优化模型之“标注错误”

矩视智能

深度学习 机器视觉

TDengine OSS 与 qStudio 实现无缝协同,革新数据分析和管理方式

TDengine

时序数据库 ​TDengine

音视频关键技术盘点!小白入行指南

X2Rtc

音视频 RTC

C4D梦幻色彩的3种表现方法

Finovy Cloud

C4D

欢迎体验

IoTOS

物联网 IoT 国际化 通信系统 通信平台

数字时代 低代码赋能新零售系统

力软低代码开发平台

软件测试/测试开发丨App自动化测试-弹窗异常处理

测试人

Python 软件测试 异常处理 弹窗

六个讨厌 Tailwind CSS 的理由

高端章鱼哥

CSS Tailwind

如何优雅构建自定义 Spring Boot 验证器,让你的代码更加丝滑!

这我可不懂

Spring Boot

新云原生项目Kmesh正式开源,华为云持续创新,加速行业智能化升级

华为云开源

开源 云原生

TE智库|《刻画未来的道路:中国服务机器人产业研究报告》发布

TE智库

服务机器人

2023-10-07:用go语言,给定n个二维坐标,表示在二维平面的n个点, 坐标为double类型,精度最多小数点后两位, 希望在二维平面上画一个圆,圈住其中的k个点,其他的n-k个点都要在圆外。

福大大架构师每日一题

福大大架构师每日一题

华为云CodeArts Check代码检查服务用户声音反馈集锦(8)

华为云PaaS服务小智

云计算 软件开发 华为云

带宽优化新思路:RoCE网卡聚合实现X2增长

华为云开发者联盟

开发 华为云 宽带 网卡 华为云开发者联盟

对话在行人|达梦数据库:通过数智化转型推进国产替代

用友BIP

对话在行人

GaussDB(DWS)实践案例丨MERGE场景下语句不下推引起的性能瓶颈问题

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟

【央企】一体化资金结算领先实践 统一集中 安全可控 实时高效

用友BIP

领先实践 央企资金管理

这些负载均衡都解决哪些问题?服务、网关、NGINX

王中阳Go

nginx 负载均衡 微服务 面试题 网关

天启科技联创郭志强:趟遍教育行业信数化沟坎,创业智能赛道重塑行业生态

科创人

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