技术债务管理_管理技术债务的完美过程

技术债务管理

重点(Top highlight)

Over the last six months, I’ve learned how the best software engineers and leaders manage technical debt. I’ve interviewed more than 200 experts to understand how tech debt is handled at growing software companies. I’ve discovered what many companies are missing and compiled my learnings into a simple but powerful framework to share with you.

在过去的六个月中,我了解了最好的软件工程师和领导者如何管理技术债务。 我采访了200多位专家,以了解成长中的软件公司如何处理技术债务。 我发现了许多公司所缺少的东西,并将我的学习成果整理成一个简单但功能强大的框架,可以与您分享。

As part of the customer-development work for our new Stepsize product, I needed to understand the differences between software companies that have their tech debt under control and those that don’t.

作为我们新的Stepsize产品的客户开发工作的一部分,我需要了解控制技术债务的软件公司与不控制技术债务的软件公司之间的区别。

Tech debt is an emotional topic, and it gets people talking like nothing else — and it’s a lot less controversial than politics. Just ask your local engineer about tech debt, and you’ll see. But you might want to clear your schedule first.

技术债务是一个令人感动的话题,它使人们像其他人一样说话—与政治相比,它的争议要小得多。 只需向您当地的工程师询问技术债务,您就会看到。 但是,您可能需要先清除时间表。

管理技术债务的成本和收益 (The Costs and Benefits of Managing Tech Debt)

In many — if not most — cases, tech debt accumulates until it creates problems that are impossible to ignore. So you fix these problems and move on with your life. And you accept that maybe that’s just how it’s done.

在很多(如果不是大多数)情况下,技术债务会不断累积,直到产生无法忽视的问题。 因此,您可以解决这些问题并继续生活。 您接受的也许就是这样。

But should we really accept the results of Stripe’s research, which find that at the average company, “engineers spend ~33% of their time dealing with technical debt, which crushes team morale and costs companies ~$85 Billion/year”? Shouldn’t we do something?

但是我们真的应该接受条纹的研究,这发现在一般公司中,“工程师花费约33%的时间来处理技术债务,这使团队士气低落,并使公司每年损失约850亿美元”? 我们不应该做点什么吗?

Gartner and many others have already shown us we should. Their research has revealed that organisations who actively manage tech debt will ship at least 50% faster.

Gartner和许多其他人已经向我们展示了我们应该这样做。 他们的研究表明,积极管理技术债务的组织将以至少50%的速度交付。

I don’t know a single software company that doesn’t want to ship 50% faster.

我不知道一家软件公司不希望将交付速度提高50%。

Luckily, I did meet companies with solid tech debt–management strategies. There were many light-bulb moments in these interviews. One of my favourites was when James Rosen, engineering manager at Everlane, told me:

幸运的是,我确实遇到了拥有可靠技术债务管理策略的公司。 这些采访中有很多灯泡时刻。 我的最爱之一是Everlane的工程经理James Rosen告诉我:

“Consider how much time PMs spend curating the set of features to work on. Now compare this to the amount of time and effort engineers dedicate to making the business case for tech debt. Is it that surprising that close to zero engineering capacity gets allocated to tech debt?”

“考虑一下PM会花多少时间来整理要使用的功能集。 现在,将其与工程师致力于为技术债务制定业务案例所需的时间和精力进行比较。 将近零的工程能力分配给技术债务是否令人惊讶?”

I must admit that nope, it isn’t.

我必须承认不,不是。

However, I also met plenty of teams that spent a lot of time and effort managing tech debt and still went nowhere.

但是,我也遇到了很多团队,他们花了很多时间和精力来管理技术债务,但仍然无济于事。

All my research points to a simple fact: Companies that successfully manage tech debt have developed appropriate processes that are fully integrated into their usual Agile ceremonies and have become habits.

我所有的研究都指向一个简单的事实:成功管理技术债务的公司已经开发了适当的流程,这些流程已完全集成到其通常的敏捷仪式中并已成为习惯。

These engineering teams are in control of their tech debt. They ship faster and more predictably. Their engineers are happier, and their customers are happier — heck, they’re all winning.

这些工程团队控制着他们的技术债务。 他们的出货速度更快,更可预测。 他们的工程师更快乐,客户也更快乐-哎呀,他们都赢了。

It really doesn’t take much to get there. You just need to be clear on how you’ll deal with small, medium, and large pieces of tech debt.

到达那里真的不需要很多。 您只需要弄清楚如何处理大中小型技术债务。

