成长中的软件公司如何处理技术债务?为了弄明白这个问题,我采访了200多位专家,终于了解到最优秀的软件工程师和领导者是如何管理技术债务的。我们的新产品是我们客户开发工作的一部分。因此,我需要深入了解软件公司之间的差异,哪些是他们可控的技术债务,哪些不是。技术债务是一个情绪化的话题,一提到它,人们就议论纷纷。关于技术债,你问问公司的工程师就行了。在许多情况下(如果不是大多数情况的话),技术债务会像“滚雪球”一样不断累积,直到成为一个严重的问题。Stripe的一项研究发现,一般公司的工程师花费大约33%的时间来处理技术债务。技术债务不仅会打击团队士气,而且估计每年给公司造成850亿美元的损失。看到这种情况,是不是应该做点什么?https://stripe.com/files/reports/the-developer-coefficient.pdfGartner和许多其他人让我们知道应该做些什么。他们的研究表明,积极管理技术债务的组织将交付速度提高了至少50%。幸运的是,我确实遇到过具有可靠技术债务管理策略的公司。这些采访中有很多引人注目的时刻。Everlane的工程经理JamesRosen告诉我:考虑PM花费多少时间来策划要开发的功能集。现在,将这段时间与工程师为技术债务找到业务理由的时间进行比较。几乎为零的工程能力分配给技术债务是否令人惊讶?我不得不承认,这并不奇怪。然而,我也遇到过很多团队,他们花费了大量的时间和精力来管理技术债务,但最终一无所获。我的所有研究都指向一个简单的事实:成功管理技术债务的公司不仅制定了适当的流程,而且将这些流程作为一种好习惯完全整合到他们的日常敏捷实践中。这些工程团队控制着他们的技术债务,因此他们的交付速度更快、更可预测。结果,不仅他们的工程师很高兴,而且他们的客户也很高兴-双赢!为此,您实际上不需要付出太多。你只需要清楚——如何处理小型、中型、大型技术债务。1.如何处理小的技术债工程师在代码中发现这种技术债很容易解决,而且也在他们正在进行的工作范围内。也许,它就像重构函数或重命名变量一样简单。RobertC.Martin说,“留下的代码总是比你找到它时更好。”这些小工作不需要任何计划,每个工程师都有权力在没有任何人批准的情况下解决这种债务。在本文中,我们讨论了健康代码库所需的一种文化特征,并确保您的工程团队拥有它。如果没有,请立即采取措施解决问题。https://blog.stepsize.com/the-one-cultural-characteristic-you-need-for-a-healthy-codebase/有很多工具可以在这方面为您提供帮助,例如CodeClimate、Codacy、TechVSCode的债务指标扩展。2、如何处理中等规模的技术债这种技术债可以在一个sprint内解决。它应该经过与任何功能工作相同的冲刺计划过程,并得到严格考虑。大多数工程团队都没有成功——还记得JamesRosen的评论吗?罗森说,“分配给技术债务的工程能力几乎为零,这是否令人惊讶?”企业优先考虑为客户创造价值的工作是正确的。而且,处理技术债务并不能解决问题。但技术债务会阻碍您向客户交付价值的能力。要阐明这是如何发生的,请确定哪些债务阻碍了关键的主动工作,或者在工程师生产力方面给企业带来了沉重的成本,或者导致了影响客户体验的错误。记录技术债务并量化其成本可以让您确定债务的优先级,如果这些债务得到解决,将为客户带来价值,例如新功能。技术债务归工程组织所有。他们有责任修复它并最终为它制定一个商业案例。不幸的是,这正是我们现有工具迄今为止未能做到的。Jira非常适合管理项目,但不适合跟踪和监控技术债务。—JakePeyser,首席工程师,UnqorkCode质量工具只能帮助找到技术债务的一个方面,但其余大部分未被捕获。https://blog.stepsize.com/7-examples-of-sneaky-tech-debt-and-how-to-spot-them/工程团队处理技术债务的时间有限,他们需要充分利用它的。幸运的是,Stepsize可以帮助他们从工作流程中捕获和跟踪技术债务,以便他们可以量化业务成本并确定最重要债务的优先级。每个工程师都可以直接从他们的工作流程中报告技术债务和成本,包括编辑、PR和Slack。这些报告被发送到Stepsize网站,在那里它们被组织成描述和记录代码库中问题的“技术债务项目”。最终,每一张Jiraticket都会有相关的技术债项加入其中,解决它们才能更有效地为客户提供价值。我们建议工程团队负责人负责管理此过程。他们个人拥有团队拥有的代码库中的技术债务,并在需要解决债务时与PM进行沟通。3、如何处理大的技术债这种技术债不是马上就能解决的,更不用说冲刺了。我采访过的最好的公司每季度都会召开所有工程主管都会参加的技术规划会议。工程经理负责强调向他们报告的大量技术债务,并为他们认为最重要的技术债务制定业务案例。这个过程听起来很费力,但对于Stepsize用户来说却出奇的简单。他们的个人贡献者已经定期报告来自前线的债务。每个团队及其领导不断审查和整理这些数据,他们将大部分债务以及了解业务成本所需的数据传递给他们的工程经理。Stepsize甚至可以揭示每个Jira史诗的技术债务。然后,领导层可以利用他们对公司更广泛的优先事项和愿景的理解,相应地对大额负债进行排序。一旦每个大额债务获得批准,它就会被安排到路线图中,就像功能工作一样。这样,工程负责人就拥有了监控每个技术债务项目进度所需的所有数据。4.总结任何现代软件公司都应该能够应用这个过程来处理小、中、大技术债务。但是,有一点因公司而异:业务目标。正确管理技术债务意味着解决阻碍您实现业务目标的债务。如果您的业务建立在正常运行时间和可靠性之上,请偿还任何使他们面临风险的债务。如果开发速度是您的竞争优势,那么请消除任何浪费工程时间或使新员工难以理解代码的债务。如果您想减少客户流失,解决导致质量问题的债务。处理每笔债务的明确商业理由。因为当您这样做时,您可以更好更快地交付软件——并且您可以让您的工程师满意。
