采访了200多位工程师,我找到管理技术债的好方法

我们的新产品,它是客户开发工作的一部分。因此,我需要深入了解软件公司之间的差异,他们的技术债务有哪些可控,还有哪些不可控。技术债务是一个感性话题,提起它,人们就会喋喋不休,而且,它比政治争议小多了。关于技术债务,你去问问本地的工程师就知道了。

在很多情况下(如果不是大多数情况的话),技术债务会不断累积,像“滚雪球”一样,直到产生严重问题。如果你解决了这些问题,生活就可以继续。或者,你接受了这样的现实。

Stripe 的一份研究发现:在一般的公司中,工程师们要花费约33% 的时间来处理技术债务。技术债务不仅打击了团队士气,而且每年给公司造成了约850 亿美元的损失。我们应该接受这样的研究结果吗?我们是不是该做点什么?

Gartner 和许多其他公司已经让我们知道,应该做点什么。他们的研究显示,积极管理技术债务的组织能将其交付速度至少提高50%

幸运的是,我确实遇到一些公司,它们的技术债务管理策略非常可靠。在这些采访中,有很多让人眼前一亮的时刻。Everlane 的工程经理 James Rosen 告诉我:

考虑一下,PM 花了多少时间来策划要开发的特性集。现在,把这个时间与工程师们为技术债务寻找商业理由的时间做个比较。分配到技术债务上的工程能力几乎为零,这还那么令人惊讶吗?

我必须承认,这不那么令人惊讶。

然而,我也遇到很多团队,他们花了大量时间和精力来管理技术债务,最终却一无所获。

我所有的研究都指向一个简单事实:成功管理技术债务的公司不仅开发出了适当流程,还将这些流程完全融入了它们日常的敏捷仪式,并且成为一种好习惯。

这些工程团队控制了他们的技术债务,他们的交付速度更快,更可预测。他们的工程师更高兴,客户也更高兴——这是双赢!

做到这种程度,真得无需付出太多。你只需要清楚——如何处理小型、中型、大型的技术债务。

如何处理小型技术债务

工程师在代码中发现这种技术债务时就可以顺手解决,而且这也在他们正进行的工作范围内。或许就是简单的重构函数或重命名变量。

Robert C. Martin 说道:”总是让代码比你发现它时更好。“

这类小工作不需要任何类型的计划,每个工程师都有权力在没有任何人批准的情况下解决这类债务。在这篇文章中,我们讨论了健康代码库所需要的一个文化特质,要确保你的工程团队具备这样的特质。如果不具备,现在就采取措施解决这个问题。

在这方面,有许多工具可以帮助你,比如 Code Climate 、 Codacy 、 Tech Debt Metrics extension for VSCode 。

如何处理中型技术债务

这种类型的技术债务可以在一个冲刺内被解决。它应该像任何特性工作一样经过同样的冲刺计划过程,并被严格地考虑。

大多数工程团队都没有做到——还记得 James Rosen 的评论吗?Rosen 说,“分配到技术债务上的工程能力几乎为零,这还那么令人惊讶吗?”

企业优先考虑为客户提供价值的工作,这是对的。况且,处理技术债务并不能做到这一点。

但技术债务却阻碍了你向客户提供价值的能力。

要明确说明这是如何发生的,请确定哪些债务妨碍了关键的主动性工作,或者在工程师生产力方面让企业损失惨重,或者是导致影响客户体验的 Bug 原因。

记录技术债务并量化其成本,这让你可以优先考虑这些债务,如果解决了这些债务,就会像新功能一样为客户带来价值。技术债务归工程组织所有。他们的责任是解决它,并最终为它提供商业理由。

遗憾的是,这正是我们现有的工具迄今未能做到的地方。

Jira 很适合管理项目,但跟踪和监控技术债务却很糟糕。
——Unqork 首席工程师 Jake Peyser

代码质量工具只有助于发现一方面的技术债务,但其他大多数就无法捕获了。

工程团队处理技术债务的时间有限,他们需要充分利用这些时间。

幸运的是,Stepsize 可以帮助他们从工作流中捕获和跟踪技术债务,这样他们就能量化其造成的业务成本,并优先处理最重要的债务。

我们建议工程团队负责人承担管理这个过程的责任。他们个人掌握其团队所拥有的代码库中的技术债务,并在需要解决债务的时候与PM 沟通。

如何处理大型技术债务

这种技术债务不可能立即解决,甚至不可能在一次冲刺中解决。我采访过的最好的公司每季度都有技术规划会议,所有的工程主管都会参加。工程经理负责重点介绍汇 给他们的大型技术债务,并为那些他们认为最重要的债务提出商业理由。

这个过程听起来很费力,但对于Stepsize 的用户来说却非常容易。他们的个人贡献者已经定期 告来自一线的债务。这些数据由每个团队和他们的领导者持续地审查和整理,他们将大量的债务——以及理解业务成本的必要数据——传递给他们的工程经理。Stepsize 甚至可以揭示每个Jira 史诗的技术债务。然后,领导层可以利用他们对公司更广泛的优先事项和愿景的理解,对大型债务进行相应地排序。

每个大型债务经过批准后,就会被安排到路线图中,就像特性工作一样。这样,工程负责人就有了他们需要的所有数据,可以监控每个技术债务项的处理进展。

小结

任何现代软件公司都应该能运用这个过程来处理小型、中型、大型的技术债务。然而,不同的公司之间有一点不同:商业目标。

妥善管理技术债务意味着解决阻碍你实现商业目标的债务。如果你的业务是建立在正常运行时间和可靠性的基础上,那就把任何会让它们处于危险中的债务偿还掉。如果开发速度是你的竞争优势,那么就消除任何浪费工程时间或增加新员工理解代码难度的债务。如果你想减少客户流失,就解决导致质量问题的债务。

明确处理每一笔债务的商业理由。因为当你这样做的时候,你就会更好、更快地交付软件——而且可以让你的工程师们开心。

原文链接:

https://blog.stepsize.com/the-perfect-process-to-manage-tech-debt/

延伸阅读:

入职阿里5年,他如何破解“技术债”?-InfoQ

因为忽视技术债,我们差点造成几十亿美元的损失-InfoQ

MySQL也要删“blacklist”,万万没想到技术术语能有沦为技术债的一天-InfoQ

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末,即可移步InfoQ官 ,获取最新资讯~

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月3日
下一篇 2020年9月3日

相关推荐