评审节奏与 SLA 与大型 PR 拆分策略

共 47 题
📑 题目列表 47 题
#
★★★

1. 你 review PR 时发现重大问题但 PR 很大改起来多,你看怎么 argue 拆分

你在 review 一个 PR 时发现了重大问题,但该 PR 非常大、改动很多,作者要改起来工作量大且难以收敛,你该如何论证并推动拆分这个 PR?

  • 能否识别"PR 过大导致评审失效"的根本问题
  • 能否用评审质量、风险、可维护性等理由说服作者拆分
  • 能否给出具体可执行的拆分方案而非空泛建议

先明确指出"问题不在于改动多,而在于改动多到无法被有效评审"。拆分 PR 的核心价值是让每个 PR 都能被完整、专注地评审,从而降低漏掉重大 bug 的风险。你可以论证:当前这个 PR 已经审了很久还没看完,说明它超出了单次评审的认知负荷,问题才会被埋没。同时给出具体的拆分建议——按"高风险改动优先"或"按模块/依赖顺序"切分成 2-3 个可独立合并的 PR,并说明每个 PR 的验收标准。重点是把这个 PR 里发现的重大 bug 单独提出来,先修这个,再谈其余改动,这样既解决了问题,又为拆分提供了最有力的理由。

评审发现重大问题说明评审有效,但数以百行计的大 PR 会让问题被淹没。拆分是评审纪律的体现,目的是让每个改动都被充分理解。应先确认问题确实存在,再谈拆分,避免让作者觉得你在用拆分回避问题。把"改 bug"作为拆分的第一优先级,是最容易让作者接受的切入点。

#
★★★

2. 你 review 别人的 PR 但他不在工位(会议/请假),你等还是 approve 你怎么看怎么 argue

你在 review 别人的 PR 时发现了一些问题,但 PR 作者不在工位(在开会或请假),你是选择等待还是先 approve?请说明你的判断依据和理由?

  • 能否区分"必须作者修改"与"可以后续再聊"的问题
  • 能否制定合理的等待/放行策略,平衡进度与质量
  • 能否给出明确的沟通方式(如留下评论、约定时间)

关键看问题类型和紧急程度。如果只是可以讨论的 nit 或优化建议,且不影响功能正确性,可以先 approve 并留言"这些可后续跟进",同时把意见记录清楚,避免阻塞进度。如果存在必须修改的 blocker 级别问题,则不能 approve,应在 PR 上明确标注"需作者确认后修改",并约定作者回来后的处理时间,而不是无限期等待。无论哪种情况,都应在 PR 评论里留下清晰记录,避免口头沟通丢失。判断标准是"问题是否影响合并后的正确性/安全性"。

approve 不等于放弃质量,而是把问题分级处理。blocker 必须等,非 blocker 可以放行并跟踪。这样既尊重作者时间,又保证改动质量,体现"评审服务于交付"的理念。关键在于把"等待"转化为"有截止时间的等待",避免无限期阻塞。

#
★★★

3. 你 review 别人的 PR 但他不改(reviewer 提了意见 PR 作者忽略),你怎么看怎么 argue

你 review 别人的 PR 时提出了意见,但 PR 作者收到意见后一直忽略不改,你该如何看待并推动解决?

  • 能否区分"作者故意忽略"与"作者没看到/没理解"
  • 能否用有效的沟通方式推动作者回应
  • 能否在必要时升级问题而不伤和气

先不要预设作者是故意不改,可能是没看到、没理解或意见本身不清晰。第一步是主动确认:在 PR 下 @ 作者或通过 IM 直接拉齐,问清"我提的这几个点你看到没有、是否同意"。如果作者同意但没时间改,就共同约定一个明确的 deadline。如果作者不同意,就针对每个意见澄清理由,必要时用数据/复现案例支撑。如果作者既不回应也不改,且是 blocker 级别问题,就应升级到 line manager 或利用团队 review SLA 让问题可追踪,而不是无限期搁置。

评审意见被忽略最常见的原因是沟通断层而非恶意。先确认、再分级、后升级,是处理这类问题的最稳妥路径。把意见用"问题-影响-建议"的结构写清楚,能显著提高作者接受的意愿。

#
★★★

4. 你 review 别人的 PR 发现不是你能判断的(架构层面),你看怎么 argue 升级

你 review 别人的 PR 时发现了超出你能力/职责范围的问题(比如架构层面的设计问题),你该怎么看待并推动升级?

  • 能否诚实认识自己的判断边界
  • 能否把问题准确升级到合适的资深 reviewer 或架构师
  • 能否在升级前先做必要的信息整理,帮助他人快速判断

承认自己在架构层面判断力有限并不丢人,比"装作懂然后放行"更负责任。做法是:把问题现象、影响范围、相关代码位置整理清楚,明确"我判断不了的是哪一点",然后请架构师或资深 reviewer 参与评审,而不是简单地把整个 PR 转出去。可以在 PR 里 @ 相关人并附上背景,说明"这个改动涉及架构决策,已超出我的判断范围,需要 senior 参与把关"。同时自己也可以继续评审其他能判断的部分,分工协作。

评审的边界意识和升级能力是工程质量的重要保障。把"我不懂"变成"我确认了边界、整理了信息、找对了人",就能把个人局限转化为团队协作的窗口。升级的目标是让问题被正确的人看到,而不是推卸责任。

#
★★★

5. 你想把 review SLA 改成"工作日"但有人说"紧急 PR 怎么办",你怎么看怎么 argue

你想把团队的 review SLA 从"自然日"改成"工作日",但有人反对说"紧急 PR 怎么办",你该如何看待并论证?

  • 能否区分常规 SLA 与紧急通道这两种场景
  • 能否设计"紧急通道"机制来回应反对意见
  • 能否把 SLA 改成对团队更可持续的约定

承认反对意见有合理性,但指出"紧急 PR"不应由 SLA 来覆盖,而应由独立的"紧急通道"来定义。常规 SLA 设成工作日,是为了保护 reviewer 的休息权和可持续性,避免"随时待命"的隐性压力。而紧急 PR 需要单独定义"什么是紧急"的边界(如生产故障、线上 blocked),并明确紧急 PR 的 review 时间和流程。这样既回答了"紧急 PR 怎么办",又让常规 SLA 变得更可执行。可以举例:工作日 SLA 保证"上下班时间内的响应",紧急通道保证"生产事故 1 小时内响应",两者并行不悖。

反对意见往往是因为担心"改 SLA 会牺牲紧急响应"。把"常规 SLA"和"紧急通道"拆开,是化解这个矛盾的关键。关键是要给"紧急"设定清晰边界,否则紧急通道会变成所有 PR 的借口,让 SLA 形同虚设。

#
★★★

6. 你提交的 PR reviewer 要求再设计(架构层面),但你不同意,你看怎么 argue

你提交的 PR 被 reviewer 要求从架构层面重新设计,但你不同意当前的反向意见,你该如何看待并论证?

  • 能否客观分析 reviewer 的架构意见是否成立
  • 能否用事实、数据、场景论证自己的设计
  • 能否在分歧中保持专业,必要时寻求裁决

先别急着反驳,认真听完 reviewer 要求再设计的理由,理解他担心的问题(如扩展性、可维护性、未来需求)。然后用自己的设计和场景来论证:你的方案要解决什么问题、权衡了哪些约束、为什么当前方案在现阶段的代价最小。如果双方各执一词,可以把两套方案用"成本、风险、收益、适用场景"的对比表写出来,让决策有据可依。如果确实无法达成一致且是重要架构决策,可请第三方资深架构师或 leader 裁决,而不是硬顶或硬改。

