无论您是谈论金钱还是代码,“债务”往往是一个肮脏的词。这是为了充分的理由 - 正如未经监控的支出可以导致所有金融困境,软件开发实践的良好似乎臃肿的代码库似乎通过借助助剂。

但是当我们谈论技术债务时,我们真正的意思是什么?一段时间后,新的遗物开发人员倡导者Tori Wieldt.共享这个定义来自开发人员尼娜Zakharenko'Pycon 2015会话,它保持良好:“这是一系列不良决策的结果,强迫开发人员使用更多资源来实现更少的资源。”这是另一个好定义丹RadiganAtlassian的资深敏捷布道者说:“技术债务是承诺的和实际交付的之间的区别。”

你肯定可以找到很多其他定义讨论什么是技术债务,但是他们倾向于得出一个共同的结论:技术债务对于大多数软件公司来说是一个不幸的现实。

技术债务有很多原因,从草率的开发和组织的冷漠到更有生产力的原因,如支持紧急的变更。正如Tori在她的帖子中所写的那样:“在许多组织中,‘直接发布’的压力是巨大的。”

那么你如何应对那种压力和无数的其他因素,导致技术债务?据专家介绍,处理技术债务两侧:退回并阻止其在第一处发生。在这两种情况下,成功依赖于文化和过程的组合,而不仅仅是开发人员,而是整个组织。

管理和偿还技术债务

如果适当地使用杠杆,技术债务有时可以成为保持技术现实和业务目标相对和谐的关键工具。如果没有贷款,大多数人是无法买房或买车的,但那些贷款好的人都有偿还债务的计划。同样的原则也适用于软件:如果你太看重你的代码,你永远不会提交一行代码。承担合理数量的技术债务,并制定在未来偿还的计划,对整个产品和组织的成功至关重要。

“有些时候,为了企业的利益,应该忍受技术债务,”他说托德·斯蒂芬,软件工程副总裁询问申请。“我们经常看到象牙塔团队在市场窗口关闭或失去先发优势几个月后,才生产出架构和设计精美的软件。”

即使在一个重视软件质量的组织中,“技术债务有时仍然是不可避免的现实”Gady Pitaru.,首席技术官獾地图他是Relic的新客户。这一切都是关于妥善管理和最终偿还债务。以下是一些专家建议:

扫帚1.不要掩盖技术债务

假装你桌子上的一堆账单不意味着你不欠钱。最糟糕的技术债务方法是将头部埋在众所周知的沙子中。

“不应忽视技术债务,被视为禁忌,或者作为工程师的问题被视为责备,”格迪说。相反,他建议,拥抱技术债务作为整体改善系统的机会。“最好的方法是确保识别并跟踪[问题],因此他们无法隐藏。”

开发商Stuart Gilbert提供(通过中等的)减少技术债务的三种方法。首先是积极主动地在代码中识别新债务的直接方法,因为它创建了:突出显示它。斯图尔特注释有几种方式这样做;他写了papercut.特别是作为Java和Android开发者注释有问题代码的一种方式。它包含了一个绊线,如果问题没有解决,它就会让你的构建失败,使之远离生产环境。

齿轮2.实施帮助,第1部分的过程和方法

Gady和Todd都认为正确的过程和开发方法对于管理和减少累积的技术债务至关重要。(我们将看看流程和框架如何提供帮助避免技术债务。)

托德表示,发展过程或框架的正确组合应该包括做出关于你的技术债务的选择,而不是通过意外发生或更糟糕的情况,甚至不知道它正在积累。“他指出,几个这样的过程或框架(思想Scrum或Kanban)倾向于包括以下某些变化:

  • 透明化的业务,他们购买的“现金”和他们的技术债务“信用卡”。
  • 持续改进的概念,这样如果技术债务管理得不好,就会有一种正式的方式来改善事情的状态。
  • 概念““完成”的定义,团队用它来定义潜在的发布候选版本必须包括什么,不能包括什么,并得到所有相关人员的同意。
  • 强制重构的过程或框架。最典型的例子是Scrum(以及许多其他敏捷框架),它接受了这样一个事实:我们并不事先知道所有的事情,我们有时会犯错,我们需要正确的方向。
  • 在优先考虑工作时,在桌子上座位给技术团队。这有助于通过技术团队作为未来发布的一部分,任何技术债务累积累积。