如何处理小额债务 (How to Handle Small Pieces of Debt)

This is the type of tech debt that can be addressed as soon as the engineer spots it in the code and it’s within the scope of the ticket they’re working on. It might be something as simple as the refactoring of a function or renaming some variable. Try to follow Robert C. Martin’s Boy Scout rule:

这种技术债务可以在工程师将其发现在代码中后立即解决,并且属于他们正在研究的范围之内。 它可能像重构函数或重命名某些变量一样简单。 尝试遵循罗伯特·C·马丁(Robert C. Martin)的童子军规则

“Always leave the code better than you found it.”

“总是留下比您发现的更好的代码。”

These small jobs don’t require any kind of planning, and every engineer should feel empowered to fix this kind of debt without anyone else’s approval. We’ve already written about the one cultural characteristic you need for a healthy codebase, but ensure it exists in your engineering team. If it doesn’t, take measures to address it now.

这些小工作不需要任何计划,并且每个工程师都应该感到无权经过任何其他人的同意来解决此类债务。 我们已经写了健康的代码库所需的一种文化特征,但请确保您的工程团队中存在。 如果没有,请采取措施立即解决

There are many tools to help you on this front. Our very own Tech Debt Metrics extension for VSCode will give a code-quality score and breakdown, directly in your editor. Other code-quality tools, like Code Climate or Codacy, which you can include in your CI pipeline and code-review process, are great for this too.

在这方面有很多工具可以帮助您。 我们自己的VSCode技术债务指标扩展将直接在您的编辑器中给出代码质量得分和细分。 您可以在CI管道和代码审查过程中包括的其他代码质量工具(例如Code ClimateCodacy )也非常有用

如何处理中型债务 (How to handle medium-sized debt)

This type of tech debt can be addressed within a sprint. It should go through the same sprint-planning process as any feature work and be considered just as rigorously. That’s where most engineering teams fail — remember James Rosen’s comment:

这种技术债务可以在sprint中解决。 它应该经历与任何功能工作相同的sprint计划过程,并应被严格考虑。 这就是大多数工程团队失败的地方-记住James Rosen的评论:

“Is it that surprising that close to zero engineering capacity gets allocated to tech debt?”

“将近零的工程能力分配给技术债务是否令人惊讶?”

Businesses rightly prioritise work that delivers value to the customer. And at first glance, getting rid of tech debt doesn’t do that.

企业正确地优先考虑为客户提供价值的工作。 乍一看,摆脱科技债务并不能解决问题。

But tech debt hinders your capacity to deliver value to the customer.

但是技术债务阻碍了您为客户提供价值的能力。

To explicitly demonstrate how this occurs, identify debt that gets in the way of crucial initiatives or costs the business dearly in terms of engineer productivity or is the cause of bugs that impact the customer experience.

为了明确说明这种情况是如何发生的,请确定债务,这些债务会阻碍关键计划的发展,或者在工程师的生产率方面给企业造成沉重的成本,或者是导致错误影响客户体验的原因。

Documenting tech debt and quantifying its cost allows you to prioritise the debt that, if addressed, will deliver value to customers — just like new features do. The engineering organisation owns tech debt. It’s their responsibility to address it and ultimately make the business case for it.

记录技术债务并量化其成本,您可以对债务进行优先排序,如果解决了这些债务,债务将为客户带来价值,就像新功能一样。 该工程组织拥有技术债务。 解决问题并最终为其制定业务案例是他们的责任。

Unfortunately, this is where our current tools have so far failed us.

不幸的是,这是迄今为止我们当前的工具使我们失败的地方。

“Jira is a great place to manage projects but a terrible place to track and monitor tech debt.”

“吉拉(Jira)是管理项目的好地方,但跟踪和监视技术债务的地方却很糟糕。”

— Jake Peyser, lead engineer at Unqork

— Unqork的首席工程师Jake Peyser

Code-quality tools are helpful at surfacing one facet of tech debt, but they don’t catch most of the others.

代码质量工具有助于消除技术债务的一个方面,但它们并不能解决其他大多数问题

Fortunately, that’s exactly what our new product is for. Engineering teams have limited time to deal with tech debt, and they need to make that time count. Stepsize helps them capture and track tech debt from their workflow, so they can quantify its cost to the business and ultimately prioritise the most important debt.

幸运的是,这正是我们的新产品所针对的。 工程团队处理技术债务的时间有限,因此需要计算时间。 Stepsize帮助他们从工作流中捕获和跟踪技术债务,因此他们可以量化其对业务的成本并最终确定最重要的债务的优先级。