架构层面的分歧往往不是对错,而是取舍。用对比分析替代情绪化争论,是推动收敛的关键。要区分"reviewer 的反对有道理"和"只是偏好不同"——前者要改,后者可以协商。

#
★★★

7. 你提交的紧急 PR 需要立即 review,但 reviewer 在忙你怎么看怎么 argue

你提交了一个紧急 PR 需要立即 review,但 reviewer 此刻很忙,你该如何看待并推动?

  • 能否做到"紧急"的真正边界(是否真的紧急)
  • 能否用合理的沟通方式打乱 reviewer 的工作安排
  • 能否建立紧急 PR 的明确流程

首先自我确认"紧急"是否属实:是否真的阻塞生产、影响用户、或线上故障。如果只是自己着急,就不该随意打断别人。如果确实紧急,要直接、坦诚地说明紧急原因和影响后果,给 reviewer 一个"为什么现在必须看"的明确理由,并主动提出"我可以把改动范围、风险点一次性讲清楚,帮你快速 review"。同时可以让相关方(如 leader、故障 owner)一起确认紧急程度,避免"其实不紧急但被包装成紧急"。最理想的是事先有紧急 PR 通道的约定,让"紧急"有统一标准。

紧急 PR 的本质是"打破常规优先级",因此必须给出足够强且真实的理由。被拒绝时不要觉得是针对自己,而是要想办法让"紧急"的可信度被验证。建立紧急通道能让这类场景有章可循,不依赖个人情面。

#
★★★

8. 你的 PR 很大 reviewer 看了 1 小时没看完,你说"我先合并你继续看",你怎么看怎么 argue

你的 PR 很大,reviewer 看了 1 小时还没看完,此时你说"我先合并,你继续看",你如何看待这种做法并论证?

  • 能否识别"先合并后评审"的风险与前提
  • 能否在合并前定义清楚"继续看"的跟踪机制
  • 能否区分哪些可以这样、哪些必须审完再合

"先合并再继续看"本质上风险很高,因为合并后的问题修复成本远高于合并前。如果 PR 是面向生产的核心改动,这种"先合后审"不可接受。但如果它是低风险、可回滚、不影响主流程的改动,且 reviewer 同意,可以约定"先合并、但把尚未评审的部分列成待办项,在后续周期内补完",并明确回滚预案。更本质的解法是:这个 PR 太大本身就该拆,而不是试图用"先合后看"来掩盖评审不足。所以要 argue 的是"拆分"而非"先合后看"。

"先合并你继续看"常常是作者为赶进度找的借口,是对评审纪律的透支。正确姿态是借此反思 PR 是否过大、是否应拆分。除非有明确的回滚能力和低风险前提,否则评审必须完整收敛后才能合并。

#
★★★

9. 你的 PR 提交后一直没 review,你催了同事说"没时间",你看怎么 argue

你的 PR 提交后一直没有人 review,催了同事,对方说"没时间",你该如何看待并推动?

  • 能否把"没时间"转化为可执行的约定
  • 能否利用团队 SLA 机制而非单人催促
  • 能否在升级前先穷尽个人的沟通努力

面对"没时间",先理解对方确实可能很忙,但"没时间"不能成为无限期拖延的理由。可以主动降低对方的 review 成本:把 PR 的改动点、风险、测试情况整理成一份简洁说明,让对方在 10 分钟内能抓住重点。同时为 review 设定一个明确的时间点,比如"你周五下午能抽出 20 分钟吗?不行的话我请谁帮忙"。如果团队有 SLA,就引用 SLA 说明"这已经超过约定时间了",推动对方安排。如果持续无响应,再升级到 leader 层面协调,而不是无限期等。

"没时间"往往是"优先级不够高"的委婉说法。帮对方降低 review 成本、给出明确时间点,是把"没时间"变成"现在做"的关键。同时要善用 SLA 作为公共依据,避免个人之间拉扯。

#
★★★

10. 你的 PR 被 reviewer 卡了 3 天,你怀疑是 reviewer 故意不 review,你怎么看怎么 argue

你的 PR 被 reviewer 卡了 3 天没有 review,你怀疑 reviewer 是故意不 review,你该如何看待并处理?

  • 能否避免"猜测动机"的沟通陷阱
  • 能否用事实和 SLA 沟通而非情绪化指控
  • 能否在合理怀疑时给出让对方解释的空间

先放下"故意"这个假设,因为主观猜测无法验证,且容易挑动对立。更稳妥的做法是用事实沟通:在 PR 或 IM 里说明"这个 PR 已经过了 3 天 SLA 还没有 review,想确认一下是不是有什么问题,还是有其他原因"。给对方一个解释的空间,可能是他没看到、被别的事挤占、或对 PR 有顾虑但没说。如果对方确实有顾虑,正好借此澄清;如果单纯拖延,就引用 SLA 推动。即使真有"故意"的成分,也要用客观机制(SLA、升级、换 reviewer)来化解,而不是公开指责。

"故意不 review"是最难验证也最伤关系的假设。把关注点从"谁故意"转移到"流程怎么卡了",用 SLA 和事实说话,才能既解决问题又不破坏合作。催评时给台阶、留余地,是专业沟通的体现。

#
★★★

11. 你的团队 review SLA 是"按 PR 大小"分级(大 PR 3 天/小 PR 1 天),但 PR 大小难定义你怎么看怎么 argue

你的团队 review SLA 是按 PR 大小分级(大 PR 3 天、小 PR 1 天),但"PR 大小"这个标准很难客观定义,你怎么看待并论证?

  • 能否识别"按大小分级"中定义的模糊性
  • 能否提出更客观、可测量的分级标准
  • 能否在不否定的前提下改进 SLA 设计

按 PR 大小分级的初衷是合理的(大 PR 需要更多时间),但"大小"缺少客观标准,会导致争论和扯皮。改进方向是选择可量化、少争议的指标,比如"改动文件数、新增/删除行数、涉及模块数、是否含数据库变更/公共接口变更"等,用具体阈值定义"大/小"。也可以把"按大小"换成"按风险"分级——是否涉及生产、核心链路、安全、数据结构变更,这些比行数更能反映评审需要的深度。同时大小分级的根本问题在于"大 PR 本身就不该出现",所以 SLA 应配合"鼓励拆分"的机制,让大多数 PR 天然是小 PR。

任何 SLA 都需要可操作的定义,否则"大/小"会成为争论点。用行数、文件数、风险类别等客观指标替代主观判断,是让 SLA 可执行的关键。同时要认识到"大 PR 分级"治标不治本,推动拆分才是根本。

#
★★★

12. 你的团队有人 review 很快但质量差,你看怎么推动深度 review

你的团队里有人 review 得很快但质量很差,你该如何看待并推动深度 review?

  • 能否识别"快而浅"表象下的质量风险
  • 能否用可衡量的方式提高 review 深度
  • 能否通过机制而非说教推动改变

"快而浅"的 review 往往只是走形式,错过了关键问题。推动深度 review 需要机制而非说教:一是建立 review 清单(checklist),明确必须检查的维度(正确性、安全、性能、可维护性、测试等),让 reviewer 有据可依;二是用量化指标衡量 review 质量,比如"review 是否发现过 bug、提出的 blocker 数量、是否验证了测试覆盖",而不是只追求"review 速度";三是鼓励 reviewer 在 PR 里写"我验证了什么、为什么 approve",让"想清楚"变成显性动作。对个人而言,可以私下交流"你审得很快,但我担心关键点没覆盖,要不要我们一起过一遍 checklist"。

