技术债务偿还计划

技术债务偿还计划

ID:30858097

大小:78.01 KB

页数:4页

时间:2019-01-03

技术债务偿还计划_第1页
技术债务偿还计划_第2页
技术债务偿还计划_第3页
技术债务偿还计划_第4页
资源描述:

《技术债务偿还计划》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、什么是技术债务?许多团队都受技术债务困扰,不过,很少有团队能真正地设计一个计划从中挣脱出来。为了更好的理解如何才能摆脱债务,我们首先要正确地理解什么是技术债务。技术债务是由团队为了短期的项冃利益故意做了欠佳的技术决策而招致的。例如,为了使一个产品更快的投放市场,团队可能不会像面对一段棘手的代码那样,编写深入的自动化测试。或者,他们可能会决定基于一个很快就会过时的框架构建项目,而不是花钱购买那个框架的一个经过升级、服务支持更好的版本。不管决策是什么,关键是要认识到,真正的技术债务是团队为了获得短期利益故意

2、做了会招致长远债务的决策。这意味着,许多我们通常归咎于“技术债务〃的事情实际上根本就不是债务。例如,随着系统使用年限增加,团队会无法一肓保持最佳编码实践,在那种悄况下岀现"位衰减(bitdot)w是正常的,不是债务。或者,团队自愿做出的技术决策在随后实现时竟然发现是不正确的,这也不是技术债务。在任何一•种悄况下,团队都不是为了获得短期利益而故意做了欠佳的长远决策。这种差别很重要,因为我们只有在究竟是什么组成了技术债务的问题上达成一致,我们才能针•对如何减少技术债务做出最佳决策。考虑我们在无意间引入代码库

3、的债务所带来的彩响也很重要。不过,由于这类债务不是有意承担的,所以我们无法计划如何提前解决它。在这些情况下,我们一定要在发现的时候优先考虑并解决这种债务.・••・•就像团队解决新发现的Bug所做的那样。一个金融比喻我们经常将技术债务与金融债务进行对比。但是,这是一个对等的类比吗?比如,如果不首先确定何时以及如何偿还,银行真会愿意借给我们钱吗?很可能不愿意。既然不首先描述如何偿还债务,我们就确实无法借到金融资木,那么我们也就不应该以这种方式对待技术资本。这个金融比喻确实非常有效,因此,我们将对它进行更充分

4、的讨论。偿还计划正如金融债务一•样,在谈论技术债务吋,我们需要确定两件事:如何偿还债务和何吋偿还债务。如何偿还债务让我们以前文提到的放弃自动化测试为例。如果为了一项功能能够尽快投入生产环境,我们的团队口愿决定放弃为棘手的代码段编写口动化测试,那么我们需耍确定我们将如何纠正那块债务。在这种情况下,我们只需要表明,我们会在将来的某个时点冋到这段代码,然后添加测试。不过,只表明“我们将在稍后添加测试''并没有合理地解决这个问题。为了帮助干系人真正地了解我们的决策对招致技术债务会有多大的影响,我们需耍尽我们最大

5、的能力准确地说明等到后來添加自动化测试的影响。比如,我们应该指明需要添加测试的代码段。我们也需耍明确指出,在已有的代码段上增加自动测试比在代码段创建时直接添加测试总是难度更大成木更高。最后这点很重要,因为它明确指出,将这项工作推迟到后来完成,我们实际上要比现在肓接完成花更多的钱来做这项工作。换何话说,.・・.・.债务是会产生利息的。在讨论完偿还方式之后,团队及-其干系人可能会意识到,这个问题要比他们是否应该在编写代码时编写口动化测试更复杂。实际上,他们町能会发现,在两个极端Z间,他们确实有多种更适合報个

6、项目的选择。比如,他们可能会决定,使用类似“圈复杂度(CyclomaticComplexitv)〃这样的指标识别出新特性屮最反杂的部分是非常有意义的,并立即添加测试覆盖那些方面,而把简单一些的方面推迟。或者,他们可能会决定,像单元测试这种更简单但同时价值也更低的自动化测试类型可以立即添加,但像自动化用户验收测试这种难度更高的自动化测试可以推迟到将來的冲刺中。不管是哪种决定,团队及其干系人都不大可能做岀,因为他们没有在第一时间对技术债务进行讨论。何时偿还债务除了指明如何偿还债务外,我们还希望指明何吋偿还债

7、务。通常,债务越早偿还越好。出于这个原因,最好是在债务产生的时候安排债务偿还工作,以便更好地传达承担债务的影响。比如,如果你的团队遵照一个由冲刺构成的时间表,那么你町能会选择将工作安排到F一个冲刺,或者,在最坏的情况下也不超过儿个未來的冲刺。通常,团队都会冇最美好的愿望,就是在债务出现的时候偿还,但他们只是似乎从来都没有时间那样做。当你要消除债务的时候,在口历上记下最后偿还期限,并坚持按时完成。如果违约会怎么样?对于我们的金融比喻,最后一部分是弄清楚,如果我们选择拖欠债务,会出现什么后果。在金融领域,如

8、果我从来不偿还汽车贷款,那银行会开走我的汽车。拖欠技术债务的示果同样应该明确指出。让我们继续自动化测试的例子,如果团队决定不偿还技术债务,那么以现有的未经测试的功能为基础构建新功能只会使难度越來越大成本越來越高。在生产环境中,我们可能会看到更多的Bug报告,这意味着,客户町能会对我们的产品质量产生不好的印彖。我们快速响应市场变化的能力也会被削弱,因为我们产殆的很人一部分要么很难快速修改,要么快速修改风险太大。上述各点都需耍向于系人讲清楚,帮

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。