Hi!请登陆

采访200多个工程师后,我总结出管理技术债务的完美过程

2020-10-29 38 10/29

全文共2642字,预计学习时长7分钟

图源:unsplash

过去的六个月里,我学习了最好的软件工程师和领导者是如何管理技术债务的。为了了解迅速发展的软件公司是如何管理技术债务的,我采访了200多个专家,发现了许多公司所缺失的内容,并将所学编译成简单却强大的框架分享给你。

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

技术债务是个热议话题,引得人们滔滔不绝。只要问问你当地的工程师有关技术债的话题,你就会发现这一点。

管理技术债的成本和益处

在许多案例中,技术债务会不断累积,直到产生不可忽视的问题。Stripe的研究结果表明:在一般的公司,工程师花费大约33%的时间处理技术债务,这不仅打击团队的士气,并且每年花费公司大概850亿美元。我们不应该做点什么吗?

Gartner和许多人都已经表示我们应该有所行动。他们的研究表明积极管理技术债的公司上市速度至少快50%,我没有遇到过不想将上市速度提升50%的软件公司。

幸运的是,我遇到了有可靠技术债务管理战略的公司。这个访谈中有很多灵光闪现的时刻。其中最喜欢的时刻是,Everlane技术经理James Rosen告诉我:“想想PM花了多少时间从事功能策划。与工程师花在技术债务上的时间和精力进行比较,工程师几乎没有把能力用在技术债务上,这是不是很令人吃惊?”

我必须说不是这样的,但我也遇到过许多在管理技术债务上花了大量时间和精力却没有什么成效的团队。

所有的研究都点明一个简单的事实:成功管理技术债务的公司已经开发出了能够完全融入它们日常Agile ceremony的合适流程,并已成为习惯。这些工程团队控制着技术债务。它们的上市更快、更可预见。它们的工程师和顾客都更愉悦——所有人都是赢家。

要达到这个程度真的不需花费太多。你只需要清楚你想怎么处理小、中、大三个层级的技术债务。

图源:unsplash

如何处理小型债务

工程师在代码里发现这个类型的技术债务后立刻就可以处理,整个过程也在他们的工作访问范围内,这和代码重构或变量重命名一样简单。请试着遵循Robert C. Martin的童子军规则(Boy Scout rule):“让代码比你发现时更好。”

这些细小的工作不需要任何策划。每个工程师都应授予不需别人批准就能处理这种债务的权力。

这方面有很多工具能帮助你。VSCode的技术债矩阵拓展会直接在你的编辑器中显示代码质量评分和故障,其它像Code Climate或Codacy的代码质量工具可以在CI管道和代码审查过程中应用,也有很好的效果。

如何处理中型债务

该类型的技术债务可以在短期内处理。它应与性能方面的工作一起纳入短期计划过程并同样被严肃对待,这是大多数技术团队所欠缺的。请记住James Rosen的话:“工程师几乎没有把能力用在技术债务上。”

企业把给客户创造价值的工作放在首位是正确的。初看之下,规避技术债务并不能给客户创造价值。但技术债务阻碍了你为客户创造价值的能力。不处理技术债务,它会妨碍重要新方案的执行,或是让企业在工程生产力方面耗费巨大,又或是导致影响顾客体验的故障。

记录技术债务并将其消耗量化会让你将处理债务置于首位,它会像新功能一样为客户创造价值。工程组织控制技术债。处理债务并最终为其制定商业案例是其职责。

遗憾的是,这是现有的工具所不能做到的。Unqork首席工程师Jake Peyser说:“Jira在管理项目方面是个很好的平台,但是它在追踪和监控技术债务方面很差劲。”代码质量工具体现技术债务的一个方面是有用的,但是不能捕捉到其余大部分的信息。

这就是新产品发挥作用的地方。技术团队处理技术债务的时间有限,他们需要让付出的时间有所回报。Stepsize帮助他们从工作流中捕捉和追踪技术债务,这样就可以量化技术债务对企业的花费,最终将最重要的债务置于首位。

图源:unsplash

每个工程师可以直接从工作流(包括编辑器、拉取请求和Slack)中报告技术债务及其花销。这些报告会汇总在Stepsize网站的技术债务条目中,在代码库进行描述和记录。

最终,每个Jira ticket都会附带相关的技术债务条目,这些条目经过处理能更高效地为客户创造价值。从不被置于优先地位的重构代码ticket不会再出现了——技术债务和企业价值融为了一体。

建议技术团队的领导负责管理整个过程。他们能够控制自己团队代码库中的技术债务,并在处理债务时配合PM的工作。

大型债务该如何处理

这种技术债务无法在短期内处理。我访谈中最好的公司每个季度举行一场所有技术领导参加的技术策划会议。技术经理的任务是指出报告给他们的大型技术债务,并给其中最重要的债务制定商业方案。

这个听起来很费劲的过程对Stepsize用户来说很容易。每个工作人员已经定期从前线汇报债务,数据由每个团队及其领导持续修订和整理,团队的领导将大型债务和了解企业的花销所必需的数据一起转交给技术经理。Stepsize甚至可以在每个用户的Jira epic中显示技术债务,领导者可以根据对企业优先事务和愿景的理解相应地给大型债务排序。

一旦一项大型债务被批准,它就会像性能工作一样,被安排进路线图。技术领导者就拥有了监察每个技术债务项目进程所需的所有数据。

图源:unsplash

任何现代的软件公司都应该运用这个过程来处理小、中、大类型的技术债务。但是每个公司之间会有一个不同点:企业目标。

适当管理技术债务意味着处理阻碍实现企业目标的债务。如果你的企业建立在正常运行时间和可靠性的基础之上,请消除任何可能使其面临风险的债务;如果速度是你的竞争优势,就规避浪费工程时间或让新员工难以理解代码的债务;如果你想减少客户流失,就处理债务导致的质量问题。

请明确处理每一条债务的业务案例。这么做帮你能够更快地发布更好的软件。

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

相关推荐