建议将技术债务更名为科技财富 - increment


技术债务是由于在构建功能时采用了太多的技术捷径。
产品团队创建了一个雄心勃勃的路线图,几乎没有犯错的空间,工程师在已经过时的软件基础设施上进行不守规则的破解以实现这些雄心壮志。债务像一个孩子踮起脚尖走进厨房,从食品储藏室偷走饼干,导致系统效率逐渐下降。
当快速而肮脏的破解黑客习惯成为工程组织的默认模式时,可能很难提倡以“正确”的方式做事,投入时间和精力来制定详细的需求,构建强大的解决方案,或自动化手动任务。
偿还技术债务通常被视为软件工程不那么迷人、不那么令人兴奋的方面。迁移并不好玩,用新的依赖替换旧的依赖也不好玩。新架构不会在一夜之间神奇地在白板上画出自己的图。但是,如果长时间未经审查,技术债务可能会从被忽视的麻烦变成灾难性的失败。相比之下,如果主动解决技术债务,则是在我们的系统中建立弹性和稳健性的机会。
这就是为什么我建议我们将科技债务重新命名为科技财富。
 
引进科技财富
腾出时间来偿还技术债务需要领导层的支持。获得这种支持很难,特别是因为最终用户可能不会直接感受到许多技术债务投资的影响,例如改进的工具或自动化流程。事实上,许多开发团队普遍存在一种误解,认为由于技术债务不会影响用户,因此不值得优先考虑。但实际上,解决技术债务使我们能够在以后投入更多时间进行功能开发。预先处理系统的弱点意味着工程师在未来将花更少的时间来处理意大利面条式代码或解决被忽视的问题。 
通过将科技债务定义为科技财富,我们可以最大限度地减少与此类债务相关的负面含义,并消除这些错误印象。这种品牌重塑可以改变领导层对这些重要的幕后投资的看法,增加他们购买工作的可能性。在商业中,积累财富是一件要尽快完成的事情,要非常小心和专注。同样,为使您的系统更强大、更高效而开展的基础工作应该被视为值得进行前期投资。 
 
定义科技财富
我们从花时间完成特定任务中获得什么价值?我们从这项工作中获得了什么收益?
根据定义,财富是大量有价值的财产、商品或资源。对于一个工程团队来说,积累财富可能意味着提高生产力、工程师的幸福感、系统稳定性等等。当我们以这种方式理解我们的技术开销时,我们就可以专注于传达价值:我们从花时间完成特定任务或计划中获得什么价值?我们通过这项工作获得了哪些收益或资源?
积累技术财富意味着从我们正在创建的软件以及我们开发和维护它的努力中获得更多价值。在将科技债务重新定义为科技财富时,我们可以问自己以下问题,以阐明我们可用的价值放大机会:

  • 我们可以采取哪些步骤来帮助我们的团队更快、更有效地行动?
  • 我们可以做些什么来提高系统的可扩展性或稳定性?
  • 哪些工作可以改善工程师维护这些系统的经验?

让我们以部署自动化为例。通过将工程时间用于创建自动化生产部署的基础设施,您可以获得技术财富,包括提高生产速度(因为用户将更快地获得新功能或错误修复)、更大的开发人员幸福感(因为工程师将花费更少的时间手动将发布部署到生产中,并且可以专注于更具吸引力的工作,例如功能开发)并降低风险(通过从部署过程中消除人为错误)。这种高价值投资可以改善您的用户、开发人员和系统本身的财富。
 
规划科技财富
一旦团队为新功能工作分配了工程能力,通常就没有多少时间来积累技术财富了。假设你不能只是暂停功能工作——尽管我很想看到一个工程团队尝试!——以下策略可以帮助团队开始将技术财富纳入规划过程。 
  • 在每个计划周期内分配时间  

您的工程团队是否使用花哨的公式来确定在每个规划周期中您有多少开发工作容量?如果是这样,请考虑分配一小部分但有意义的能力来建立技术财富。 
适当的时间将取决于您团队的需要。例如,如果您想增加集成或单元测试覆盖率,将 80% 的工程时间分配给产品开发,其余 20% 用于构建技术财富可能就足够了。如果您的团队需要改进架构或系统以满足新的需求,您可能需要将 60% 的时间用于积累技术财富,将 40% 的时间用于产品开发。
将技术财富纳入每个规划周期的优势在于,它成为您团队常规节奏的一部分,从而使实践正常化。您的团队甚至可以开始将成功指标归因于您每个周期积累的财富。例如,您可能会跟踪在投资构建自动化测试覆盖率之前和之后引入的错误数量。
如果您不使用花哨的公式来确定工程能力,请从简单开始。如果你的团队足够大——比如说,至少有四名工程师——一个人可以在每个周期专注于创造技术财富。考虑建立轮换制度,这样每个工程师都有机会在技术财富项目上工作,同时也可以构建更引人注目的东西。
无论您采用何种方法,请务必定义并记录您的技术财富任务产生的价值。这将有助于维持对这些投资的支持。
  • 奉献一个季度的最后几个周期

如果您无法在每个 sprint、迭代或计划周期中投入固定的时间,您可能希望在每个季度中划出特定的时间段。对于大多数团队来说,季度末是这样做的合适时机;一旦您完成了功能交付或正在对功能进行 A/B 测试,您可能会有更多的工程人员解放出来。至于该期限应该多长,这取决于您要积累的财富。如果您不确定从哪里开始,请尝试几个为期两周的迭代,这应该足以开始填补您的技术金库。
与我列出的第一条路径不同,这个季度策略将需要您团队 100% 的能力,尽管是暂时的。我发现它在投资需要多个工程师的时间和精力的情况下特别有用。这种方法鼓励专注并减少上下文切换,但它需要意志力和一些坚定的边界设置,以确保业务或产品利益相关者不会滑入工程师的 DM,希望最后一次“快速更改”。此策略的另一个好处是:您可以利用时间整理本季度早些时候实施的任何黑客或变通方法,当时团队正在努力实现产品目标。 
如果您按季度积累技术财富,您可能会发现为您的团队保留积压的技术财富项目以供咨询很有用。例如,您可以创建一个 Jira 项目或 Trello 看板,专门用于跟踪您计划建立的财富。这将有助于保持您即将到来的计划清晰并实现您的技术财富目标。
 
通过为科技财富做规划,你实际上是在减少科技债务。
banq:可组合性是科技财富的复利!