快不等于好,review 的价值在于"发现问题"。通过 checklist、质量指标、显性验证等机制,把"深度"从口号变成可执行的动作,比单纯批评 reviewer 更有效。关键是把 review 从"通过审批"变成"验证质量"。

#
★★★

13. 你的团队有人从不 review 别人的 PR,你看怎么推动

你的团队里有人从不 review 别人的 PR,你该如何看待并推动?

  • 能否理解"从不 review"背后的原因(没时间/不会/没被要求)
  • 能否用分工和机制让 review 成为义务
  • 能否在推动时避免个人冲突

先探究"从不 review"的原因:可能是确实没时间、不知道怎么 review、或者团队从未明确 review 是每个人的义务。推动方式:一是把 review 纳入明确的职责和轮值机制,让"review 是工作的一部分"而非可做可不做;二是在团队层面约定"每个 PR 至少 1 个 reviewer,reviewer 从轮值名单中分配",避免依赖老好人;三是通过绩效或考核体现 review 的贡献,让"不 review"有实际后果。对个人,可以温和地提醒"你最近的 PR 大家帮你 review 了,也请你帮忙看看别人的",把互惠作为切入点。

"从不 review"往往源于制度缺失而非个人懒惰。只有把 review 变成明确职责、分配机制和考核项,才能从根本上改变。个人沟通上,用"互惠"和"团队协作"角度切入,比指责更有效。

#
★★★

14. 你的团队有大 PR(几千行)无法快速 review,你看怎么推动拆分

你的团队经常出现几千行的大 PR,无法被快速且有效地 review,你该如何看待并推动拆分?

  • 能否识别大 PR 的成因(一次开发太多、缺少规划)
  • 能否用机制(PR 规范、里程碑)预防大 PR
  • 能否推动拆分而不只是批评现象

几千行的大 PR 说明问题的根源在"开发节奏和规划",而不是 review 本身。推动拆分要从制度层面入手:一是在团队规范中约定"单个 PR 尽量不超过一定行数/文件数,超出需说明理由";二是把大功能拆成有独立价值、可独立合并的小里程碑,每个里程碑一个 PR;三是用"CI 前置检查 + 评审纪律"双向约束,让大 PR 在提交前就被拦截。同时要让团队理解拆分的收益:review 更快、bug 更少、回滚更简单、合并更顺畅。对已有的几千行大 PR,可以示范性地把它按模块拆成几个可合并的部分,作为团队的拆分范例。

大 PR 是"评审慢"的根因,而大 PR 的产生源于缺乏拆分意识。通过 PR 规范、里程碑规划、前置拦截等机制,从源头减少大 PR,比事后逼人 review 更有效。拆分需要团队共识和制度支撑,而非一朝一夕。

#
★★★

15. 你的团队的 review SLA 是 leader 定的,但大家不遵守,你看怎么 argue

你的团队 review SLA 是 leader 定的,但大家普遍不遵守,你该如何看待并推动?

  • 能否识别"执行力不足"的成因(SLA 不现实/无监督/无后果)
  • 能否推动 SLA 从"定"到"落地"
  • 能否在尊重 leader 的前提下提出改进

大家不遵守,通常不是大家故意对抗,而是 SLA 缺少执行的土壤。常见原因:SLA 定得不现实(和实际工作冲突)、没有监督机制、不遵守没有后果。推动方式是:先和 leader 对齐,确认 SLA 是否需要调整(比如本来就定得过高),然后建立"可见的度量 + 反馈"——用看板或报表展示每个 PR 的 review 时长,让不遵守变得可见;再配套"不遵守的后果"(如会提醒、计入 review 考核),形成闭环。要让 leader 参与推行,而不是只靠个人呼吁,因为 SLA 需要权威背书。

SLA 没人遵守,问题往往在"落地机制"而非"SLA 本身"。度量可见、监督反馈、后果明确,三者缺一不可。推动时要让 leader 变成同盟而不是对立面,借他的权威建立执行文化。

#
★★★

16. 团队的 review SLA 不合理(PR 很大也要 24 小时),你怎么看怎么 argue 拆分

你的团队 review SLA 不合理——即使是很大的 PR 也要求 24 小时内 review 完,你怎么看待并论证?

  • 能否识别"一刀切 SLA"对大 PR 的不公平
  • 能否论证 SLA 应与 PR 规模/复杂度匹配
  • 能否推动拆分 + 合理的分档 SLA

"大 PR 也 24 小时"这个 SLA 不合理,因为它逼着 reviewer 要么敷衍了事、要么熬夜,最终伤害的是质量。论证方向:一是 SLA 应与 PR 的规模和风险匹配,大 PR 需要更多时间才能审透;二是根本出路是拆分——让大 PR 不要出现,这样 24 小时 SLA 就可行了;三是如果客观上必须有大 PR,就给它单独、更长的 SLA,并明确"宁可慢也要审透"。可以算一笔账:24 小时内审完几千行 PR,出错概率远高于给足时间。所以 argue 的重点是"SLA 要服务于质量,而不是制造虚假的快速"。

不合理的 SLA 会逼着评审流于形式。合理的 SLA 应匹配改动规模,并配合拆分机制。要让 team 明白"审透"比"快速"更重要,SLA 是质量的保障而非数字游戏。

#
★★★

17. 团队的 review SLA 是"1 天",但有人说"我出差",你怎么看怎么 argue

你的团队 review SLA 是 1 天,但有人说"我出差没法 review",你怎么看待并论证?

  • 能否区分"出差"作为例外与作为常态
  • 能否设计出差时的 backup 机制
  • 能否在不否定 SLA 的前提下处理例外

出差是合理的例外,但不能成为"SLA 失效"的借口。关键是建立 backup 机制:每个 reviewer 都有自己的 backup,出差时提前把 review 任务转交给 backup,保证 PR 不被卡住。SLA 是"团队对 PR 的承诺",而不是"某个人对 PR 的承诺"——即使某人出差,也有 backup 顶上。所以 argue 的重点是:SLA 不因个人出差而失效,而是通过"提前交接 + backup 机制"来保障。出差的人要提前告知,负责人要提前安排,制度上保证"人不在、流程不断"。

出差是正常现象,但不应成为 SLA 失效的借口。用 backup 机制把"个人 SLA"变成"团队 SLA",是解决这个问题的关键。让出差的人提前交接,比事后补救更有效。

#
★★★

18. 团队的 review SLA 是"工作时间",但全球团队有时差你怎么看怎么 argue

你的团队 review SLA 是"工作时间",但团队是全球分布的、存在时差,你如何看待并论证?

  • 能否认识到"工作时间"对全球团队的歧义
  • 能否设计适应时差的 SLA 定义
  • 能否把 SLA 的"时间"定义得可执行

对全球团队,"工作时间"没有统一含义,必须重新定义。合理的做法是:把 SLA 定义为"基于接力窗口的响应时间",而不是某个人 local 的工作时间。比如约定"提出意见后 24 小时内必须有回应",或"每个 region 的上班时间接力",保证 PR 在 24 小时内被覆盖。同时要明确"阻塞性意见"的升级路径,避免因为时差导致阻塞。argue 的重点是:全球团队需要"接力式"的协作机制,SLA 的衡量单位应从"人的工作时间"改为"绝对时间窗口"。

时差让"工作时间"失去意义。全球团队需要通过"接力窗口"和"绝对时间"来定义 SLA,才能保证协作不断档。要把 SLA 从"个人层面"提升到"团队接力层面"。

