5 年经验面试:技术债和业务需求怎么平衡?怎么说服上级给时间还债?

第 1117 题 约 2 分钟读完

本文目录
  1. 面试怎么回答
  2. 先把技术债看清楚
  3. 用业务语言讲代价
  4. 怎么平衡

面试怎么回答

我会先把技术债分类:正在导致故障和延迟的优先还,其次是拖慢交付的和浪费资源的,稳定运行、很少改动的旧代码可以先放着。说服上级时用业务语言讲代价,比如过去三个月有几次报表延迟是这些老任务导致的、改一次口径要动多少脚本花几天、重复计算每月多花多少钱,同时给出投入、步骤和每一步可见的收益。平衡上,我会固定每个迭代留 15% 到 20% 时间做技术债和稳定性;业务有新需求时顺手重构这个域的模型;引擎迁移、分层重建这类大改单独立项,有里程碑和收益目标;再通过代码 Review 和模型评审防止新增债务。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

几乎每个数仓都有技术债:几千个没人敢动的老任务、复制粘贴的 SQL、没有分层的烟囱表、跑了三年的 Hive on MR。团队想重构,上级说「先把需求做完」。面试官想看你能不能把技术债讲成业务能听懂的代价,并且找到边做业务边还债的办法。

先把技术债看清楚

不是所有技术债都要还。按影响排序:

  • 已经在出事的:频繁导致任务失败、数据错误、产出延迟的,优先级最高;
  • 在拖慢交付的:每次改口径要改十几个地方、新需求要从原始层重新写,影响开发效率;
  • 在浪费钱的:重复计算、低效任务占了大量资源;
  • 只是不优雅的:代码风格旧,但稳定运行、很少改动,可以放着。

用业务语言讲代价

上级不关心「架构不合理」,关心的是:

  • 「过去三个月,有 6 次报表延迟是这几个老任务导致的,影响了每天早上的经营会」;
  • 「改一个 GMV 口径要动 14 个脚本,平均要 5 天,重构公共层后可以缩短到 1 天」;
  • 「这批重复计算每月多花 8 万资源费」。

再给出方案:投入多少人、多长时间、分几步、每一步带来什么可见的改善。

怎么平衡

  1. 固定比例:每个迭代留出 15%–20% 的时间给技术债和稳定性,作为团队的常规工作,而不是每次单独申请;
  2. 跟着需求还:某个业务域有新需求时,顺手把这个域的模型重构了,业务方得到需求,团队还了债;
  3. 大的重构单独立项:比如引擎迁移、数仓分层重建,要有明确的目标、里程碑和收益,作为季度重点;
  4. 防止新增债务:代码 Review、模型评审、开发规范,不让问题越积越多。