写点什么

用金钱计算技术债务

  • 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:002018
用户头像

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

关注

评论

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

【LeetCode】把二叉搜索树转换为累加树Java题解

Albert

算法 LeetCode 12月日更

实用机器学习笔记十五:卷积神经网络

打工人!

深度学习 算法 学习笔记 卷积神经网络 12月日更

给弟弟的信第14封|人到年纪,自己就是屋檐

大菠萝

28天写作

带你尝鲜LiteOS 组件EasyFlash

华为云开发者联盟

LiteOS 组件 EasyFlash 嵌入式闪存库 Flash

从0开始学VUE - 踩坑记录

恒生LIGHT云社区

JavaScript Vue 前端

io_uring vs epoll ,谁在网络编程领域更胜一筹?

OpenAnolis小助手

网络编程

资本巨头纷纷入局,DAO究竟有何魔力?

旺链科技

区块链 组织 DAO

跳出问题限制来解决问题-cacerts证书库的证书丢失的解决

superman

跳出问题解决问题 命题似解决 cacerts证书库

大数据之面试篇之Hadoop/HDFS/Yarn

@零度

大数据 面试题

高性能云网关,打通云内外业务互通的任督二脉

华为云开发者联盟

网关 云平台 华为云Stack 云网关 L2BR/L3G

让数据大白于天下:GCC插件实现代码分析和安全审计

华为云开发者联盟

数据结构 安全审计 GCC 代码分析 安全分析

百度搜索中台海量数据管理的云原生和智能化实践

百度Geek说

架构 云原生 后端 百度搜索

MySQL数据库升级后如何防止性能下降

@零度

MySQL

Linux学习教程从入门到精通:条件判断和流程控制语句If

侠盗安全

Linux 运维 运维工程师 云计算架构师

带你了解几种二进制代码相似度比较技术

华为云开发者联盟

二进制 源代码 二进制代码 二进制代码比较 安全审计

红颜更胜儿郎 | 尚硅谷微信支付实战教程发布

编程江湖

前端教程 微信支付开发

养孩子到底有多难?

Tiger

28天写作

常用邮箱申请渠道【小程序专题2】

坚果

小程序 28天写作 12月日更 邮箱

0 基础实现简单的Kotlin ListView

阿策小和尚

28天写作 Android 小菜鸟 12月日更

以 Kubernetes 的方式来安装运行极狐GitLab Runner

极狐GitLab

Kubernetes runner 极狐GitLab

一文带你从零认识什么是XLA

华为云开发者联盟

深度学习 tensorflow PyTorch 深度学习编译器 XLA

Go 语言快速入门指南:第六篇 与数据为舞之映射

宇宙之一粟

哈希表 字典 映射 签约计划第二季 12月日更

尚硅谷微信支付实战教程发布!

@零度

微信支付

云服务器ECS年终特惠,老用户新购优惠低至4折

阿里云弹性计算

云服务器 年终特惠

面向WEB开发的Docker(三):安装Docker

devpoint

Docker 12月日更

Android技术分享| 【自习室】自定义View代替通知动画(完)

anyRTC开发者

android 音视频 WebRTC 视频通话 自定义view

Java 泛型通配符详解

编程江湖

JAVA开发 java编程

React进阶(六):组件生命周期

No Silver Bullet

React 生命周期管理 12月日更

一本用户体验时代的产品生存指南!

博文视点Broadview

中科柏诚本地生活赋能金融机构应对内卷危机

联营汇聚

医疗的客户体验

张老蔫

28天写作

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