#
★★★

19. 团队的 review 习惯是"看心情",你想推动规律化(每天 review)你看怎么 argue

你的团队 review 习惯是"看心情"(想做就做),你想推动规律化(每天固定 review),你该如何看待并论证?

  • 能否识别"看心情"对协作一致性的伤害
  • 能否设计规律化 review 的具体机制
  • 能否从"效率/确定性"角度说服团队

"看心情"的 review 让作者无法预测何时能合并,损害的是整个团队的交付节奏。规律化 review 的价值在于"确定性":每天固定时间 review,作者能预期结果,团队能稳定节奏。推动方式:一是约定每天固定一段"review 时段"(如上午 30 分钟),大家集中处理积压的 PR;二是用工具/看板让 PR 状态可见,养成"每天清空积压"的习惯;三是把规律化 review 写进团队共识,让"定时 review"成为默认行为而非可选项。argue 时强调"规律化不是增加负担,而是把一件模糊的事变成可预期的事,反而降低整体焦虑"。

规律化 review 的核心价值是"确定性"和"节奏"。用固定时段、可见看板、团队共识三个动作,把"看心情"变成"有规律",是对团队协作的确定性投资。关键是把规律化包装成"降低不确定性、提升效率"而非"增加约束"。

#
★★★

20. 团队的 review 节奏不规律(忙的时候慢/闲的时候快),你怎么看怎么稳定化

你的团队 review 节奏不规律——忙的时候很慢、闲的时候很快,你该如何看待并稳定化?

  • 能否识别"忙闲不均"对 review 的冲击
  • 能否设计机制吸收波峰波谷
  • 能否把 review 从"顺带做"变成"固定安排"

"忙的时候慢、闲的时候快"说明 review 是"插空做"而非"固定安排",所以才会被工作挤占。稳定化的思路:一是把 review 变成"固定时间块"而非"顺带",比如每天固定 30 分钟专门处理 PR,忙旺季也雷打不动;二是用"轮值 + 缓冲"机制,忙的时候有多个 reviewer 可分担,避免单点积压;三是设定"review 积压上限",超过阈值就自动触发提醒或分流,避免越积越多。argue 时可以指出:不稳定的 review 会让团队付出"等待和过期"的隐性成本,稳定化是在储蓄长期的确定性。

节奏不稳定的根因是 review 的优先级被工作挤占、又缺少缓冲。用固定时间块、轮值分担、积压阈值三个机制,把 review 从"顺带"变成"有保障的安排",才能稳定节奏。

#
★★★

21. 团队约定 PR 24 小时内 review 但实际平均 3 天,你怎么看怎么推动

你的团队约定 PR 24 小时内 review,但实际平均要 3 天,你该如何看待并推动?

  • 能否识别"约定与执行"的差距及其成因
  • 能否用度量打开差距、推动改进
  • 能否建立可执行的机制而非口号

约定 24 小时、实际 3 天,说明约定只是"口号",缺少执行的支撑。首先要度量"差距在哪"——是 reviewer 没响应、还是响应了但拖很久、还是 PR 太大本来就难审。用数据定位瓶颈后,针对性解决:如果没人响应,就建立分配/轮值机制;如果响应慢,就引入 SLA 提醒和积压看板;如果 PR 太大,就推动拆分。其次要让"24 小时"成为可见的承诺——用看板展示每个 PR 的等待时长,超时就自动提醒。核心是"没有度量的约定无法执行",把"3 天"变成"3 天里有 2 天卡在哪",才能对症下药。

约定与执行的差距要用数据打开。先定位瓶颈(卡在响应还是卡在 review 深度),再针对性设计机制。度量可见性是把"口号"SLA 变成"可执行"SLA 的关键。

#
★★

22. 你 review 别人的 PR 发现设计有问题但他是 senior,你看怎么 argue

你在 review 别人的 PR 时发现设计有问题,但对方是 senior 工程师,你该如何看待并论证?

  • 能否克服"对方资历高"的心理压力
  • 能否用事实而非姿态表达意见
  • 能否尊重 senior 的前提下坚持正确判断

资历不等于永远正确,review 的价值在于让每个人的代码都被审视。面对 senior,关键是用"事实和场景"说话,而不是"我比你懂"。先梳理清楚问题:具体哪个设计、会造成什么影响、有没有更好的方案。然后以"请教+探讨"的姿态提出:"我理解你这里的设计意图,但考虑到 XXX 场景,可能会有风险,我们是否考虑 XXX?"这样既尊重 senior,又表达了自己的判断。同时要自查:我是不是真的理解他的设计?如果确实是自己误判,也要有勇气接受。核心是"对事不对人",用论据支撑观点。

面对 senior 提意见,最怕的是既不敢说、又没依据。用事实和场景支撑观点,以探讨姿态表达,是"不卑不亢"的正解。同时保持开放,避免为面子而坚持错误。

#
★★

23. 你的 PR reviewer 要求拆分 PR(太大了),但拆分会让分支复杂你怎么看怎么 argue

你的 PR 被 reviewer 要求拆分,因为太大了,但你认为拆分会让分支变复杂,你该如何看待并论证?

  • 能否权衡"拆分"与"分支复杂"的利弊
  • 能否论证拆分带来的收益是否大于分支成本
  • 能否给出管理分支复杂度的方案

"拆分让分支复杂"确实是个成本,但拆分带来的收益(review 更快、冲突更少、回滚更简单、合并更顺畅)通常远大于分支管理的成本。关键是要管理好分支复杂度:一是按依赖顺序分批合并,让每个 PR 都基于前一个已合并的 PR,减少冲突;二是保持分支短命,拆分的 PR 尽快合并,避免长期分支;三是用 rebase 或定期同步主分支控制冲突。argue 时可以算账:分支复杂是一次性成本,而大 PR 的 review 痛苦和 merge 冲突是持续成本。如果 reviewer 坚持拆分,可以协商"按依赖顺序、分批合并"的拆分方案,既满足 reviewer 又控制复杂度。

拆分与分支复杂确实是权衡,但通常拆分收益大于分支成本。用"依赖顺序 + 短命分支 + 定期同步"管理分支复杂度,可以让拆分更顺畅。关键是把拆分从"负担"变成"更有节奏的交付"。

#
★★

24. 你的 PR review 时被要求"再改改"但没说具体怎么改,你看怎么 argue

你的 PR 在 review 时被要求"再改改",但 reviewer 没说具体怎么改,你该如何看待并处理?

  • 能否识别"模糊意见"对执行的影响
  • 能否主动澄清意见使其可执行
  • 能否避免陷入"反复猜测"的循环

"再改改"这种模糊意见无法执行,因为作者不知道往哪个方向改。处理方式是主动澄清:委婉地回应"我理解你的要求,但为了改对,你能具体说明一下是哪个部分、问题在哪、期望的样子吗?"把你的理解复述一遍,请对方确认。如果对方说不清,可以结合后续代码或自己对质量的理解,提出 1-2 个候选方向供对方选择,把模糊意见变成可选项。同时,这也暴露了"评审意见不够具体"的团队问题,可以推动"评审意见要可执行、可验证"的规范。

模糊的评审意见是无效的,它让作者无从下手。用"复述+追问+给选项"的方式把它变成可执行的意见,是处理这类问题的关键。同时把它作为团队评审规范改进的契机。

#
★★

25. 你的 PR 被 reviewer 要求很多改动但有些是"风格"问题,你看怎么 argue

