知识卡片

重构收益难以量化,导致团队内部形成三方认知错位

普通读书笔记卡

内容

重构这件事最麻烦的地方之一在于,它很难带来能被直接看见、能被量化的收益——很多关于重构的书籍会专门用独立章节讨论”如何向Boss说明重构的必要性”,这本身就说明重构的收益证明是一个普遍性的难题。举个具体的例子,如果一个工程代码可读性差,能不能说清楚”这到底会影响多少开发效率”?可以说”之前改一个模块要3天,重构之后1天就够了”,但对方完全可能反问”不就是做个数据库操作吗,为什么要3天”——想要严谨证明”烂代码确实会多花2天开发时间”,往往会陷入一种荒谬的举证困境(比如要证明”我看了3天才看懂这个函数在做什么”或者”我做这么简单的修改要花3天”,这类命题本身就很难被客观验证,因为开发效率因人而异,烂代码”烂”的程度也没有一个简单标准化的衡量方式)。这种收益难以量化的现实,导致了团队内部经常出现三方认知错位:不写代码的人(管理者)倾向于认为重构很简单,无论新人老人都有责任去做;代码老手认为迟早应该重构、但重构很难,于是选择”现在凑合用,这事别落在我头上”;代码新手则更朴素地认为”不出Bug就谢天谢地了”,根本不知道该怎么重构。这三方各自的判断都有其道理,但组合在一起就形成了一种没有人真正推动重构落地的僵局——管理者低估难度、认为人人有责任去做;真正理解重构复杂性的老手,因为清楚这件事投入产出比不明确、风险不低,反而更倾向于回避。这个案例提示了一条组织行为层面的经验:任何”收益难以量化、执行成本高、责任归属模糊”的工作,即使几乎所有人都在原则上认同它值得做,也极容易因为这种认知错位而长期停留在”该做但没人真正做”的状态,除非有人明确分配资源、给出具体目标和方法。

参考来源

- 位置:《高可用架构(第1卷)》第5章《运维保障》"5.5 系统运维之为什么每个团队存在大量烂代码"节,"5.5.3 重构不是万能药"(源文件:_epub-src/OEBPS/Text/Chapter5_5_4.xhtml) - 结论依据:原文说明"重构也是一件很麻烦的事情:它很难带来直接的收益,也很难量化……在没有分配给你更多资源,没有明确的目标、具体方法的情况下,很难想象除了有代码洁癖的人之外还有谁会去执行这种莫名其妙的任务……不写代码的人认为应该重构……代码老手认为迟早应该重构,重构很难,现在凑合用,这事别落在我头上……代码新手认为不出Bug就谢天谢地了",直接支撑本卡片结论。 - 原始内容:不写代码的人认为应该重构,重构很简单,无论新人还是老人都有责任做重构。代码老手认为迟早应该重构,重构很难,现在凑合用,这事别落在我头上。代码新手认为不出Bug就谢天谢地了,我也不知道怎么重构。