Pay Down Your Technical Debt

?

Pay Down Your Technical Debt

Burkhardt Hufnagel

on Any pRojECT THAT iS in pRoduCTion (i.e., it has customers that are using it), there will come a time when a change must be made; either a bug needs fixing, or a new feature must be added. At that point there are two pos- sible choices: you can take the time needed to “do it right,” or you can take one or more “shortcuts” and try to get the change out the door sooner.

Generally, the business people (sales/marketing and customers) will want the change made as quickly as possible, while the developers and testers will be more interested in taking the time to properly design, implement, and test the change before delivering it to the customers.

As the project’s architect, you’ll have to decide which makes more sense and then convince the decision makers to take your advice; and, as with most architectural issues, there is a tradeoff involved. If you believe the system is reasonably stable, then it may make sense to go the “quick and dirty” route and get the change into production quickly. That’s fine, but you need to know that in doing so your project is incurring some “technical debt” that must be repaid later. Repayment, in this case, means going back and making the change in the way you would have if you’d had the time and resources to do it right the first time.

So why the concern over making changes properly now versus later? It’s because there’s a hidden cost to making these quick and dirty fixes. For financial debts the hidden cost is called “interest,” and most anyone with a credit card knows

?

??how expensive just paying the interest on a debt can be. For technical debt, interest takes the form of instability in the system, and increased maintenance costs due to the hacked-in changes and lack of proper design, documentation, and/or tests. And, like financial interest, regular payments must be made until the original debt is repaid.

Now that you understand a bit more about the true cost of technical debt, you might decide the price is too high and you can’t afford the cost. But when it’s a choice between having the developers get the fix out as quickly as pos- sible or taking a severe financial hit, it generally makes sense to get the fix out quickly. So, take the hit and get the change into production ASAP, but don’t stop there.

Once the fix is in production, have the developers go back and fix it properly so that it can be included in the next scheduled release. This is the equivalent of charging something on your credit card and then paying off the balance at the end of the month so you don’t get charged interest. This way you can provide the fast changes the business needs, while keeping your project out of debtor’s prison.

Burk Hufnagel has been creating positive user experiences since 1978 and is a lead software architect at LexisNexis.

时间: 2024-10-12 08:07:41

Pay Down Your Technical Debt的相关文章

Pay Your Debts

Pay Your Debts Brian Sletten Beverly Hills, California, U.S. DEBT, WhEn WEll MAnAgED, is a useful financial instrument for both ordi- nary citizens and successful organizations. It balances present insufficiencies by borrowing against future surpluse

Act with Prudence

Act with Prudence Seb Rose Whatever you undertake, act with prudence and consider the consequences. -Anon NO MATTER HOW COMFORTABLE A SCHEDULE LOOKS at the beginning of an iteration, you can't avoid being under pressure some of the time. If you find

计算机相关基础单词,转载

A abstraction layer,抽象层 access,获取,存取 acoustic coupler,声音耦合器 Active Directory,活动目录 Acyclic Dependencies Principle,非循环依赖原则(ADP) acyclic digraph,有向无环图 Adaptive Code,自适应代码 Add Parameter,添加参数 ADSL,Asymmetrical Dingital Subscriber Loop,非对称数字用户环线 affinity,绑

Rails进阶参考

https://gist.github.com/xdite/4044f3a037de029bc35c From idea to products: - Ideation, wireframes, mockups, design and development - The design to development handoff - Build views from mockups Front end frameworks - Haml - Sass - Twitter Bootstrap -

[转]配置sonar、jenkins进行持续审查

本文以CentOS操作系统为例介绍Sonar的安装配置,以及如何与Jenkins进行集成,通过pmd-cpd.checkstyle.findbugs等工具对代码进行持续审查. 一.安装配置sonar 1.Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd.checkstyle.findbugs.Jenkins.通过不同的插件对这些结果进行再加工处理,通过量化

配置sonar、jenkins进行持续审查

本文以CentOS操作系统为例介绍Sonar的安装配置,以及如何与Jenkins进行集成,通过pmd-cpd.checkstyle.findbugs等工具对代码进行持续审查. 一.安装配置sonar 1.Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd.checkstyle.findbugs.Jenkins.通过不同的插件对这些结果进行再加工处理,通过量化

spotify engineering culture part 1

原文 ,因为原视频说的太快太长, 又没有字幕,于是借助youtube,把原文听&打出来了. 中文版日后有时间再翻译. one of the big succeess factors here at Spority is our agile engineering culture. Culture trends to be invisible we don't notice it because it's there all the time, kind of like the air we br

如何实践设计原则

http://blog.csdn.net/horkychen/article/details/50486268 大家都知道遵循设计原则是开发高质量软件的重要基础,但实际运用时并不容易.Booch在<<面向对象分析与设计>>中提出了四个基础原则: 抽象   核心思想是不变性的概念.去除不关心的属性,而强化重要的属性,帮助人们思考要做什么. 封装  核心是分离关注和信息隐藏,让程序借助最少的工作进行可靠的修改. 模块化  核心思想是分而治之,各个模块应当高内聚.低耦合. 层次结构  核

技术债务管理以及Firefox/Chromium的债务评价

现在的软件开发是在遍地敏捷,人人讲唯快不破的时代,哪有人有时间思考代码质量,设计的质量? 哪个又不是从一堆代码中杀出血路来实现另一个功能?一个产品都存活不了几年,何必考虑什么可维护性? 我们追求进度的时候,总是要牺牲些东西,或是破坏了一些东西等着后面补.这就是技术债! 管理不好,债台高筑,即使不破产,也是要拆东墙,补西墙的玩平衡.现实是残酷的,但不影响我们抬头看看这个世界. 技术债务 技术债务(Technical Debt)这个词,我最早是从InfoQ关于Uber的一个访谈中了解到的,正好也在思