你的 PR 被 reviewer 要求做很多改动,但其中有些是"代码风格"问题,你该如何看待并处理?

  • 能否区分"风格问题"与"实质问题"
  • 能否用格式化工具/规范统一风格争议
  • 能否在风格上坚持原则、在实质上保持开放

风格问题(空格、命名、格式)是最容易引发无意义争论的。处理方式:一是用工具和规范替代主观判断——引入 formatter(如 Prettier、gofmt)和 lint 规则,让格式由工具统一,从源头消除风格争议;二是区分"风格问题"和"实质问题",风格问题如果团队有规范就按规范来,没有规范就不要为风格僵持,可以协商妥协;三是如果是组织层面缺乏风格规范,就推动建立统一的代码规范,而不是在单个 PR 上争论。对 reviewer 的实质意见要开放接受,对纯风格问题则用"规范+工具"解决,避免本末倒置。

风格争议的根源是缺少统一规范。用 formatter 和 lint 工具把风格问题工具化,是最有效的解法。区分"实质"与"风格",才能把精力花在真正重要的评审上。

#
★★

26. 你的团队 review SLA 影响开发效率(review 慢导致代码过期),你怎么看怎么 argue

你的团队 review SLA 慢,导致代码在等待 review 期间过期(和主分支冲突/需求已变),影响开发效率,你怎么看待并论证?

  • 能否识别"review 慢"与"代码过期"的因果链
  • 能否量化 review 慢的隐性成本
  • 能否推动 SLA 和拆分机制改善

review 慢导致代码过期,说明"等待 review"本身是有成本的——团队在这段时间里可能会继续开发,导致 PR 与主分支冲突、需求已变、合并成本上升。argue 时要把这个隐性成本量化:比如"平均每个 PR 等 3 天,期间主分支有 N 次变更,导致 XX% 的 PR 需要返工"。这个成本是实打实的效率损失,比"多花点时间 review"更值得重视。推动方式:一是收紧 SLA 和积压机制,缩短等待;二是鼓励小 PR 快速合并,减少过期窗口;三是必要时让作者在等待期间同步主分支,降低过期风险。核心是让团队看到"review 慢"的连锁成本。

review 慢不是"慢一点"而已,它会导致代码过期、冲突返工,是实实在在的效率损失。用数据量化这个成本,能让团队重视 review 效率。小 PR 快速合并是降低过期风险的关键。

#
★★

27. 你的团队 review SLA 被打破但没人追究,你怎么看怎么推动

你的团队 review SLA 经常被打破但没人追究,你该如何看待并推动?

  • 能否识别"无追究"导致 SLA 失去约束力
  • 能否设计轻量的监督与反馈机制
  • 能否推动形成"契约文化"

SLA 被打破但不追究,说明它只是"纸面约定",没有约束力。推动方式:一是让 SLA 达成情况"可见"——用看板/报表展示每个 PR 的 review 时长,超时的自动标红,让"打破"SLA 变得显眼;二是设置"轻量级的负责机制"——定期(如周会)review 一下 SLA 达成率,对经常超时的 PR 或 reviewer 做提醒,而不是惩罚;三是明确"SLA 是团队的承诺",打破时要说明原因并改进,形成"有责任、有闭环"的文化。argue 时强调:SLA 的价值在于"可信",没人追究的 SLA 反而会误导大家对交付时间的判断。

这套机制的核心是"可见 + 闭环"。让打破痕迹可见,定期回顾并追责,SLA 才真正有约束力。惩罚不是目的,让 SLA 可信、让团队有节奏才是目的。

#
★★

28. 你的 PR 包含"未来扩展"代码(YAGNI 不该写),你想拆分但同事说"留着吧",你怎么看怎么 argue

