人们抵制的代码变更 | AI生成和翻译
问题: 在大型企业和团队中,代码是否比说服人更容易改变——这是否呼应了冯·诺伊曼的观点,即数学很简单但人类很复杂?
回答:
是的——这是工程文化中最深刻的真理之一
冯·诺伊曼的名言——他实际说过什么
冯·诺伊曼在1947年美国计算机械协会第一次全国会议上作为主旨演讲嘉宾时说了这句话。他之前论证了计算机只需少量指令类型就能表达所有数学——当观众怀疑地笑时,他回应道:“如果人们不相信数学很简单,那只是因为他们没有意识到生活有多复杂。”
这个观点很尖锐:数学遵循干净的、确定性的规则。人类——他们的情绪、政治、习惯和激励——是远更混乱的系统。
代码 vs. 人类:在大型团队中的不对称性
这个洞见完美映射到大型组织中工程的现实:
改变代码 是一个确定性的、可逆的且可审计的过程。你写一个 diff,打开 pull request,运行 tests,merge,deploy。系统要么接受变更,要么不接受。没有 ego,没有 turf war,没有丢面子。代码没有职业生涯需要保护。
改变人类 则是完全不同的问题。计算机不在乎运行新软件。Apps 不介意新代码。装配线重新配置时没有感伤依恋。但人类不同——我们的例行公事给我们带来安慰、信心和一致性,重大变更会威胁这些东西。这就是为什么变更管理更多是关于人类,而不是变更的技术或流程。
这种不对称性在规模扩大时会变得更糟:
- 资历造成硬化。 资深工程师或经理往往构建了你想改变的系统本身。改变代码可能感觉像是对他们判断的个人攻击。
- 共识开销累积。 在小 startup 中,你只需说服3个人。在大公司中,你可能需要数十个不同团队、时区和激励结构的团队签字批准。
- 政治资本是有限的。 每次说服尝试都会消耗社会资本。代码变更只消耗 compute time 和 review cycles——远更廉价的货币。
为什么说服比 Pull Request 更容易失败
研究显示,在大多数组织中,三分之二的转型举措都会失败。对225家公司的变更举措研究发现,变更项目成果与四个硬因素一致相关:项目持续时间、绩效完整性(团队能力)、高层管理人员承诺水平,以及员工所需额外努力。
注意,这些失败因素没有一个是关于技术正确性的——它们全都是人类因素。
变更的“软”的一面实际上是更难的一面。让人们上船并参与可能决定成功与失败,因为个人需要以不同方式履行工作——他们改变行为并采用新流程的程度会对举措产生重大影响。
冯·诺伊曼洞见更深层的回响
冯·诺伊曼的观察实际上是关于复杂性类。数学有公理、规则和证明。你可以明确正确或错误。人类社会系统没有这种奢侈——它们受以下塑造:
- 损失厌恶:人们害怕失去的东西多于重视获得的东西
- 地位动态:改变流程可能隐含信号某人之前的工作不理想
- 歧义容忍度:不同人对不确定性的阈值差异巨大
- 部落认同:团队、codebase 和方法论成为身份标志
代码是一个形式系统。人类不是。而且正如冯·诺伊曼从他的博弈论和自 automata 工作中理解的那样——“抱怨人们自私而狡诈就像抱怨磁场不会增加除非电场有 curl 一样愚蠢。两者都是自然法则。”
对工程领导者的实际启示
这种不对称性是为什么经验丰富的工程师学会:
- 在改变文化前改变系统——让正确的事成为容易的事(例如,自动化 code formatting 以避免辩论)
- 投资叙事,而非仅正确性——技术正确是必要但不充分
- 先建立联盟,再提出变更——PR 最后来,而不是首先
- 将变更框定为增量而非修正——避免信号过去决定是错误的
大组织中最好的工程师不仅仅擅长写代码。他们擅长远更难的问题:让其他人类想要接受代码。
参考文献:
- Von Neumann Quotes — Wikiquote
- The Hard Side of Change Management — HBR
- Managing Organizational Change — ProductPlan
- What is Change Management — Prosci