写点什么

用金钱计算技术债务

  • 2010-03-31
  • 本文字数:1206 字

    阅读完需:约 4 分钟

很多敏捷团队都能认识到技术债务相关的罪状。就跟财务上的负债一样,技术债务也会产生利息。要支付这些利息,就要付出额外努力维护和改进正在“腐化”或基础并不牢固的软件。诸多敏捷人士推荐尽早偿还技术债务。然而,大多数敏捷团队无法成功以金钱的方式计算技术债务,因此无法得到有价值的深入理解和思考。

一旦有了与技术债务直接相关的金钱数目,关于软件的多种复杂而麻烦的问题就能得以回答。 Israel Gat 提出:除非对于技术债务有一个量化的账单,否则团队都会忽略其重要性,软件会因此而逐渐腐化,无法补救

当债务达到一定程度之后,就没有什么好的补救方法了。代码质量非常糟糕,这时要修复任何部分都会造成伤害,不管修复哪里似乎都会破坏其他某些部分代码。

他还提到了以金钱方式计算技术债务的需要,并使用收支平衡表展示出其作为债务的一面

在 Israel 看来,以金钱方式计算技术债务有如下好处:

  1. 能够告诉团队何时停止开发,开始重构——当技术债务达到一定程度后(比如每行代码 25 美分),就要暂停开发新功能。团队进入重构过程,除非债务得以偿还,否则不加入任何功能。
  2. 软件的客户对于软件的风险得以了解——Israel 认为这符合敏捷宣言中的一项:“客户协作胜过合同谈判”。
  3. 风险投资者能够以此做出投资决策——VC 们可以以此判断向某项软件产品中投入资金是否理智。
  4. 有助于判断软件的支付能力——软件在其生命周期的演化过程中,与之伴随有开发和维护活动,以金钱方式计算技术债务能够有助于回答与这些活动相关的支付能力问题。
  5. 有助于人们在重构和重写这二者之间做出选择——将技术债务与其他重要因素联合起来,能帮助人们判断是否要重新开始。
  6. 有助于定义限额——一旦金钱上的限额定义出来之后,就能帮助 CxO 等利益干系人做出成熟的决策。

那么,有哪些有效的方式可以用来将技术债务以金钱衡量呢?

使用 Sonar 中的技术债务插件是一种方式。在 Sonar 的实时站点上,已经有了对于多个项目的技术债务分析。要计算成本,首先要使用下面的方式找出债务:

  • 债务(以人天计算)={修复重复部分的成本+修复违规的成本+为公共 API 做注释的成本+修复未发现的复杂性的成本+带入低于阈值复杂性的成本+在包的层面上切断生命周期的成本}

在上面各种违规情况中,对于每个小时的成本有个默认值。比如:

  • 修复重复部分的成本={修复 1 个部分的成本 * 重复的部分}

现在,比如默认的“修复重复部分的成本”为 2 个小时。假设每个开发人员每天的成本是 500 美元,一天有 8 个小时,那么修复一个重复部分就要花费 125 美元。与之类似,就可以做出针对各种违规情况的金钱分析,并可以计算出最终的技术债务总和。

因此,以金钱方式计算技术债务能够让人们深入理解与软件相关的潜在成本。对于所有希望监控技术债务成本并将其保持在一定限额内的敏捷团队来说,这很关键。这么做有助于创造一个易于维护和改进的软件产品,同时让 VC 有信心投资,让客户有信心买单。

查看英文原文: Monetizing the Technical Dept

2010-03-31 00:001836
用户头像

发布了 479 篇内容, 共 157.4 次阅读, 收获喜欢 49 次。

关注

评论

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

软件测试/测试开发/全日制 | Python全栈开发中的自动化部署与持续集成实践

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |Python全栈开发:利用OAuth与JWT实现身份验证

测吧(北京)科技有限公司

测试

面向企业级应用复杂性的低代码开发平台架构

快乐非自愿限量之名

低代码 企业开发 企业开发系统

12 月 NFT 市场动态:强劲增长塑造年终趋势

Footprint Analytics

区块链 加密货币 NFT

智能监控:业务监控新选择,效率提升新动力

观测云

智能监控

SQL 解析与执行流程

KaiwuDB

数据库 sql

软件测试/测试开发/全日制 |Python全栈开发中的缓存技术应用与性能优化

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |从Git到Jenkins:Python全栈开发中的版本控制与自动化

测吧(北京)科技有限公司

测试

每个程序员都该学习的5种开发语言

快乐非自愿限量之名

Java 程序员

关于JAVA的常用工具类问题

伤感汤姆布利柏

数字新生态:低代码开发的实践应用

不在线第一只蜗牛

低代码 数字化 数字发展

AI新纪元:AI原生企业崛起

九章云极DataCanvas

基于Tosca和Terraform的多云资源编排探索

鲸品堂

工具 运营商 编排调度

软件测试/测试开发/全日制 | Python全栈开发:学习使用Nginx配置Web服务器

测吧(北京)科技有限公司

测试

让数据要素合规高效流通!海南这么干!

天翼云开发者社区

云计算 大数据

软件测试开发/全日制/测试管理丨持续集成、持续交付、持续部署

测试人

软件测试 持续集成 自动化测试 持续交付 测试开发

当浏览器能够自动隐藏用户IP地址,“IP数据库”的出路在哪里?

郑州埃文科技

IP

软件测试/测试开发/全日制 | 理解深度学习在图像识别中的应用

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发:安全防范与Web应用的漏洞预防

测吧(北京)科技有限公司

测试

云数据库与Web网站:构建高效、可扩展的网络应用

天翼云开发者社区

数据库 云计算 大数据

列式云数据库与关系型云数据库:区别、优缺点与选择

天翼云开发者社区

数据库 云计算 关系型数据库

软件测试开发/全日制/测试管理丨测试左移体系

测试人

软件测试

2024效果图渲染用什么配置的电脑?效果图网络渲染

Renderbus瑞云渲染农场

云渲染 渲染农场 Renderbus瑞云渲染 效果图渲染

物联专栏丨物模型,设备对话基础

inBuilder低代码平台

开源 低代码 物联网

软件测试/测试开发/全日制 | Python全栈开发实战:构建安全可靠的Web应用

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发:构建基于RESTful API的微服务

测吧(北京)科技有限公司

测试

基于领域驱动设计的低代码平台的设计与实现

EquatorCoco

2024第十届上海国际智慧工地展览会

AIOTE智博会

智慧工地展览会 智慧工地展会 智慧工地展

软件测试/测试开发/全日制 | 深入学习React:Python全栈开发中的前端框架精要

测吧(北京)科技有限公司

测试

详解数据库分片,大幅提升Spring Boot查询MySQL性能

高端章鱼哥

MySQL 微服务 Spring Boot

用金钱计算技术债务_研发效能_Vikas Hazrati_InfoQ精选文章