你的 PR 包含"为未来扩展准备的"代码(按 YAGNI 原则本不该写),你想拆分但同事说"留着吧",你怎么看待并论证?

  • 能否理解 YAGNI(You Aren't Gonna Need It)原则
  • 能否论证"预留代码"的隐藏成本
  • 能否给出"现在需求驱动"的替代方案

YAGNI 原则认为"你现在不需要的东西就不该写",因为预留代码会带来维护成本、测试负担、理解复杂度,而且预测的"未来需求"往往根本不会来。同事说"留着吧"通常是觉得"以后可能用到"。argue 时说明:预留代码如果没被真正用到,就是死代码,增加阅读和评审负担;如果需求真来了,基于需求重新设计往往比改预留代码更合适。最好的处理是"拆分"——把当前需要的功能合并进 PR,把"未来扩展"的代码移除或单独讨论,等需求真正出现时再写。这样既符合 YAGNI,又避免为想象中的需求买单。

YAGNI 不是反对设计,而是反对"为我不确定的需求写代码"。预留代码的隐藏成本(维护、测试、理解)往往被低估。拆分的价值在于把"当前需求"和"未来猜测"分开,只交付真正需要的。

#
★★

29. 你的 PR 包含 UI+逻辑改动,你想拆分但 UI 和逻辑紧耦合你怎么看怎么 argue

你的 PR 同时包含 UI 改动和逻辑改动,你想拆分但 UI 和逻辑紧耦合,你该如何看待并论证?

  • 能否识别 UI 与逻辑耦合的拆分难度
  • 能否给出拆分 UI/逻辑的具体方法
  • 能否在无法完全拆分时采用折中方案

UI 和逻辑紧耦合确实让拆分变难,但通常可以拆:逻辑层是纯函数/服务(不依赖 UI),UI 层只是展示和交互。拆分思路:把不依赖 UI 的业务逻辑(如数据处理、状态计算)抽成独立模块或文件,先合逻辑 PR,再合 UI PR;或者按"可独立验证的功能点"拆分,而不是按"UI/逻辑"拆分。如果必须强耦合(如状态管理),可以退而求其次:把"纯逻辑"和"UI 壳"分开,或至少让 PR 的每个 commit 语义清晰,便于 review。argue 时强调:拆分的目的是让每部分可独立 review、可独立测试,UI 和逻辑拆开能提高可测试性,长远看是值得的。

UI 与逻辑的耦合是拆分的主要困难,但按"可独立验证的单元"拆分通常可行。把逻辑抽离成纯模块,既利于拆分也利于测试。若无法完全拆,就保证 commit 语义清晰、分级 review。

#
★★

30. 你的 PR 包含兼容性代码(兼容旧版本),你想拆分但兼容代码必须和生产代码一起你怎么看怎么 argue

你的 PR 包含兼容旧版本的代码,你想拆分但兼容代码必须和生产代码一起改动,你该如何看待并论证?

  • 能否理解兼容代码与生产代码的耦合原因
  • 能否论证"兼容+生产"一起合并在某些场景是必要的
  • 能否在无法拆分时保证评审质量

兼容代码(如兼容旧版本数据格式、旧客户端)有时确实必须和生产代码一起改,因为改生产代码会破坏旧版本,兼容代码是"盾",必须同步上线。这种情况下强行拆分反而会制造"不兼容窗口"。所以 argue 的方向是:承认"兼容+生产"必须一起合并的合理性,但通过"其他维度"来降低评审负担——比如把兼容逻辑单独成函数/文件、加清晰注释、把不必要的其他改动剔出这个 PR,让 PR 只聚焦"生产改动+必要的兼容改动"。如果兼容代码是"可延后"的(旧版本短期内可以接受破坏),那就可以拆;如果必须同步,就保证这个 PR 的评审质量到位。

兼容代码与生产代码的耦合是"必要耦合",硬拆会制造不兼容窗口。合理做法是接受这个必要耦合,但通过剔除其他无关改动、聚焦核心来降低评审负担。关键是判断"兼容是否能延后"。

#
★★

31. 你的 PR 包含多个文件的修改,拆分会影响 git history 清晰度,你怎么看怎么 argue

你的 PR 包含多个文件的修改,你想拆分,但担心拆分会影响 git history 的清晰度,你该如何看待并论证?

  • 能否权衡"拆分"与"git history 清晰"的取舍
  • 能否用 commit 组织保证 history 清晰
  • 能否论证干净的历史比干净的 PR 更重要或反之

拆分与 git history 清晰并不矛盾,关键在 commit 的组织。如果拆分合理,每个 PR 对应一个完整的功能/修复,其 commit 反而更清晰、更易回溯。真正影响 history 清晰的是"混乱的 commit"而非"拆分的 PR"。所以 argue 的方向是:用"功能维度"拆分 PR,同时保证每个 PR 内的 commit 语义清晰(一个 commit 一件事),这样拆分不仅不影响 history 清晰度,反而让 history 更有价值——每个 commit 都能承载一个完整、可理解的变化。反过来说,一个几百行的 PR 里塞满无关改动,才是 history 的灾难。

拆分与 git history 清晰不是对立的,commit 组织才是关键。合理的拆分让每个 PR/commit 承载单一职责,history 更清晰。用"功能单元 + 清晰 commit"来平衡两者。

#
★★

32. 你的 PR 包含多种语言代码(JS+SQL+配置),你想拆分但需要不同 reviewer 你怎么看怎么 argue

你的 PR 包含多种语言/类型的代码(如 JS + SQL + 配置文件),你想拆分,但每种需要不同的 reviewer,你该如何看待并论证?

  • 能否识别"多语言 PR"对专业评审的需求
  • 能否论证按领域拆分让专业 reviewer 聚焦
  • 能否设计"多 reviewer 分工"的协作模式

一个 PR 包含 JS+SQL+配置,会让单一 reviewer 难以精通所有部分,评审质量打折。拆分的价值在于:让不同领域的 reviewer 只 review 自己擅长的部分,提高专业度。argue 方式:一是按领域拆分(如 SQL migration 单独一个 PR,前端逻辑单独一个 PR),让各领域 reviewer 专注;二是如果无法完全拆分,可以"一个 PR、多个 reviewer 分工"——每个 reviewer 只负责自己领域,用 PR 的评论分工(如 service 文件由后端 reviewer 看、页面由前端 reviewer 看)。同时用工具(如 CODEOWNERS)自动指定不同文件的 reviewer,让"多领域协作"有机制支撑。

多语言 PR 的关键是"专业评审",拆分成按领域分配 reviewer 是两条路径。拆不开时用 CODEOWNERS 和分工 review 保证专业度。核心是让每个部分都被专业的人审透。

#
★★

33. 你的 PR 包含性能优化+bugfix,你想拆分但两者都改同一文件你怎么看怎么 argue

你的 PR 同时包含性能优化和 bugfix,你想拆分但两者都改了同一文件,你该如何看待并论证?

  • 能否识别"同文件"带来的拆分冲突
  • 能否论证拆分后回滚/评审的独立性价值
  • 能否给出同文件拆分的方法(不同 commit/分步)

性能优化和 bugfix 是两种不同性质的改动,混在同一个 PR 里,会让评审混淆(bugfix 是修错,性能优化是改进),也影响回滚(如果优化有问题,会连带 bugfix 一起回滚)。即使两者改同一文件,也可以用不同的 commit 区分,让每个 commit 语义独立。argue 的方向:一是说明"独立 PR 便于独立回滚和独立评审"的价值;二是如果同文件确实无法拆成两个 PR,可以退而求其次——在同一个 PR 里用清晰的两个 commit 分开,并让 reviewer 分别 review 两个 commit;三是优先考虑"性能优化是否必要"——如果优化的收益不确定,可以只合 bugfix,优化单独评估。

性能优化与 bugfix 是不同性质改动,混在一起增加评审和回滚风险。用独立 commit 或独立 PR 区分,是管理复杂性的关键。必要时可只交付 bugfix,优化单独评估。

#
★★

34. 你的 PR 包含新 feature+bugfix,你想拆分但 bugfix 是新 feature 的前置你怎么看怎么 argue

你的 PR 同时包含新 feature 和 bugfix,你想拆分,但 bugfix 是新 feature 的前置条件,你该如何看待并论证?

  • 能否识别"前置依赖"的拆分边界
  • 能否论证"先合并前置 bugfix"再合 feature 的合理性
  • 能否设计依赖顺序化解耦合

当 bugfix 是新 feature 的前置时,拆分其实是合理的:先合并 bugfix 这个独立、可验证的 PR,再在上面叠加 feature PR。这样 bugfix 能被独立评审、独立回滚,feature 也建立在稳定基线上。argue 的方式:如果 bugfix 是 feature 的前置,说明 bugfix 本身是独立有价值的变化(修 bug 就是有价值的),把它单独成一个 PR 完全合理。第二层是"依赖顺序"——让 feature PR 基于已合并的 bugfix 分支,通过 rebase 或分步合入解决依赖。真正的难点是"feature 依赖 bugfix 的改动但无法先合 bugfix",这时可以协商是否把 bugfix 作为 feature 的第一部分单独提交,再逐步推进。

"前置依赖"恰恰是拆分的理由——bugfix 独立有价值,先合并它再合 feature,评审和回滚都更清晰。用依赖顺序和 rebase 管理先后,是解决耦合的关键。

#
★★

35. 你的 PR 因为依赖关系不能简单拆分(A 依赖 B),你怎么看怎么 argue

你的 PR 因为存在依赖关系(A 依赖 B)不能简单拆分,你该如何看待并论证?

  • 能否识别依赖关系的性质(正常依赖 vs 反向依赖)
  • 能否用"依赖顺序"拆分(先合 B 再合 A)
  • 能否设计可拆的依赖结构(接口、桩)

依赖关系(A 依赖 B)并不意味着不能拆分,而是要求"按依赖顺序拆分"——先合 B(被依赖的底层),再合 A(依赖 B 的上层)。这样每个 PR 都是可独立验证的。如果 B 还处于开发中、无法先合,可以:一是用接口/桩先把 A 和 B 解耦,让 B 的实现通过接口替换;二是把 B 拆成"最小可合并版本"先合,再逐步完善。argue 的核心是:依赖不是"不能拆"的理由,而是"拆的顺序"的依据。真正的难点是"循环依赖"——那要先解决架构问题,而不是硬拆。

依赖关系要求"按依赖顺序拆分",而非放弃拆分。用接口解耦、先合底层,是拆开依赖的标准手法。循环依赖才是需要架构重构的信号。

#
★★

36. 你的 PR 想拆分成 5 个小 PR 但担心合并冲突,你怎么看怎么 argue

你的 PR 想拆分成 5 个小 PR,但担心拆分后会产生合并冲突,你怎么看待并论证?

  • 能否认识到"合并冲突"与"PR 大小"的关系
  • 能否用"依赖顺序 + 频繁同步"控制冲突
  • 能否论证拆分实际上减少冲突

"拆分导致合并冲突"是个常见误解——实际上,大 PR 往往冲突更多,因为它在合并前积压了太多改动。拆分后,每个小 PR 尽快合并、频繁同步主分支,冲突反而减少。要控制冲突,关键是"依赖顺序 + 频繁同步":按依赖顺序合并(先合的给后合的打底),每个小 PR 合入后立即同步主分支,保持分支短命。argue 时说明:拆分 + 快速合入 + 频繁同步,是降低冲突的标准组合,而不是制造冲突。如果担心 5 个 PR 之间互相依赖,可以用"一个 PR 合入后,下一个基于它的最新分支 rebase"来管理。

拆分符合"小步快跑"原则,配合依赖顺序和频繁同步,能有效降低冲突。大 PR 的合并冲突风险反而更高。要澄清"拆分增加冲突"的误解。

#
★★

37. 你的 PR 想按模块拆分但 reviewer 说"逻辑分散",你怎么看怎么 argue

你的 PR 想按模块拆分,但 reviewer 说"拆开后逻辑分散了、不好理解",你该如何看待并论证?

  • 能否理解"逻辑分散"与"可读性"的平衡
  • 能否调整拆分粒度(按功能/按依赖而非按物理模块)
  • 能否论证"分散但可追踪"的评审方式

reviewer 说"逻辑分散",往往是因为拆分粒度不对——按"物理模块(文件/目录)"拆,会把一个完整的功能逻辑拆得七零八落。更合理的拆分维度是"按功能/场景":一个 PR 对应一个完整、可独立验证的功能,即使它跨多个文件。这样每个 PR 内部逻辑是连贯的,读者能整体理解。如果 reviewer 仍觉得分散,可以:一是给每个 PR 写清"背景、改动范围、验收标准",帮助理解;二是按"依赖顺序"拆分,让后一个 PR 建立在前一个的基础上,逻辑连贯性更强。argue 的核心是:拆分的单位应该是"功能单元"而非"物理文件",这样既拆了 PR 又保住逻辑连贯。

"逻辑分散"是拆分粒度不当的结果。按功能/场景拆分而非按物理模块拆分,能兼顾"PR 小"和"逻辑连贯"。用清晰的 PR 描述和依赖顺序增强可理解性。

#
★★

38. 你的 PR 里有一些是临时禁用代码(feature flag),你想拆分但 feature flag 很难管理你怎么看怎么 argue

你的 PR 里有一些通过 feature flag 临时禁用的代码,你想拆分但担心 feature flag 难以管理,你怎么看待并论证?

  • 能否理解 feature flag 的存在意义与治理挑战
  • 能否拆分"flag 配置"与"flag 对应的功能代码"
  • 能否建立 flag 的生命周期治理

feature flag 让代码在"开/关"间切换,是安全发布的重要工具,但确实难以管理(flag 越积越多、忘记清理)。拆分的思路:一是把"flag 的配置/开关变更"和"flag 包裹的功能代码"分开,让环境配置 PR 和功能代码 PR 独立,便于回滚;二是明确 flag 的"生命周期"——每个 flag 要有 owner、上线时间和清理计划,避免 flag 堆积。argue 时说明:feature flag 不是"不能拆"的理由,而是"需要治理"的理由。可以通过 flag 命名规范、自动检测"长期未触发的 flag"、定期清理机制,让 flag 可管理。这样拆分 + 治理结合,既保持功能安全发布,又避免 flag 失控。

feature flag 的价值在于安全发布,而治理难点在于生命周期。把 flag 配置与功能代码拆分、建立 flag 生命周期管理,是解决"难管理"的根本。flag 应是有 owner、有时间的临时状态,而非永久的代码。

#
★★

39. 你的 PR reviewer 说"拆成 2 个 PR"但你觉得"合并好理解",你怎么看怎么 argue

你的 PR reviewer 说"拆成 2 个 PR",但你觉得合并成一个更好理解,你该如何看待并论证?

  • 能否理解 reviewer 拆分的动机(评审、回滚)
  • 能否论证"合并"在什么场景下确实更好理解
  • 能否在协商中达成"拆"与"合"的平衡

reviewer 想拆,通常是出于评审质量和回滚安全的考虑;你想合并,是因为作为作者,你觉得整体逻辑连贯、好解释。两者都有道理,关键在于"度"和"理由"。argue 的方向:先承认 reviewer 的拆分有道理,然后说明"合并"在你看来更好的理由——如果两个改动逻辑上强相关、拆开反而让人困惑,合并确实更好理解。但要让步的是:如果拆分能显著降低评审难度或回滚风险,就接受拆分。可以折中:拆成 2 个半依赖的 PR(一个功能主体 + 一个配套),或保证每个 PR 自洽可合并。核心是"以评审质量为先",因为 reviewer 的担忧是实际风险,而"好理解"可以通过 PR 描述来解决。

"拆"与"合"之争要落到"评审质量与回滚安全"上,而非个人偏好。当 reviewer 的拆分有实际风险考量时,应尊重;同时用 PR 描述和提交组织解决"好理解"的需求。平衡是折中拆法。

#
★★

40. 团队 review 积压严重时,你如何设计“评审清理日或批量处理”机制,并度量 backlog 的下降?

当团队 review 积压严重时,你如何设计"评审清理日"或"批量处理"机制,并用指标度量 backlog 的下降?

  • 能否设计专门清理积压的机制(清理日/批量评审)
  • 能否定义 backlog 的度量指标与下降目标
  • 能否把清理机制与日常 SLA 结合,防止复发

设计上,先度量现状:统计积压 PR 数量、平均等待时间、按 PR 大小/风险分类。然后设"评审清理日"——每周固定半天,全员集中处理积压 PR,优先处理"阻塞性、高风险的 PR",并明确"清理日只处理积压、不接新任务"。为防复发,清理日要配合"新 PR 的 SLA 照常执行",否则清理会赶不上新增。度量上,用三个指标:积压 PR 数量(应下降)、平均等待时长(应下降)、积压清零率(每周能否清零)。设一个具体目标(如"2 周内将积压从 50 降到 10"),每周复盘进度。关键是清理不是一次性的,要配套"日常 SLA + 积压阈值告警"机制,防止又积压。

清理机制要"集中攻坚 + 防止复发"双管齐下。清理日解决存量,日常 SLA 和阈值告警解决增量。度量用积压数、等待时长、清零率三个指标,让清理效果可量化、可复盘。

#

41. 你的 PR 想拆分成 2 个但每个都不完整(功能不完整),你怎么看怎么 argue

你的 PR 想拆分成 2 个,但拆开后每个都不完整(功能不完整),你该如何看待并论证?

  • 能否识别"拆成不完整 PR"的风险
  • 能否论证"可独立合并"是拆分的必要条件
  • 能否给出"逐步完整"的拆分策略

拆分的核心原则是"每个 PR 必须可独立合并、可独立验证",如果拆成 2 个不完整的 PR,就等于把"半成品"合入主分支,破坏主分支的可用性,这是最应避免的。所以 argue 的方向是:要么调整拆分粒度,让每个 PR 对应一个"完整但有价值"的增量(即使不是完整功能,也是一个自洽的里程碑);要么不拆,维持一个完整 PR。如果非要拆,可以用"阶段式"拆法——第一个 PR 完成"可用的部分功能"(能独立运行、测试通过),第二个 PR 叠加剩余功能,保证每个阶段主分支都是可用的。核心是"可用性"而非"数量"。

拆分的红线是"每个 PR 都要让主分支保持可用"。与其拆成两个不完整 PR,不如调整粒度或保持完整。用"阶段式里程碑"拆分,能兼顾拆分与可用性。

#

42. 你 review 别人的 PR 很快(几小时),但你的 PR review 很慢,你怎么看怎么平衡

你 review 别人的 PR 很快(几小时),但你的 PR 被人 review 很慢,你该如何看待并平衡?

  • 能否理解"自己快、别人慢"的失衡
  • 能否把"自己快"转化为推动团队 review 节奏的杠杆
  • 能否保持"快的质量"而非"快的形式"

自己 review 快是好事,但要注意"快"不能以牺牲质量为代价。面对"自己快、别人慢"的失衡,可以:一是把自己快速 review 的经验和方法分享给团队(比如整理 review checklist、示范如何快速抓住重点),帮助别人提高效率;二是把"自己快"作为要求对方也可行的理由,但不是指责,而是"我们能不能一起把 review 节奏提上来";三是理解别人慢可能是 PR 太大或优先级问题,帮助对方拆解。平衡的关键是"让快的帮助慢的",而不是"我快所以你有义务快"。同时自己要确保"快而准",避免成为"快而浅"。

平衡不是"报复性地让别人也慢",而是"把快变成提升团队效率的杠杆"。分享方法、帮助拆解、共建节奏,比抱怨更有效。同时要守住"快而准"的质量底线。

#

43. 你的 PR 包含数据库 migration,migration 必须和代码一起发,你该怎么拆分

你的 PR 包含数据库 migration,migration 必须和代码一起发布,你该怎样拆分这个 PR?

  • 能否理解 migration 与代码的发布顺序约束
  • 能否设计"兼容性 migration"的拆分方式
  • 能否在约束下保证可评审、可回滚

migration 与代码的发布有一个关键约束:如果 migration 是破坏性的(如删列、改类型),旧代码会崩溃;所以 migration 必须与兼容的代码一起发。拆分思路:一是把 migration 分成"向前兼容"和"向后兼容"两步——先做"加列/加索引"这类向后兼容的 migration(旧代码可运行),再配合代码在后续 PR 中切换,最后做"删列"的收尾 migration。这样 migration 可以拆成多个 PR,每个阶段主分支都可用。二是 migration 本身单独一个 PR(包含 SQL + 回滚脚本),代码 PR 依赖它,靠"兼容窗口"保证安全。argue 的核心是:migration 不是"不能拆",而是"要按兼容性阶段拆",保证每个 PR 可独立发布、可回滚。

migration 拆分的核心是"兼容性":先做向后兼容的变更,再切换代码,最后清理。这样 migration 才能拆成多个安全的阶段。每个阶段都要有回滚方案,保证主分支可用。

#

44. 你的 PR 有 3000 行,reviewer 说"太大了",你该怎么拆分

你的 PR 有 3000 行,reviewer 说"太大了",你该怎样拆分这个 PR?

  • 能否识别 3000 行 PR 的构成并可拆解
  • 能否按功能/依赖/风险维度拆分
  • 能否给出可执行的拆分落地步骤

3000 行 PR 拆分前,先分析它的构成:是多个功能、多个模块、还是部分重构+部分新功能?然后按"可独立合并、可独立验证"的原则拆分。常见拆分维度:按功能点(每个功能一个 PR)、按依赖顺序(先底层后上层)、按风险(先低风险后高风险)、按类型(重构、新功能、bugfix 分开)。落地时先和 reviewer 对齐拆分方案,明确每个子 PR 的边界和验收标准,然后按顺序提交,先合入的 merge 后,后续基于最新分支继续。拆分后要让每个子 PR 都能独立测试、独立回滚,这样 3000 行就变成 3-4 个 500-800 行的可审 PR。argue 时说明"拆分是为了让每个改动被审透",而不是机械地追求行数。

3000 行 PR 的拆分要先分析构成再按维度切分。功能、依赖、风险、类型是四个常用维度。核心是"每个子 PR 可独立验证、可回滚",让拆分真正服务于评审质量。

#

45. 你的 PR 里有一些是纯重构(不影响功能),你想拆分但需要 reviewer 看两遍你怎么看怎么 argue

你的 PR 里有一些是纯重构(不影响功能),你想拆分,但担心 reviewer 需要看两遍代码,你该如何看待并论证?

  • 能否识别纯重构的拆分价值
  • 能否论证"拆开看两遍"比"混在一起看一遍"更划算
  • 能否用"重构先行"保证正确性

纯重构(不改变行为)和功能改动混在一起,是最难 review 的组合——因为 reviewer 无法分辨"哪里变了行为、哪里只是移动了代码"。拆分的价值恰恰在于:先单独 review 纯重构(用"行为不变"的验证,如测试全绿、diff 只有移动),再 review 功能改动。这样"看两遍"的每遍都有明确的关注点,比"混着看一遍却抓不住重点"更高效、更可靠。argue 时说明:重构和功能分开,可以让 reviewer 用"重构不改变行为"的标准快速验证第一遍,再用"功能正确性"专注第二遍,总成本反而更低。这也是"重构先行"的实践——先重构后加功能,每步都基于稳定基线。

纯重构与功能混在一起会污染评审关注点。拆开后"重构独立验证、功能独立验证",每遍目标清晰,总成本更低。重构先行是保证正确性的关键。

#

46. 你的 PR 包含工具代码+业务代码,你想拆分但工具代码必须在业务代码前 review,你怎么看怎么 argue

你的 PR 同时包含工具代码和业务代码,你想拆分,但工具代码必须在业务代码之前 review,你该如何看待并论证?

  • 能否识别工具代码与业务代码的依赖顺序
  • 能否论证"按依赖顺序拆分"的合理性
  • 能否设计"工具先行、业务跟进"的提交序列

工具代码(通用组件/工具函数)和业务代码(具体业务逻辑)混在一起,会让 reviewer 的注意力被分散。既然工具代码必须在业务代码前 review(因为业务依赖工具),拆分就按依赖顺序来:先提交并 review 工具代码 PR(它独立、可复用、无业务依赖),合并后再提交业务代码 PR(基于已合并的工具)。argue 的价值:工具代码单独 review 能让它被更仔细地审视(因为工具会被多处复用),同时业务代码也只关注业务逻辑,两者都更清晰。如果工具代码较长,还可以单独拆分,保证每个 PR 都可审可回滚。核心是"依赖先行"的提交顺序。

工具代码与业务代码按依赖顺序拆分,"工具先行、业务跟进",让每个 PR 关注点单一、可复用代码被更仔细审查。顺序是拆分的关键,不是"不能拆"。

#

47. 紧急 PR 的特快通道如何定义“紧急”边界,避免所有人滥用导致 SLA 形同虚设?

紧急 PR 的特快通道应如何定义"紧急"的边界,以避免大家滥用、导致 SLA 形同虚设?

  • 能否设计"紧急"的清晰判定标准
  • 能否防止紧急通道被滥用
  • 能否给紧急通道配套代价/审计机制

防止紧急通道滥用的关键是"把紧急定义得可判定、可审计、有代价"。定义上,紧急应限定为"生产事故、线上故障、安全漏洞、用户严重受阻"等明确场景,而不是"我的需求很急"。落地时:一是用"标准清单"判定(如"影响线上用户吗?阻塞支付吗?违反安全规范吗?"),不满足就不算紧急;二是给紧急通道设"代价"——急单需要作者补齐上下文、事后补 review、补测试,让"紧急"有成本而非零成本;三是审计——定期统计紧急 PR 的数量和理由,如果紧急比例过高,说明通道被滥用,要收紧。四是用"紧急=打破常规"的仪式感,让团队意识到紧急通道是稀缺资源,不是默认选项。核心是"可判定 + 有代价 + 可审计"。

紧急通道被滥用会导致 SLA 失效。用"标准清单判定 + 有代价 + 定期审计"三机制,让"紧急"从口号变成可验证的稀缺状态。紧急性需要可量化、可追溯。