- Authors

- Name
- Youngju Kim
- @fjvbn20031
引言 — 洞穴鱼与能力失明
最近在 Hacker News 上引发热议的 Ian Reppel 的文章《How Successful Companies Go Blind(成功的公司是如何失明的)》,从墨西哥洞穴鱼(Astyanax mexicanus)讲起。同一个物种,在相距不过几公里的地方,以两种形态存在。生活在谢拉德尔阿夫拉(Sierra del Abra)河流中的个体有眼睛,行为与普通鱼无异;而生活在同一山脉之下石灰岩洞穴中的个体,则双目失明、没有色素、半透明。
关键在于它是如何失去眼睛的。那并不是因为弃用而退化的。在洞穴环境中受精后的几个小时内,构建晶状体的程序就会触发过早的凋亡(apoptosis),也就是程序性细胞死亡,而本应用于视觉组织的能量,被重新分配到洞穴真正给予回报的性状上:更灵敏的嗅觉、在更深处的觅食、为下一次饥荒储备的脂肪。眼睛不是被放任不管,而是因为环境不再返还投入其中的能量,才被主动关闭的。
Reppel 把这一发生在公司身上的现象称为 能力失明(competence blindness),并小心地把它与我们熟悉的故事区分开来。这不是那种紧抓着昨日市场所给的客户与利润、最终轰然倒塌的经典颠覆式创新。陷入能力失明的公司不会消失。在强大的品牌、尚可的利润、不断增加的人手维持数年之久的同时,唯有其底层的基础工程在悄然萎缩。能力依然在基因里,只是表达被抑制了。
原因不是放任,而是抑制
Reppel 所描述的机制值得精确地指出来,因为它并不是常见的那种"变懒了"的说法。大部分损害是由增长造成的。当公司快速变大时,"人员招聘目标会把标准压弯,最终标准本身消失了"。仅凭内部惯例被招进来、被培养起来的工程师,最终成了招聘面试官,而他们挑人的标准,不是那种他们从未见过的能力,而是看这个人对眼下这团混乱有多自在。
接着,抑制开始了。提议补上积压维护的工程师会遭遇阻力,"最初的几个提议被否决之后,凋亡就开始了"。Reppel 最敏锐的观察是,技术提议不再被当作提议来读,而是被读成对那些构建并维护该系统的人的"对身份的攻击"。那些还看得见问题的工程师、那些有外部经验的人,很快就离开了。留下的人往往在自己都没有察觉的情况下适应了洞穴,而"这种适应最终变得与忠诚无法区分"。
这里不需要坏人,也不需要坏市场。一个稳定、竞争稀少的环境就足够了。当进入壁垒极高时,在位企业可以毫无反弹地不断累积官僚制与浪费。令人不安的一点正在于此:这种失明,是对一个不再为视力给予回报的环境的合理适应。
我认为这种"把生物学当作论据"的用法相当有用。不过我要加上一条保留意见:比喻更多是在说服,而非证明。洞穴鱼是一个真实存在、令人印象深刻的机制,但公司并不是基因组。所以,能力失明应当被当作一面锐利的透镜,而不是一条定律来对待。尽管如此,这面透镜之所以有价值,是因为它能预测出具体、可验证的症状。下面,我就来指出这些症状在工程组织中实际栖身于何处。
无人敢质疑的遗留系统
每个大型工程组织里,至少都有一个所有人都绕着走、却没人敢碰的系统。它很慢,没有文档,测试徒有其形,而要部署它,至今仍需要某位特定的资深工程师在凌晨两点醒着盯着。当你问它为什么这样运作时,回来的不是理由,而是历史。
Reppel 的身份机制解释了这种局面为何如此牢固。构建那个系统的人如今已是资深,通常还很有影响力。质疑系统,听起来就像在质疑这个人。于是那个说"这东西该重写了"的新人,得不到基于其主张是否成立的评价,而是被悄悄归类为天真、或与组织不合的人。提议被否决几次之后,他就不再提了。那个系统被维护,不是因为它好,而是因为它已经与某人的身份融为一体。这就是发生在单个组件层面的能力失明:组织再也无法把那个系统看作一个系统,而只把它看作一个人。
信号是情绪的温度。如果关于某个组件的、心平气和的技术性提问,反复引来防御式的反应,那么你就找到了一只组织已经关闭的眼睛。
现实在腐烂,仪表盘却依然绿着
失明藏身的第二个地方是指标。承受压力的组织,通常并不篡改数字。它们做的是更微妙、也更糟糕的事:会保持绿色的,就继续测量;会带来痛感的,就悄悄不再测量。可用性是 99.95%,冲刺燃尽图干净利落,仪表盘一片绿色——然而任何真正做部署的人都知道,系统很脆弱。因为真正要紧的那部分现实,从一开始就没被放上仪表盘。
这是一条穿着洞穴鱼外衣的古德哈特定律(Goodhart’s law)。当某个指标成为组织据以获得回报的目标那一刻,它就不再是衡量其他事物的好尺度了。那个指标是变灵敏了的嗅觉,而不被测量的现实是被关闭的眼睛。危险的变更因为被打包进罕见而可怕的发布里、被图表平滑地掩盖过去,所以部署频率看上去很健康。因为"故障"的定义被悄悄收窄了,故障的件数在减少。这些数字并不是欺诈,它们恰恰就是这个洞穴所奖励的性状。
我信赖的一个检查方法是差距测试:把指标所说的,和你非正式地询问最有经验的工程师时会得到的答案,并排放在一起。健康的组织,这个差距很小。失明的组织,差距很大,而且拥有一块不再与这个差距较劲的仪表盘。
当流程变成瘢痕组织
第三个症状是流程。Reppel 指出了"卓越中心(centre of excellence)"的悖论:原本散布在各处的卓越,被"抽取进一间流程作坊",而那些本想守护它的管控,反而催生了内在动机的萎缩。对于工程组织,我要说得更直白些:绝大多数沉重的流程都是瘢痕组织。评审委员会、强制审批、RFC 模板,各自都是作为对某个特定旧伤的反应而生长出来的,而在伤口愈合之后,它们几乎从不会被移除。
其结果,是一个能为它再也做不好的系统生产出无懈可击的设计文档的组织。流程的僵化很容易被误认为严谨,也正因如此它才得以存活——因为它看上去很像它所取代掉的那种细致的工程。然而真正的能力是分散的判断力,是那些你敢相信即便没有关卡也能做出好决定的工程师。当我们无法信任判断时,就添加关卡,而每加一道关卡,都是在告诉最优秀的人:你们的判断不需要。于是目光明亮的人离开,闭环就此完成。
有一个简单的诊断。对于流程的每一个强制环节,是否有人能说清:它所防范的失败是什么,以及这个环节最后一次真的拦下点什么是在什么时候?答不上来的环节就是瘢痕组织,而瘢痕组织,是看不见的。
结语 — 若要重新睁开眼睛
这篇文章以真诚而充满希望的调子收尾,我认为它当得起这份希望。基因依然在那里。失明是被抑制的表达,而不是删除。Reppel 这样写道:"游到别处去,那么你的视力也许会回来。"对个体工程师而言,这既具体,又往往是对的。只要换一个环境,在洞穴里度过的十年所关闭掉的判断力,可能几个月就回来了。
对组织而言则更难。而且我想坦率地说,这篇文章最冷峻的含义在于:逃离,对个人比对组织更容易。即便如此,这套机制本身也暗示了它的对策。把构建系统的人和系统本身分开,让遗留系统可以被质疑——评审的是组件,而不是人。去测量那些带来痛感的,而不是那些保持绿色的,并把仪表盘与工程师私下看法之间的差距当作真正的信号。像废弃代码那样废弃流程,而对于那些再也说不出自己防范了什么失败的关卡,就把它们删掉。还有,如果你从外部招来了一位目光明亮的工程师,那就把他早期那句"这东西是坏的",当作他能给出的最有价值、也最容易受损的东西来对待。因为洞穴已经在悄悄地教他,别再说那句话了。
如果站在带领组织的位置上需要一份简短的总结,那么这里有四个把健康的组织和失明的组织区分开来的问题。
- 关于最古老的那个系统,一个心平气和的技术性提问,引来的是好奇,还是防御式的反应?
- 绿色的仪表盘,和资深工程师私下所说的话之间,差距有多大?
- 对于每一个强制的流程环节,是否有人能说出它所防范的失败,以及它最后一次拦下点什么的时间?
- 当新人说"这东西是坏的"时,组织是感到好奇,还是去解释他为什么错了?
这篇文章留下的最难的问题,是个人性的。如果适应最终变得与忠诚无法区分,那么连你自己"现在还好"的那种感觉,你也无法完全相信。诚实的做法,是拿它去和那些还留着眼睛的人对照——最近入职的人、已经离开的人、别家公司的工程师。如果对他们显而易见的东西,你却看不见,那这不是意见分歧。你正看着的,是洞穴。