Each engineer can report tech debt and its cost directly from their workflow (including editors, pull requests, and Slack). These reports all go to the Stepsize website where they are collated into tech debt items, describing and documenting issues in the code base. Finally, each Jira ticket gets decorated with relevant tech debt items that may be addressed to more effectively deliver value to customers. No more lonely refactoring tickets that are never prioritised — tech debt and business value become truly aligned.

每个工程师都可以直接从工作流中报告技术债务及其成本(包括编辑,提取请求和Slack)。 这些报告都将转到Stepsize网站,在该网站上将它们整理为技术债务项目,以描述和记录代码库中的问题。 最后,每张Jira机票都装饰有相关的技术债务项目,可以解决这些问题,以便更有效地为客户带来价值。 不再有从未被优先考虑的孤独重构票证-技术债务和商业价值真正实现了统一。

We advise that engineering team leads assume responsibility for managing this process. They’re the right individuals to stay on top of tech debt in those parts of the code base their team owns and to interface with the PM when it’s time to address the debt.

我们建议工程团队负责人负责管理此过程。 他们是在团队所拥有的代码库的那些部分中保持技术债务之上,并在需要解决债务时与PM交互的合适人选。

应处理多少大笔债务 (How Large Pieces of Debt Should Be Handled)

This is the tech debt that can’t be addressed immediately or even in one sprint. The best companies I’ve interviewed have quarterly technical-planning sessions in which all engineering leaders participate. Engineering managers are tasked with highlighting the large pieces of tech debt reported to them and making a business case for those they judge to be the most important.

这是无法立即解决甚至一次冲刺都无法解决的技术债务。 我采访过的最好的公司每季度举行一次技术规划会议,所有工程负责人都参加。 工程经理的任务是突出显示向他们报告的大量技术债务,并为他们认为最重要的人提供商业案例。

This process, which sounds laborious, becomes very easy for Stepsize users. Their individual contributors have already been reporting debt from the front lines regularly. This data is consistently reviewed and groomed by each team and their leaders, who relay the large pieces of debt — along with the data necessary to understand what they’ve cost the business — to their engineering managers. Stepsize even surfaces tech debt for each of your Jira epics. Leadership can then use their understanding of the company’s broader priorities and vision to sequence large pieces of debt accordingly.

对于Stepsize用户,听起来很麻烦的这个过程变得非常容易。 他们的个人捐助者已经定期报告前线的债务。 每个团队及其领导者均会不断审查和整理此数据,他们会将巨额债务以及了解其业务成本的必要数据转发给工程经理。 Stepsize甚至还为您的每个Jira史诗带来了技术债务。 然后,领导层可以利用他们对公司更广泛的优先事项和愿景的理解来相应地安排大笔债务。

Once each large piece of debt is approved, it can be scheduled onto the roadmap, just like feature work. Engineering leadership then has all the data they need to monitor progress on each tech debt project.

一旦批准了每笔大笔债务,就可以将其安排在路线图上,就像要素工作一样。 然后,工程主管将拥有他们监视每个技术债务项目进度所需的所有数据。

带走 (Takeaway)

Any modern software company should be able to apply this process for small, medium, and large pieces of tech debt. However, one thing will differ between each company: business objectives.

任何现代软件公司都应能够将此过程应用于大中小型技术债务。 但是,每个公司之间的一件事是不同的:业务目标。

Managing tech debt properly means addressing the debt that gets in the way of your business objectives. If your business is built on uptime and reliability, nuke any debt that puts them at risk. If velocity is your competitive advantage, get rid of any debt that wastes engineering time or makes it hard for new hires to understand the code. If you want to reduce customer churn, address the debt-causing quality issues.

适当管理技术债务意味着解决阻碍您实现业务目标的债务。 如果您的业务建立在正常运行时间和可靠性的基础上,请消除任何可能使他们面临风险的债务。 如果速度是您的竞争优势,那就摆脱浪费工程时间或使新员工难以理解代码的任何债务。 如果要减少客户流失,请解决引起债务的质量问题。

Be clear about the business case for addressing each piece of debt. Because when you are, you’ll ship better software faster — and you’ll keep your engineers happy.

明确解决每个债务的业务案例。 因为当您身在其中时,您会更快地发布更好的软件-并使工程师满意。

翻译自: https://medium.com/better-programming/the-perfect-process-to-manage-technical-debt-ac4b0ece746b

技术债务管理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值