过程、框架、方法——它们都能帮助你面对技术债务。在与技术债务相关的建议中,一个常见的主题是不要将新债务转移到没有人有任何动力去处理甚至监控的漏洞跟踪墓地。相反,将技术债务视为新特性或变化。

Gady说:“每当我们的一个工程师发现他们必须在质量上做出妥协,并故意在技术上跳过债务,写一个测试来按时完成用户故事时,就会在Trello中跟踪sprint。”每隔一段时间,通常在几个sprint之后,工程团队就会对所有的技术债务进行优先排序,并将最重要的债务转换为用户故事直接进入产品待办事项列表。我们总是试图在每个sprint中增加至少一到两个技术债务,这是我们相信拥有全面冲刺的信念的一部分。”

如果这听起来像是工作,那就是。但处理技术债务真的可以还清。Zoosk.该公司首席软件工程师Aideen NasiriShargh在New Relic的FutureStack16会议上分享了他的公司是如何削减2万行代码的——这是其他开发人员在“实验”或A/B测试时添加的代码——占该约会网站代码的20%。这样做使Zoosk的页面加载时间减少了15%,页面浏览量增加了10%,他说,当恋情危如重时,这是一件大事。

你可以在这里观看Aideen的整个演讲:Zoosk证明你可以追赶毕竟爱情。(Pay extra attention near the end when he shares key takeaways for engineers on how to sell the investment needed to create high-quality code. Our favorite? “Performance as a feature,” or treating application performance like any other feature you’re building.)

防止技术债务

当然,有时最好的治疗是一盎司的预防。从一开始就避免产生技术债务并不总是容易的,但通常是有利的。以下是一些建议:

金牌3.创造质量文化

围绕着高质量软件文化而建立的团队更可能关心防止技术债务的蔓延。(当债务真的发生时,他们更有可能在以后认真地偿还债务。)

“防止技术债务是拥有一种相信质量的文化的副作用,”盖迪说。“当每个人都关心创建高质量的软件时,技术债务(更)容易避免。”这种文化必须贯穿整个组织结构图,从最初级的开发人员到工程经理及以上。它应该渗透到招聘、工作流程和流程、绩效激励等等。

当这种文化随着时间的推移培养时,Gady笔记,然后“任何东西,但优质的软件最终变得不可接受,而且导致技术债务被预防。”

图书4.教育非技术利益相关者了解技术债务的现实

任何开发者都知道,前面提到的“现在就发布”的压力在组织内部是非常真实的,这通常是当补丁解决方案被放到代码库信用卡上的时候。亚博直播平台托德说,与非技术利益相关者就技术债务进行公开、诚实的对话至关重要,他补充说——就像个人做出家庭金融选择一样——不同的组织将承受不同的债务负担或风险水平。

不管你公司的前景如何,教育你的利益相关者什么是技术债务,为什么他们需要关注它。而且要用他们能理解的术语来表达:“用特定于您的特定业务的业务术语来传达技术债务的业务影响,”Todd建议道。

有一种大多数企业都能理解的语言:金钱。将技术债务的成本转化为基本条款。你甚至可以做a成本效益分析技术债务。

齿轮5.实现有帮助的过程和方法,第2部分

Gady分享了有助于建立质量文化并防止累施的技术债务的过程和实践的几个例子。这些包括需要准确,自动化的测试,每个代码中的每个更改,创建和遵循一组代码标准,执行代码审查和配对编程,并在明确定义的QA过程之后。

“我们不断努力将这些做法与我们的Scrum流程和日常节省一起,”他说。“它需要坚持不懈,创造力和一个改善但根据我们的经验,好处总是大于负面影响或成本。”

记住,你可以的!处理技术债务对软件开发人员来说可能不是一件有趣的事,但它是工作的重要组成部分。如果您能够在找到将代码清理融入流程的方法的同时传达管理债务的重要性,您可能会惊讶于您可以减轻多少负担。

凯文·凯西(Kevin Casey)为各种出版物和公司撰写技术和商业方面的文章。他获得了美国商业出版物编辑协会颁发的阿兹比奖(Azbee Award),获奖作品是《信息周刊》(InformationWeek)的故事《你年纪太大了吗?》他还曾获得过小企业影响者奖(Small Business Influencer Awards)的社区选择奖。查看贴子

有兴趣为New Relic博客写作吗?亚搏体育登入网送我们一个球场!