技术债务,笼罩着每个产品团队的幽灵。它阻碍功能,给开发人员带来压力,并使客户感到沮丧。团队中的每个人都知道这一点。团队成员在每次回顾、事后分析和产品质量审查中都会提到它。然而,它仍然存在。技术债务感觉不可避免且不朽,这是您的团队无法逃避的存在。但是,尽管它的名声不好,但技术债务实际上可以是一件好事……如果管理得当。正如 Sandi Metz 所说,“如果它让你感觉好一些,那么有一种方法可以将一团糟视为成功的标志。你的竞争对手没有混乱的原因是他们倒闭了。你赢了,你的奖品是一个背叛时间蹂躏的应用程序。”技术债务来自学习和成长。它会一直在这里;我们的目标不是消灭它,而是驯服它。学会接受技术债务需要诚实地审视您的产品的需求和能力。但在这里要小心——很容易屈服于新近偏见和过度索引你的团队在过去几个冲刺中经历的痛苦。最终,目标是让开辟新道路更容易,而不是翻新旧地。克服技术债务需要一种全面的方法,该方法来自对客户需求、产品组织的优先级和整体业务的深入了解。单独理解整个画面是不可能的;你需要依赖你的盟友。在您清理产品的过程中,很容易将您的产品经理或工程经理视为对手。相反,他们是关键的盟友。利用他们的知识和观点来完善您自己的知识和观点。接受技术债务意味着承认没有任何项目是万能的。只要您的产品蓬勃发展,总会有另一个项目需要解决。让这释放你。将有更多机会解决您错过的任何问题。然而,这意味着任何技术项目的主要目标之一是建立和维护信任,以便您和您的团队能够成功地处理未来的项目。信任始于周到的合作。尽早开始与利益相关者的对话。将想法传递给您的 PM 和 EM,并从您的队友那里寻求反馈。在团队中工作时,思考变成了一种集体活动。有效的技术债务项目始于设定积极的目标。很容易陷入根据过去批准的内容确定项目范围的陷阱,过早地剪掉部分以尝试使其适合。路线图规划是对资源的协商:公司必须将有限的时间、人员和资金分散到不断增长的竞争优先事项清单上。
让路线图规划发挥作用:将您的建议与其他建议进行比较,以确定如何使事情适合。试图预测领导如何优先考虑您的项目意味着您可能会错过资源,或者在需要妥协时没有任何东西可以削减。一个好的计划应该会产生大量的反馈,引发关于路线图、产品的整体技术健康状况、团队优势等的讨论。你必须诚实地对待每一次对话。过度推销一个项目以试图获得批准会在您的产品经理的脑海中产生对该项目的扭曲看法。他们将根据您提供的结果进行计划,期望该项目无需进一步的技术工作即可解锁某些功能。快速失去信任的方法是设定错误的期望。一旦失去信任,未来的项目就岌岌可危。设定明确和诚实的期望。关注即将推出的功能的影响,这些功能预计将保持相对稳定。要具体并专注于结果:它是否开启了我们之前认为成本太高而无法尝试的一类工作?有时您的计划会被拒绝。也许时机不对,或者关键的利益相关者不同意你的分析。不管是什么原因,请记住,现在的“不”可能在未来变成“是”。如果您对这项投资充满热情,请在一段时间后再次尝试推销它,并且您已经有机会对其进行改进。如果可以,将计划搁置一旁,并尝试找到可以降低投资成本或风险的较小步骤,例如团队可以在日常功能工作中机会性地处理的工作。
未来三个月都无法预测,更不用说一年了。但请记住,您的目标不是正确的;你的目标是避免犯错。不要追求完美。每个项目都是沿着路径的一步。让每一步都有意义需要知道你要去哪里。把你的长期技术愿景想象成一个指南针——它让你对你的团队需要前进的方向有一个大致的了解。通过将过去的伤害与您的产品未来的发展方式相结合,您将能够制定更准确的长期愿景。在这里,您会发现您的产品经理在此过程中的投入是无价的。与您的 PM 密切合作将改善您和他们的计划。它将提供自然的,甚至是显而易见的机会,将您的项目包含在产品路线图中。一旦你找到了机会,挑战性的工作就开始了。首先让你的计划易于理解。作为产品团队进行技术投资的不幸现实是,您的首要任务和最终优先事项是交付直接影响业务目标的功能。正如当公司的目标或预测发生变化时面向客户的项目可能会缩减或取消一样,技术项目通常也需要搁置。并非每个更改都需要可发布,但项目应该有定期的“检查点”,可以在其中按下弹出按钮而尽量减少混乱。破坏项目可能涉及回滚已经提交的代码。不过不要紧张——代码很便宜。重要的是你从尝试中学到了一些有价值的东西,使下一次尝试更成功。在您将项目分解成可消化的块之后,是时候让它们变得更可口了。您的 PM 需要能够将您的计划出售给他们的老板或他们老板的老板。不要让他们试图仅凭技术优点来推销它。首先关注您的计划将启用的特定功能和用例。接下来,学习利用变化。一个普遍的看法是,技术债务项目不应产生任何功能变化。但这是不切实际的期望。复杂系统中的重大技术工作会导致功能的意外变化。因此,与其避免改变,不如利用它。要有战略眼光。作为技术债务清理的一部分,寻找与当前优先事项相协调的产品改进。邀请设计和产品团队在项目的每个步骤中帮助您识别小的更改,例如修改一些旧 UI 或清理不一致的交互。
当然,更重要的改进是非常棒的……当它们刺激进一步的技术投资而不是分散注意力时。最终目标是找到可以像在常规功能工作中一样利用互补产品和技术投资的方法。您可能熟悉剪纸票。这是不断被您的 CS 团队重新打开的票,或者是您在待办事项梳理中跳过的票,因为有更多关键工作要做。你知道你可以在半天内解决它,顶,如果你能把它拉进冲刺。但是通过一些工作,您可以将这些永远被忽视的门票转化为重要价值的来源。关键是建立一个可持续的过程,将剪纸正常化到你的冲刺计划中。这个过程不必很复杂。例如,我的团队确定的流程是“快速赢得冲刺”。经过几次冲刺后,我们注意到不仅拉一两个剪纸对功能节奏几乎没有影响,而且我们之前认为不重要的票对我们的客户来说具有重要价值。此外,赋予剪纸价值的决定改变了我们谈论问题的方式。关于痛点的对话以前以无奈的叹息告终,结果却是一张新的剪纸。那个剪纸变成了下一次待办事项梳理时的讨论。它成为将我们的技术债务背景化的工具。一个好的 PM 会注意到模式。如果剪纸因为技术债务使它们成本过高而不断关闭,那么迟早,PM 将需要了解原因。这就像一个雪球从山上滚下来。每完成一项任务,抽象的技术问题就会变得更加具体、更加有形,直到不可避免。直到问题的严重性像雪崩一样压在你身上。让产品争辩说团队需要解决一个技术问题,这样你就可以担心如何处理它。