企业在困境中普遍采用一组被统称为"代偿"的做法:举债维持现金流、以加班顶替产能、以裁员顶替成本结构的调整、以降价顶替产品力、以少数关键人物的过度承担顶替制度化的判断。关于如何摆脱这一组做法,现有的主流回答共享一个未被说出的假定:代偿是加在系统之外的一层支持,因此撤除它是一次减法,撤完之后剩下的是"未被支持时的那个企业"。本文用三门与企业无关的学科的既有结论顶住这个假定:冶金学主张健康由当下的组织与内应力状态单独结算,重症医学主张由当下条件场中能否维持内环境单独结算,版本校勘学主张由传承路径的记录单独结算;三家互不相容,而三家共同站在上述假定上。推翻它的材料出自重症医学自己:控制性机械通气在十八至六十九小时内使人的膈肌肌纤维横截面积下降约一半——支持不是加在被支持者之外的一层,它在维持读数的同时拆掉承载者。据此本文提出构念"空承":一项工作的名义归属仍在原处、实际承载已迁走、且因替代者一直在工作而该位置长期不被调用,其失效因此从不产生信号。辨别装置是一条五段承载迁移阶梯(顶替—免调—拆解—归属空置—归属改写),靶段在"免调"。读数为空承距 L:自名义归属方最近一次自己完整执行并留痕以来,这项工作又被执行了多少次(以场合次数计,无量纲;从未有过记为无穷)。判定线三处统一:L≥5 且同期该项产出指标处于历史正常或更好区间即为空承,L 为无穷即为深度空承。不带程度词的判据是:这项工作,上一次由它名下的那个位置自己从头做完并留下记录,是什么时候。本文用公开软件包注册表的元数据做了一次预注册在先的检验,主假设被证伪、方向不变而幅度不足,并逼出概念的一处修订(承载迁往可指名位置与迁往无人格装置在读数上完全一样而处置相反)。
关键词:空承 空承距 承载迁移 代偿撤除 免调 组织健康修复
一家企业陷入困境的时候,救它的办法几乎总是先出现一批看上去很像的动作:向银行或股东要一笔钱,把交付期靠加班压住,把成本靠减员压住,把订单靠降价保住,把最难的那几件事交给最靠得住的那两三个人。这些动作有一个共同点——它们都能让当期的读数好看起来,而且好看得很快。三个月后,现金没断,交付没塌,账面还在,客户还在。
问题也是从这里开始的。多数企业不是在这一步倒下的,而是在这一步之后进入一种更难处理的状态:读数一直不难看,而企业已经不能靠自己走路了。再过两年,借的钱要还,加班的人要走,降下去的价提不回来,那两三个人一旦离开,一整块业务当场停摆。到这时人们才发现,这两年里被"稳住"的不是能力,是数字。
于是有了本文要回答的那道题:一家已经这样运行了几年的企业,如何完成一次真正的健康修复——如何摆脱借债、加班、裁员、压价与关键人物过度承担这一组代偿方式,重新获得自主运行与持续创新的能力?
这道题要的答案是一条路:从哪里起步、经过什么、实现什么,以及在哪一步还插得上手。它不是一道"什么才算健康"的定义题,也不是一道"为什么会病"的成因题。把它当成定义题来做,会得到一个漂亮的健康标准而没有可执行的次序;当成成因题来做,会得到一份让人无处下手的归因清单。
现有的回答不缺。财务上的说法是先止血再造血,运营上的说法是把救火的工时挪到改进上去,组织上的说法是把关键人物的知识沉淀成制度,战略上的说法是重新找到能支撑定价的产品力。这些说法各自都对,而且各自都有大量的实践支持。本文不打算再加一条。本文要问的是,这些说法底下有没有一件它们共同默认、又从来没有人说出口的东西——如果有,而且它不成立,那么上面这些说法之所以在很多企业里执行到一半就散掉,原因可能不在执行力。
为了看清这件东西,本文不从企业管理内部取材。企业管理是这道题的主场,主场里的任何一种说法都已经被这道题的语言塑造过一遍,用它来检查这道题的地基,等于用尺子量它自己。本文改从三门离企业运行足够远的学科取材:一门研究金属构件里那些外载为零时仍然存在的内力,一门研究被机器维持着呼吸的人如何重新自己呼吸,一门研究一部被抄了一千年的古书如何判断哪一处字是原来的。三门学科对"什么叫恢复"给出的答案互不相容,而正是这种不相容,把三家共同站着的那块地露了出来。
全文的路线是这样的:先摆出三家各自的立场与它们不能同时成立的地方(第二、三节),再指出它们共同假定了什么(第四节),然后用其中一家自己的材料把这个假定推翻(第五节);由此得到本文的构念与它的辨别装置、读数(第六至八节);再给出一句不带程度词的判据与它在五个场景里的答案(第九节);然后回答本题正面要的那条路(第十节);其后是跨领域的兑现、三处反过来削弱本文的约束、与最近的十种说法的分界、与同栏并行篇目的分界(第十一至十四节);第十五节报告一次预注册在先的数据检验,包括它推翻本文的地方;最后是不适用的边界、证伪条件与一条写死日期的赌注、本文自己落在哪一段(第十六至十八节)。
选这三门的理由不是它们高明,是它们对同一个问题给出的答案不能并存,而且它们的失败定义互相翻译不过来:金属构件的失败是脆断与夹杂超标,重症病人的失败是失控与不可逆损伤,古籍整理的失败是定本错与伪校。三本账互不通兑,这一点很要紧——账本能互译的两门学科,争起来是可以判谁对的,判完了就没有别的东西了。
冶金学处理的是一个构件是不是一个站得住的、稳定的、可以从周围环境里单独拿出来考察的整体。它的核心主张是:性能由显微组织决定,组织由成分与工艺决定;因而只要把最终的组织状态与内应力状态测出来,这个构件的健康就已经结算完毕,它经历过什么、走过什么路,不必知道。
这门学科的三条支撑分别落在结果、路径与条件上。结果上:同一成分的钢,退火态、正火态、淬火回火态的强度与韧性可以差出数倍,而判定只看最终态。路径上:消除焊接与冷加工留下的残余应力,靠的是去应力退火——在低于相变温度的区间保温,让材料的屈服强度随温度下降,内部超过该温度下屈服强度的那部分应力通过微量塑性变形被"松弛"掉;工艺参数由温度与时间共同决定,工程上常用应力松弛的时间—温度当量来外推。条件上:残余应力可以用X射线衍射、中子衍射或钻孔应变释放法测出来(Withers 2007;Totten 等 2002),一旦测出来,历史就可以被丢掉。
这门学科自己承认解决不了、又天天在用的那件东西是:外载为零时,构件内部已经带着一套自平衡的力。也就是说,一个从外面看什么都没有承受的东西,内部可能正满负荷地互相顶着;而这套力只有把它破坏一点(钻孔、切片)才测得出来。与之配套的还有一件:加工硬化能显著提高强度,代价是延性储备被消耗,而常规验收测强度不测剩余延性——指标改善与储备耗尽在同一个动作里同时发生,验收只看得见前一半。
重症医学处理的是速度、轨迹与惰性:一个器官系统在给定的支持水平下,多快能被推回可控区间,撤支持的时候要多慢,慢到什么程度才不至于反弹。它的核心主张是:只要把条件场(氧合、循环、镇静深度、通气支持)调到位,显露出来的生命体征与恢复的路径都会跟着来;健康由"在当下这个条件场里能不能维持"单独结算。
结果上:血气、氧合指数、乳酸清除这些读数在支持下回到区间,就说明当下可控。路径上:撤离机械通气有一条成型的次序——每日筛查、自主呼吸试验、拔管(Esteban 等 1995;Boles 等 2007),配合每日中断镇静输注(Kress 等 2000)。条件上:这些读数一旦离开支持就不成立,因而判定必须放在具体的支持水平上说。
这门学科自己承认解决不了、又天天在用的那件东西是:判断一个人还能不能自己呼吸,唯一的办法是把支持撤掉一段时间试一次。自主呼吸试验之所以是标准做法,正因为在支持下测到的任何读数都不能回答这个问题。而试验本身有代价:失败一次之后呼吸肌需要相当长的时间恢复,因此试验不能连着做。
校勘学处理的是连接、次序与结构:哪一个本子从哪一个本子来,若干处异文按什么关系排列,合起来是一棵什么形状的树。它的核心主张是:一部书成品的文字只是传承路径的一个投影,离开校勘记去读任何一个"通顺的本子"都不可信;健康由路径的记录单独结算。
结果上:任何一个定本都是编者的产物,不是传承的产物。路径上:谱系法靠"共同讹误"确定抄本之间的从属关系(Maas 1927)。条件上:一旦发生混合传承——一个抄本同时从两个系统抄——谱系法即失效,Maas 对此写下过那句有名的断语:对混合传承是无药可医的。
这门学科自己承认解决不了、又天天在用的那件东西是:抄手倾向于把读不通的地方改通。因此校勘有一条与直觉相反的通则,较难的读法优于较易的读法(这条通则的近代表述来自 Bengel 1734)。它的含义很硬:每一次"修复"都在消灭判断它原来坏在哪里的证据。也正因为如此,这门学科为自己造了一个专门的装置——校勘记,它的全部功能就是把被弃掉的那一项原样留在页脚。
把三家排开,可以看到它们并不是在同一件事上给出三种答案,而是各自锁死了一个不同的终点:冶金锁最终显露出来的状态(组织与应力场),重症锁条件场(支持水平与内环境),校勘锁路径(传承的次序与关系)。三个终点各不相同,这正是它们可以互相顶住的原因;若三家锁的是同一个终点,它们的分歧就只是同一条轴上的不同刻度,判一下谁对就结束了。
三对冲突,每一对都是"这条成立那条就不成立",不是"两边各有道理"。
冶金说算数:测得的组织与残余应力就是这个构件此刻的健康,不必问它是怎么来的。重症说不算数,而且正是这种"当下读数正常"最危险——一个被机器通着气的人,血气可以完全正常,而他的膈肌正在以小时为单位萎缩;要知道他健不健康,只能把机器撤掉试一次。
两条不能并存的地方很清楚:冶金主张终态可测因而可结算,重症主张在支持存在的条件下,终态测得再准也回答不了那个问题。若冶金对,重症的自主呼吸试验就是多余的;若重症对,冶金"只看终态"的验收在任何仍处于支持之中的对象上都失效。
重症的判定是扰动式的:撤掉支持一次,看它自己起不起得来。校勘的判定是非扰动式的,而且它有理由——每一次介入都改变证据,抄手把一处改通之后,那处原来的坏就永远读不出来了;所以判定只能靠已经留下来的痕迹,靠共同讹误,靠校勘记里那些被弃掉的读法。
两条不能并存:若扰动可判,校勘学就该主动去"试改",而它恰恰把试改列为大忌;若扰动即毁证,重症的自主呼吸试验就是在用一次不可逆的介入去获取信息,而它每天都在做。
去应力退火之后,工件的尺寸会变,因为消除内应力的唯一途径就是让它再变形一次。冶金判定这仍然是同一个构件——同一性由成分与组织给出,尺寸在公差内即可。校勘判定改了一处就是另一个本子——同一性由传承链给出,一个字的改动就是谱系上的一个新节点。
两条不能并存:若同一性由终态给出,校勘学关于"这是另一个本子"的整套判断就没有对象;若同一性由路径给出,冶金学"退火后还是那件东西"的验收在原则上说不通。
把三对冲突压成一句:三家争的是"恢复"该在哪里被结算——在终态、在条件场的应答、还是在路径的记录上。 三家都能自圆其说,因为三家各自守着一个不同的终点;而争论之所以化解不掉,是因为没有一个共同的裁判位置。到这里为止,我们得到的还只是一场三方争论。要往下走一步,得去看这场争论底下有没有一件三家都没说出口的东西。
把三家的话并排念一遍,会发现它们在一处出奇地一致,而这一处从来没有人说出来过:
代偿是加在系统之外的一层支持;因此撤掉它以后剩下的,是"未被支持时的那个系统"。
冶金的说法里,残余应力是"多出来的一套内力",去应力就是把它拿掉,拿掉以后剩下的是这块金属本身。重症的说法里,呼吸机是"外加的支持",撤机就是把它减掉,减掉以后要面对的是这个人本来的呼吸能力。校勘的说法里,抄手的改动是"后加的层",剥掉它就能逼近原本。三家吵的是"剩下的那个东西该由谁来认定"——终态、应答、还是痕迹——而没有一家怀疑过"剩下的那个东西"就是原来的那个东西。
这条前提的验收方式很简单:把它念给三家听,三家都会说,这还用说吗。会引起争论的不是共有前提,是第四家的立场。
它在企业这一侧的模样更好认。所有关于"摆脱代偿"的主流处方,无论从财务、运营还是组织入手,都可以被写成同一个形式:把那一层减掉,把资源还给本来应该做这件事的那个部门/岗位/流程,然后它就会开始做。止血再造血是这样,把救火的工时挪回改进是这样,把关键人物的知识沉淀成制度也是这样。减法之后是回归——这是整条处方链条的第一块砖,而它从来没有被单独检查过。
推翻这条前提的材料,不能从外面搬。从外面搬一个理由来反对它,得到的只是第四家的立场,三家可以各自退回自己的阵地。要让三家退不回去,材料必须是三家之一自己已经掌握、已经发表、只是从来不往这个方向用的事实。
这件材料出自重症医学自己。
2008 年发表在《新英格兰医学杂志》上的一项研究,对脑死亡器官捐献者在获取器官时取下的膈肌做了活检,把接受控制性机械通气 18 至 69 小时的一组与手术中短时通气(2 至 3 小时)的对照组作比较:前者膈肌慢肌纤维与快肌纤维的横截面积分别下降约 57% 与 53%(Levine 等 2008)。相关的机制研究把这一现象命名为呼吸机所致膈肌功能障碍(Vassilakopoulos 与 Petrof 2004)。
这件事在重症医学自己的领域里回答的是另一个问题:撤机为什么常常失败,以及是否应当尽早改用保留自主呼吸的辅助模式。它从来不被当作"关于恢复能不能被结算"的证据。
但把它放到第四节那条前提旁边,它的杀伤力是直接的:呼吸机不是加在膈肌之外的一层支持。它在维持血气读数的同时,正在拆掉那个本来要承担呼吸的东西。 十八个小时——比一个班次长不了多少——已经足够让肌纤维的横截面积掉掉一半。因此撤掉支持之后剩下的,不是"未被支持时的那个膈肌",而是一个在被支持期间被改造过的膈肌,且改造的方向恰恰是"不再需要自己工作"。
这一下,三家的争论同时失去了地基。冶金无法再主张终态可以单独结算——因为那个"终态"是在支持之中长出来的;重症无法再主张调好条件场就能等到功能回来——因为条件场本身参与了拆解;校勘无法再主张剥掉后加的层就能逼近原本——因为改通的那一笔已经把"原本坏在哪里"一并抹掉了,这一点校勘学自己比谁都清楚。
于是这道题的形状变了。原来的问法是"怎么把代偿减掉"。现在的问法是:代偿撤掉以后,那个位置上还有没有人?
本文把上面那件事命名为空承。
界定如下:一项工作的名义归属仍留在原来的位置上,实际的承载已经迁到别处;因为替代者一直在按时把活干完,这个名义位置长期不被调用;因而它的失效从不产生任何信号。
四条性质,逐条都可以拿去核:
其一,它不是能力不足。能力不足是一个量,可以测、可以补;空承是一个事件的缺席——那个位置上根本没有发生过执行,因此无从谈量。一个部门可以在纸面上有编制、有预算、有考核指标,而在最近两年里一次也没有从头到尾自己做完过它名下的那件事。
其二,它不是职责不清。职责不清的组织里,出事的时候没有人认账;空承的组织里,职责表写得非常清楚,出事的时候也确实有人认账——只是那个人不是做这件事的人。空承与清晰的责任制不冲突,它常常与最清晰的责任制共存。
其三,它不是负债。负债有余额,余额可以清偿,清偿完就归零。空承没有余额,它是"那儿没有人"。把资源投给一个从未被调用过的位置,不会自动产生调用;钱到账了,事还是那个替代者做的。
其四,它的失效不产生信号。这是它最难被发现的原因,也是它与前三样最要紧的区别。一个从来不被调用的位置,永远不会失败;不失败就不进任何异常清单;不进异常清单就不会被排查。它唯一的显露方式是那个替代者消失的那一天——而那一天到来时,人们读到的是"某人离职造成业务停摆",一个关于人的故事,不是关于位置的。
把这四条合起来看,空承是一类在三家的账本上都没有本体地位的东西。冶金的账上有应力、有组织、有夹杂,没有"这一块本该由谁承担而现在没有人";重症的账上有支持水平、有生命体征、有肌力评分,膈肌萎缩是可测的,而企业里没有一次可以照着做的自主呼吸试验;校勘的账上有异文、有共同讹误、有校勘记,而被抄手改通的地方连异文都不留。三本账各自都能记平,而这样东西在三本账上都不是一个条目。
还要说清一件事,以免误读:空承不是坏事的同义词。承载迁移在很多时候是正常的分工演化,甚至是效率的来源。本文要打的不是迁移本身,是迁移之后归属没有跟着改写的那一段。归属改了,账就重新记得住;归属不改,就出现一个名义上有人、实际上无人、而且不会报警的位置。
承载不是一次搬完的,它有次序。本文把它写成一条五段的阶梯,每一段有各自的可见性与各自的处方;把它们混成一件事来处理,是多数修复方案在中途散掉的原因。
第一段·顶替
原来的位置仍在做这件事,只是遇到高峰、遇到难题时由别人顶一次。此时归属与承载一致,顶替是可见的、临时的、被当作例外记录的。可见性最高,风险最低。
第二段·免调
顶替变成默认路径。工作照常完成,质量往往比以前更好(替代者做得更熟),而原来的位置不再被调用——不是被禁止,是没有场合会轮到它。这是本文要打的那一段。它的三个签名如下:
签名一,短期指标改善。交付更快、错误更少、成本更低,因为集中到熟手身上本来就更有效率。
签名二,失效不产生信号。原位置从不被调用,因而从不失败;所有异常清单、复盘会、审计报告里都不会出现它。
签名三,自我加固。越是把流程写规范,越是把"由谁来做"写进标准作业文件,原位置越是永远轮不到。规范化在这里起的作用与直觉相反:它把一次权宜之计固定成了唯一路径。
这一段必须与两种看得见的坏区分开,否则会误诊。它不是"该做的没做"——活干得比以前更好;也不是"该有的没有"——编制、预算、职责表一样不少。任何不需要本文这套读法也看得出来的坏,都不是这一段。
第三段·拆解
原位置的承载结构开始被回收:熟悉这件事的人转岗或离职而不补,相关的工具与数据权限被收走,配套的培训停办,接口被简化成"直接找那位"。此时若去做一次试撤,得到的不是"做得慢一点",是"做不了"。
拆解这一段有一个特点:它在账上是好消息。取消一个没人用的权限、停办一门没人报名的培训、合并两个重叠的岗位,每一笔都是降本增效。
第四段·归属空置
那件事只有替代者能做,而职责表没改。这一段是脆的:替代者一旦不在——离职、休假、被抽调、机器停机——工作当场停摆,而且找不到第二个人接得住,因为没有人做过。此时企业才第一次看见这个位置,代价是一次事故。
第五段·归属改写
要么承认迁移,把归属正式改到实际承载者身上,重建它的配套与备份;要么把归属拿回来,重新在原位置上发生执行。只有走到这一段,账才重新记得住。多数企业的修复方案直接跳到"把归属拿回来",跳过了前面对现状的登记,于是资源投给了一个空位。
这条阶梯有一个不对称:往下走不需要任何人做决定,往上走每一步都需要。 从顶替滑到免调,只需要连续几次高峰;从免调滑到拆解,只需要几次正常的降本;从拆解滑到空置,只需要时间。而任何一次往回走,都需要有人明确地安排一次"让原位置自己做一遍",并且接受这一次做得更慢、更差、成本更高。
空承距 L:自这项工作的名义归属方最近一次自己完整执行并留下记录以来,这项工作又被执行了多少次。计量单位是场合次数,不是日历天数;从未有过一次记为 L=∞。
用次数而不用天数,有三个理由。一是无量纲,可以跨领域并排比较:一台设备的检修次、一次月结、一版软件发布、一次客户投诉处理,量纲各不相同而计数相同。二是可事后清点,不依赖任何人的印象。三是它把"这个部门到底还行不行"这种态度问题变成一个可以查的数。
L≥5 且同期该项产出指标处于历史正常或更好的区间,即判为空承;L=∞ 判为深度空承。 本文正文、证伪条款、赌注三处一律引用这一条,不另设阈值。
"同期产出正常"这个附加条件不是修饰,它是把空承与普通的失能分开的那一刀。产出已经变差的位置不需要本文这套读法,任何人都看得见。
空承清单:把当前 L≥5 的工作项逐条登记,每条四栏——工作项/名义归属方/最近一次自执行的时点与凭据位置/当前实际承载者。第五栏是承载去向的二分:迁往一个可指名的位置(另一个人、另一个部门、另一家供应商),还是迁往一个无人格的装置(一套自动化、一个模型、一条流水线)。这一栏是本文在数据检验之后补上的,理由见第十五节。
一个新读数若与既有的主要指标高度相关,它会立刻被读成那个指标的代理,白造。因此必须举得出"既有指标最好看、而这个数最难看"的真实例子。本文的例子来自第十五节的数据:在公开软件包注册表里,发布最频繁、最新版本距今最近的那几个项目,恰恰是空承距最大的——某个前端构建工具在本文取数前五天刚发布过新版本,而它的名义维护者名单里的自然人,最近一次自己发布是在 509 个版本、1769 天以前;另一个浏览器自动化项目七天前刚发布,其名义维护者最近一次自己发布距今 2308 天。按活跃度、发布新鲜度、维护频率这些既有指标看,这两个项目都在最好的一档。
一次"场合"=这项工作被完整执行一次,并在正式记录里留下一条条目。未在正式记录里留痕的执行,不计入分母也不计入分子——这会低估 L,本文接受这个方向的偏差,理由是相反方向的偏差(把口头汇报算作执行)会让读数无法核对。
"自己执行"=名义归属方名下的人从起点到终点完整完成。中途任一必需步骤由他人代做,即不算一次自执行。审批不是执行:归属方签字放行而由他人操作的,计入"他人执行"。
边界例一:归属方与替代者共同完成,且事后无法分解谁做了哪一段——单列"不可分解"一栏,不计入 L,也不得据此判为健康。这是本文在第十二节承认的一处让步。
边界例二:一次执行跨越两个记录周期——以完成时点归入所在周期。
边界例三:装置执行、归属方复核——计入"装置执行",L 照常累加;这是第十五节数据里最常见的一种,也是最容易被误读成健康的一种。
构念与读数都容易被读回旧概念,除非它配一句可以直接拿去问记录、而不是拿去问人的判断的问话。本文的这一句是:
这项工作,上一次由它名下的那个位置自己从头做完并留下记录,是什么时候?
这句话里没有"应当""充分""真正""实质性""合理"这类词。它不问谁的责任心强,不问能力够不够,不问流程合不合理。它只问一个时点,而这个时点要么在记录里,要么不在。
下面是它在五个场景里的答案。五个答案互不相同,其中两个是查出来的、并且反过来改了本文。
场景一·一家做了三年降价保单的制造企业
问:报价这件事,上一次由销售部自己从头核完成本、定完价、留下核价单,是什么时候?答:两年半以前。此后所有报价的成本口径都由那位从财务转岗过来的定价经理一个人核,销售部的核价单栏位一直填着"见定价经理确认"。L=∞(在"由销售部完成的核价"这个口径下从未发生)。这家企业的报价响应速度在同行里是最快的。
场景二·一家靠加班顶交付的软件公司
问:版本发布这件事,上一次由发布负责人自己完整做一遍并留下发布记录,是什么时候?答:他每次都在场,但从第 14 版起,实际执行的是一套流水线脚本,出问题时由写脚本的那位工程师处理。发布负责人签字。按本文的口径,签字不算执行,L 至少是 40。这一条是本文的判据在真实材料里第一次被逼到修订:它把"迁往装置"这一类逼了出来(见 8.3 与第十五节)。
场景三·一家换了三任分管副总的集团财务部
问:并表这件事,上一次由集团财务部自己做完一遍,是什么时候?答:每个月都做。L=0。这个场景的价值在于它是阴性对照:本文的读数必须能读出"这里没有问题",否则它就不是一个读数,是一顶帽子。
场景四·一部被抄了八百年的古籍
问:这一处异文,上一次有抄手在正文里保留了那个读不通的读法,是什么时候?答:现存最早的三个本子里都已经是通顺的,只有一个十四世纪的注本在旁注里提到"或作某"。这一条是查出来的:它说明当承载迁移发生在"修复动作"本身上时,L 的分母(场合次数)也会被抹掉——每一次改通既不留痕,也不算一次"由原位置执行"。据此本文在 8.5 加了一条:未留痕的执行不计入分母,并明写这会低估 L。
场景五·一个被机器通气十天的病人
问:呼吸这件事,上一次由他自己完整地做一段并被记录下来,是什么时候?答:昨天的自主呼吸试验,30 分钟,记录在案。L=0,尽管他的膈肌已经萎缩。这一条也是查出来的,而且它反过来削弱了本文:自主呼吸试验证明了"发生过一次自执行",却不证明承载已经回来。本文因此不能主张"L 归零即健康",只能主张"L 大即有问题"。这是一个单侧读数,第十六节把它写进不适用的边界。
五个答案里,一、二、四、五各不相同,第三个是零;后两个是查出来的,并且各自改掉了本文原来打算写下的一句更强的话。
现在回答本题正面要的东西——一家已经这样运行了几年的企业,怎么走。
本文给的不是一份处方清单,是一条次序。次序是死的:任何一步跳过前一步,它自己就读不出东西来。
第一步·登记(任务重构层,最便宜)
在动任何一项代偿之前,先把两栏分开写:这项工作的名义归属方是谁;最近一次执行它的实际承载者是谁。 一栏变两栏,就这一个动作。
这一步不需要任何人让步,不改变任何权责,不花钱,一个中等规模的企业一周之内可以做完主要业务线。它之所以排第一,是因为后面三步全部依赖它:不知道该看谁的痕迹,试撤就读不出任何东西;不知道原来的归属是谁,接痕就没有对象。
登记的产物就是 8.3 那张空承清单。第一次做出来的时候,多数企业会在这张表上看到两件意外的事:一是清单比预想的长;二是清单里 L 最大的那几项,恰好落在当期表现最好的那几条业务线上。
第二步·试撤(流程再造层,可行性完全取决于第一步)
试撤不是取消代偿,是在一次真实的场合上,让代偿缺席一次。目的不是省下代偿的成本——那点成本可以忽略——目的是制造一次调用,让那个位置有机会发生一次执行。
三条硬约束:其一,必须是真实场合,不是演练;演练与真实场合在记录上难以分辨,而演练不产生本文要的那个东西。其二,必须有兜底与时限,超时由代偿者接回,这不是失败,这是设计。其三,间隔不得短于一个完整业务周期。这一条来自重症医学:自主呼吸试验失败之后呼吸肌需要相当长时间恢复,因此试验不能连着做;连续试撤把一次诊断变成一次消耗。
第二步与第一步的依赖关系是这条次序为死的理由:没有登记,试撤之后企业只会看到"这次做慢了",而不知道该去看谁做的。
第三步·接痕(权责调整层)
要求这一次执行的痕迹落在归属方名下:谁做的、做到哪一步、卡在哪、用了多久、由谁兜的底。没有痕迹的执行不算一次自执行——这一条听上去苛刻,但它是全套办法唯一的防伪机制。一个不要求留痕的试撤,三个月之后会退化成"我们试过了,还行"。
这一步动的是权责,因而它是四步里最贵的一步,也是最容易被稀释的一步。稀释的典型形态是把留痕做成一份事后补写的总结。附录一给出的表头就是为了对付这件事:它要求填的是执行时点与凭据位置,不是评价。
第四步·复位或改名(到期清点)
三次试撤之后仍然没有发生一次完整的自执行,处置不是继续加压,也不是继续投入资源,而是改归属:把这项工作的名义归属正式改到实际承载者身上,重建它的配套(备份、文档、权限、培训),或者干脆撤销这项名义职能。
这一步是本文最反直觉的地方,值得说清楚。多数修复方案的默认动作是"把功能拿回来",因为拿回来听上去才叫恢复。但一个已经走到第三、第四段的位置,它的承载结构已经被拆掉了;往一个空位上加压,得到的不是恢复,是停摆加上一份漂亮的整改报告。承认搬迁已经发生,比把功能硬塞回去,更能恢复自主运行——因为改名之后,这项工作重新有了一个真实的持有者,它的备份、它的接班人、它的失效才重新进入可见范围。
把四步与第七节的阶梯对上:登记看的是你现在在第几段;试撤是唯一能把第二段与第三段分开的动作(免调段试撤会慢,拆解段试撤会停);接痕是让往回走的每一步留下证据;复位或改名是第五段。
第十步之外的一句
这条路里没有一步是"加强培训""提升意识""优化流程"。它们不是错的,它们是没有对象的——在一个从未被调用过的位置上,培训的产物无处显露,意识的提升不产生记录,流程的优化只会把替代者写得更牢。
一条跨领域的判断,价值不在"像",在于能不能据此在那个领域里预测一件具体的事。以下十二处,每一处都写成可查的形式。
一,机械通气:在同等原发病严重度下,采用完全控制模式的患者,其撤机失败率应高于早期保留自主呼吸努力的患者;预测的方向不是"通气有害",而是"读数被维持得越平稳,承载被拆得越快"。
二,心脏辅助装置:长期左心室辅助支持下,心肌的卸载程度与自身射血功能的恢复之间不是单调关系;卸载最彻底的一档,功能恢复应最少。
三,骨科:长期石膏或支具固定后的肌肉萎缩,其恢复速度与固定期间是否安排过负重训练相关,而与固定的稳定性无关。
四,冶金:焊后未做去应力处理的结构件,在外载为零的检验中一切合格,而在首次超载时的失效位置应集中在残余应力峰值处,而不是名义应力峰值处。
五,加工硬化件的验收:以强度为唯一验收指标的批次,其现场失效模式应从塑性失效转向脆性失效,而验收数据不会显示任何趋势。
六,古籍整理:经过多次"通顺化"整理的传本,其异文密度应低于未经整理的传本,而其可信度并不因此更高;异文密度低到某个程度以下,这个本子对校勘不再有贡献。
七,软件发布:发布完全由自动化流水线执行的项目,其名义维护者名单中自然人最近一次亲自发布的距今版本数应显著大于半自动项目;且这一数值与项目的活跃度指标正相关而非负相关(第十五节已给出数据)。
八,航空维修:以最低设备清单放行的机队,其单机同时携带的延迟项数量与机组工作负荷之间的关系,不进入逐项放行的判定;预测是延迟项的合成影响没有字段。
九,电网:长期依靠外部购电顶峰的区域,其本地调峰机组的年启动次数会降到某个阈值以下,而可用容量的账面数字不变;一旦外部通道中断,实际可调出力应显著低于账面。
十,教育:长期由家长或助教代为完成的作业环节,学生在该环节上的首次独立完成时点,应显著晚于其在同难度但无人可代的环节上的时点。
十一,供应链:单一供应商长期独家供货的物料,其备选供应商的最近一次真实交付距今批次数,是断供风险的更好预测量,比合格供应商名录的长度更好。
十二,公共服务:由第三方机构长期代为执行的行政事项,主管部门重新自行办理一次所需的时间,与该事项的复杂度无关,而与代办年限相关。
这十二处里,第四、第七两处已经有可用的公开数据;第一、第二处有临床文献;其余各处目前只是可查的预测。这不是十二个比方,是十二条可以被反证的话。
跨领域取材若只取支持,就是装饰。以下三处,每一处都削掉了本文原本打算写下的一句更强的话。
本文原本会写:只要安排一次试撤,承载在谁手上就读出来了。混合传承这件事把这句话削掉了。当两个来源长期共同参与同一件事,产物里已经无法分解出哪一部分是谁做的——Maas 对混合传承那句断语的技术含义正在于此:没有机械方法可以把它拆开。
本文因此让步:空承距只在"执行可归属于单一位置"的工作项上可读。 联合执行且事后不可分解的项,单列一栏,不得强判为健康,也不得强判为空承。这一处动的是适用范围:本文原本想覆盖所有工作项,现在只覆盖可分解的那一部分,而在很多企业里,最要紧的那些判断恰恰是联合做出的。
本文原本会写:把承载接回来,企业就恢复了原来的样子。去应力退火把这句话削掉了:消除内应力的唯一途径是让材料在受控条件下再变形一次,因而工件的尺寸必然改变;工程上处理这件事的办法不是追求"应力消除而尺寸不变"——那是不可能的——而是把尺寸变化预留出来。
本文因此改写价值排序:任何一次真正的承接,都以一次可见的形状改变为代价。 交付会慢一次,成本会高一次,某个客户会抱怨一次,某项指标会难看一个周期。反过来说:一次没有让任何指标难看过的修复,是没有发生过的修复。 这一处动的是价值排序——原来"不影响业务"是好消息,现在它是本文最不信任的一种报告。
本文原本会写:多试几次,总能试出来。自主呼吸试验失败之后需要足够的恢复时间这一条,把这句话削掉了。连续的试撤把一次诊断变成一次消耗,而且消耗的正是那个还剩一点的承载能力。
本文因此加了一条硬约束(见第十步第二步):试撤间隔不得短于一个完整业务周期,且三次不成即转入改名。 这一处削掉的是本文最容易被拿去滥用的那一面:把"试撤"变成一种持续施压的管理手段。
一个判断可以打赢所有关于"其实不就是别的原因吗"的追问,却仍然只是某个既有概念的改名。这一节专门处理后一种危险。下面十位,每一位都写出:它说到哪一步、分界落在哪、以及一条能分出谁对的判定形式。
出处:Forrester 1961 的工业动力学传统,经 Senge 1990 与 Meadows 2008 定型(学科:系统动力学)。它说到哪一步:症状解见效快,依赖随之上升,根本解的能力因长期不用而萎缩,于是越依赖越萎缩。这是本文最危险的一位,形式上几乎覆盖本文。
分界:基模量的是"根本解能力"这个存量,处方是减少症状解、增加根本解投入。本文量的是"归属方是否被调用过"这个事件的缺席,并预测:在 L=∞ 的项上增加投入不会产生调用,因为资源到达的是一个从来没有场合会轮到它的位置。基模里"能力"是连续下降的,本文里"执行次数"是零——零不是很小的量,零是没有量。
判定形式:取若干 L=∞ 的工作项,对其名义归属方加倍投入资源六个月。若首次自执行仍未发生而产出指标改善(因替代者继续做),则本判断对而基模错;若投入之后首次自执行发生、且改善的凭据落在归属方的留痕上,则反之。
出处:Repenning 与 Sterman 2001(学科:运营管理)。它说到哪一步:组织把工时分配在救火与改进之间,救火的短期回报高,于是改进被挤出,能力下降又要求更多救火。
分界:能力陷阱说的是同一批人在两类工作之间的分配失衡;本文说的是两个不同位置之间的执行迁移。前者的处方是改变工时分配比例,后者的处方是制造一次调用并接痕。
判定形式:若把改进工时占比提高一倍之后 L 不变,则本判断对——因为改进的工时同样落在替代者身上;若 L 随改进工时占比同步下降,则本文是能力陷阱的一个特例。
出处:Taub 等 1993、1999(学科:康复医学)。它说到哪一步:脑卒中后患侧的每一次尝试都失败,患者学会不用患侧,改用健侧完成任务;处方是限制健侧,逼患侧使用。它是本文在内容上最贴近的一位,而且它比本文早三十年。
分界有两处。其一,习得性废用讲的是同一个体内两条通路的竞争,患侧一直在那儿;本文的靶段里,原位置的承载结构可能已经被拆解(第七节第三段),此时限制替代者不会逼出执行,只会造成停摆。其二,康复医学有一个企业没有的东西——功能独立性评定这类量表可以直接看"用哪一侧完成";企业的记录不问这一栏,这正是本文要补的字段。
判定形式:取若干 L≥5 的项,一组只限制替代者(相当于限制健侧),一组先做登记再试撤并接痕。若两组的首次自执行发生率无差异,则限制即足够,本文多余;若只限制的那一组显著更多地出现任务停摆而非自执行,则本判断对。
出处:Allport 1937(学科:人格心理学)。它说到哪一步:一个行为的动机可以脱离它最初的来源而独立持续。
分界:方向相反。功能自主性说的是原因消失而行为继续;本文说的是归属继续而执行消失。两者剥到形式层是两条不同的话:一条是行为脱离来源,一条是账目脱离事实。
判定形式:若在某个案例里,那个位置仍在执行只是理由变了,属功能自主性;若执行本身已经不发生而账目不变,属本文。这两件事可以在同一个组织里同时出现,且互不蕴含。
出处:Merton 1940(学科:组织社会学)。它说到哪一步:为达成目标而设的手段被当成目标本身,规则的遵守取代了规则要服务的东西。剥到形式层是"手段吞噬目的"。
分界:本文剥到形式层是"承担者与归属者分离,且分离不产生记录"。目标置换里,那个位置一直在卖力做事,只是做错了事;本文的靶段里,那个位置什么也没做。
判定形式:抽查若干场合的执行记录。若归属方确有执行、只是执行的内容偏离了目的,属目标置换;若该场合的执行由他人完成,属本文。
出处:Cunningham 1992(学科:软件工程实务)。它说到哪一步:为求快而采取的权宜实现,其代价以后要连本带利偿还。
分界:债有余额,余额可清偿,清偿完归零。空承没有余额。把某个模块的技术债清单全部清空,L 不会因此变化,因为清债的人依旧是那个替代者。
判定形式:取一批技术债清单已清零的模块,若其中仍存在 L≥5 的项,则两者是两样东西;若清债之后 L 一律归零,则本文可被技术债吸收。
出处:Vaughan 1996、Snook 2000,及 Rasmussen 1997 的向边界迁移(学科:组织社会学与安全科学,专著层)。它们说到哪一步:安全边界在无人察觉中被逐步放宽,每一步都有当时的合理理由,累积到某一处爆发。
分界很锋利:这三位讲的是标准被改动而无人察觉;本文的靶段里,标准一个字没改,职责表、作业文件、考核办法全部原样,改的只是那件事实际由谁做。
判定形式:调取该时期的制度文本。若标准文本有可追溯的放宽,属越轨正常化;若文本无变化而执行者已换,属本文。
出处:Cyert 与 March 1963 的组织冗余;实务侧的关键人物集中度(如软件业常说的"公交因子",见 Williams 与 Kessler 2002 对该说法的记述)(学科:组织理论与软件工程实务)。它说到哪一步:冗余提供缓冲;集中度过高意味着单点风险。
分界并且方向相反:按冗余的读法,能顶上的人越多越健康;本文预测冗余越充分的地方 L 越长——顶得越快,归属方越永远不被调用。同一份材料,两边给相反的评价。
判定形式:取两组同类工作项,一组有多个可顶替者、一组只有一个。若前者的 L 中位数显著大于后者,则本判断对;若前者更小,则冗余读法对。
出处:混沌工程见 Basiri 等 2016(学科:软件可靠性工程);消融实验为机器学习的标准范式。它们说到哪一步:主动移除一个组件,看系统是否仍然维持;判据是系统有没有垮。
这是本文最危险的方法学占位者,因为本文的第二步(试撤)在动作上与它一模一样。分界在判据上:混沌工程问"系统还在不在",本文问"这一次是谁做的、痕迹落在谁名下"。
判定形式最能说明问题:一次混沌实验中系统毫发无损(另一个替代者瞬间顶上),在混沌工程里判为通过,在本文里判为深度空承。 同一次实验,两个相反的结论。若一个组织的全部混沌实验均通过而其空承清单非空,则两者不可互相替代。
出处:企业困境重整的实务传统(如 Slatter 与 Lovett 1999 一类的教科书)(学科:重整实务)。它说到哪一步:先稳住现金、稳住核心客户、稳住关键人,再谈结构。
分界:这套处方的第一步,按本文的读法正是制造代偿——它是对的,也是必要的,本文不反对它;本文反对的是没有到期日的稳定。重整实务给了止血的次序,没有给"止住之后由谁重新开始做"的判据。
判定形式:取一批完成重整、指标恢复的企业,若其空承清单在重整后两年内不缩短,则重整只是把代偿换了一种形式;若清单随指标同步缩短,则本文可并入重整实务的一节。
最近的是 13.1 的舍本逐末与 13.9 的混沌工程。前者在内容上最近,后者在动作上最近。
舍本逐末吸收不了本文,是因为它的处方假定资源投给根本解就会被根本解使用——而这正是本文要打的那个假定的组织版本。混沌工程吸收不了本文,是因为它把"系统维持"当作合格,而本文把"系统毫无波动地维持"当作最危险的一格。
还要指出这十位共同看不见的东西。逐位问一句"它把什么当作给定,因此看不见什么":舍本逐末把"能力是一个存量"当作给定,因此看不见"零次执行"与"很少执行"是两类;能力陷阱把"做事的是同一批人"当作给定;习得性废用把"患侧仍在"当作给定;技术债把"代价有余额"当作给定;越轨正常化把"标准会被改"当作给定;冗余读法把"能顶上就是好"当作给定;混沌工程把"被移除的组件是明确的"当作给定。承认了各自的那个"看不见",每一位自己的处方就都失去了着力点——这正是"看不见"与"没讨论"的区别。
这几行背后是同一块地:一项工作的名义归属方与它的实际承载者是同一样东西。 所有这些说法,包括互相批评的那几对,都站在这块地上;正因为都站在上面,谁也没有回头看它。本文提出的那个字段——"最近一次由归属方自己执行"的时点——之所以在几乎所有组织的记录里都不存在,不是因为难记,是因为没有人认为它需要记。
本栏近期有若干篇处理相邻问题的文章,若不指名,读者会把它们与本文混为一谈。
其一,关于"腾出来的余量去了哪里"的那一篇:它管的是多出来的东西被谁占用而不进账;本文管的是空出来的位置有没有人。两者的读数应近乎正交;若两个读数的相关高于 0.6,说明其中之一是多余的。可裁决的差别在于:余量的去向问题在没有任何撤除动作时也存在,而空承距只有在发生过承载迁移的项上才有定义。
其二,关于"往回说话的通道还有没有人用"的那一篇:它读的是反馈条目的有无;本文读的是执行事件的有无。预测两者负相关——一个从不被调用的位置也不会提出异议,因而通道空置与空承常常同时出现,但通道空置可以在归属与承载一致的情况下发生(有人做,只是没人敢说),而空承不能。
其三,关于"这一步开工时上一步交付了没有"的那一篇:它读的是两步之间的先后被取消;本文读的是同一步内部归属与承载的分离。二者叠加时代价相乘:一个既被并行掉了先后、又被空承掉了执行的环节,出问题时既找不到时点也找不到人。
其四,关于"不留痕的动作"的那一篇:那一篇说的是动作发生了而没有记录;本文说的是动作根本没有由那个位置发生。判定形式:抽查场合,若归属方确实做了而未留痕,属那一篇;若该场合由他人完成,属本文。这一条必须写清楚,因为两者的读数在没有留痕要求的组织里会长得一模一样。
其五,关于"退出而不被淘汰"的那一篇:它处理的是主体主动离开一个竞争位置;本文处理的是主体名义上还在位置上而实际已经不在。前者是可见的移动,后者是不可见的留守。
本文与上述各篇的关系不是竞争,是分工。若要合成一份完整的诊断,次序应当是:先看这一步的先后有没有被取消,再看这一步的执行由谁完成(本文),再看腾出来的余量去了哪里,最后看还有没有人往回说话。四个读数同时落在坏的一侧而全部产出指标正常,是本文所知最难被看见的一种稳态。
证伪条款不能全是纸面的。本节报告一次用公开数据做的检验,包括它推翻本文的地方。
本文需要的字段是"名义归属方"与"实际执行者"的分离,而绝大多数组织的记录里只有前者。公开的软件包注册表是少数同时记录两者的地方:每个包有一份 maintainers 名单(名义归属),每一个版本的元数据里有 _npmUser(这一次发布的实际执行者)。这份对应关系不完美,但它是可复算的。
固定包清单 60 个(常用前端与服务端包,清单见附录二,取数前写死不得增删)。纳入条件:返回 200、有 maintainers 字段、维护者不少于 2 人、版本数不少于 20。
变量:M 为维护者名单;A 为全部历史版本中出现过的实际发布者集合;u=M 中从未出现在 A 里的人数占比(未执份额);c=最近 20 次发布中最高频发布者的占比(承载集中度);b=最近 20 次发布中发布者名称含自动化标识的占比。
假设与阈值:H1,u 的中位数不低于 0.30;H2,c 的中位数不低于 0.80;H3,同时满足 u>0 与 c≥0.80 的包占比不低于 0.20。
判别检验(防止"通过得过分"):若 b 的中位数不低于 0.30,则读数被自动化污染,必须分层重报,且不得把分层前的结果当作结论。
取数前即已知的一处不可得:注册表不记录某人何时被列入维护者名单。因此本文的完整读数 L 的原始定义(自登记起经过多少次场合才第一次自执行)在这份数据上跑不动。这一条写在预注册里,不是事后的解释。
请求 58 个包,纳入 43 个,排除 15 个。第一个意外落在排除项上:15 个被排除的包,全部是因为维护者只有 1 人——lodash、axios、chalk、postcss、autoprefixer、nuxt、ws、got、glob、rimraf、ora、passport、pg、mysql2、chai。这些是被下载量最大的一批基础包,它们在名义归属这一层就已经是单点。这不是本文的假设,本文对此没有预注册,故只作记录,不作结论。
三条假设的结果:H1 被证伪——u 的中位数为 0.20,低于预注册的 0.30。方向与本文一致(确实有相当一部分名义维护者从未发布过任何版本),但幅度不足。H2 成立——c 的中位数为 0.90,即最近 20 次发布中有九成由同一个发布者完成。H3 成立——43 个包中有 17 个(0.395)同时满足 u>0 与 c≥0.80。
判别检验:b 的中位数为 0,未触发强制分层;但 43 个包中有 21 个 b>0,因此仍按预注册中"分层重报"的口径分层:b=0 的一层(n=22),u 中位数 0.2916、c 中位数 0.875;b>0 的一层(n=21),u 中位数 0.0、c 中位数 0.95。 两层的方向不同,这本身是下一节修订的来由。
既然"何时被登记"这个字段不存在,本文改跑它的镜像:最近一次由名单内自然人自己发布以来,这个包又发布了多少个版本——这正是空承距 L 的定义,只是从"首次"改成了"末次",而末次是记录里有的。
结果:43 个包中,有 4 个在全部可见的发布历史里,没有任何一次发布是由当前名单内的自然人完成的(react、react-dom、eslint、next),记为 L=∞。其余 39 个包 L 的中位数为 0——也就是说,多数包的最近一次发布就是名单内的人自己做的。L≥5 的有 12 个,L≥20 的有 8 个。
L 最大的几个:某前端构建工具 L=509(距今 1769 天),某浏览器自动化库 L=322(距今 2308 天),某样式框架 L=139(距今 113 天),某编译器项目 L=120(距今 340 天),某格式化工具 L=58(距今 1173 天)。
而这几个包的最近一次发布分别在取数前的 5 天、7 天、1 天、18 天、21 天。按活跃度与发布新鲜度这些既有指标,它们全在最好的一档;按本文的读数,它们是最深的一档。 第 8.4 节要求的"既有指标最好看而本文这个数最难看"的真实例子,就是这一组。
三处不利,逐处写清它改了什么。
其一,主假设 H1 被证伪。u 中位 0.20 未达 0.30。本文原本打算主张"名义归属方普遍从不执行",现在只能主张"存在一个不小的少数"。改动:8.2 的判定线由原稿的"清单非空即判为空承"改为"L≥5 且同期产出正常",即引入了阈值与附加条件,把普遍性主张降级为分布主张。
其二,L 的中位数为 0。绝大多数包的名义归属方最近一次就自己发过版。本文原本会写"这是普遍病灶",这句话被删掉。改动:本文改为主张空承是一种集中出现的少数状态,且集中在最活跃、最规范、自动化程度最高的那一档项目上——这个方向比原稿更窄,也更难被既有概念吸收。
其三,也是最重的一处:承载迁往一个可指名的位置,与迁往一个无人格的装置,在 u 与 L 上完全一样,而处置完全相反。 react、eslint、next 的发布 100% 由自动化流水线完成,这在软件工程里不是病,是好实践。但同一个读数在这里读到的是"名单上的人从未自己执行过"。本文因此在 8.3 的清单里补了第五栏(承载去向二分),并把这一条写成一个新的、原稿没有的判断:
迁往装置的那一类,其恢复能力从来没有被验证过。 装置在的时候一切正常;装置停机的时候,"最近二十次里没有任何一个人做过这件事"这个事实才第一次显露。因此对这一类,本文的处方不是把执行拿回来(那是倒退),而是把"人工执行一次"作为一项定期演练列入记录——注意这与第十步第二步的"必须是真实场合"相冲突,本文没有解决这处冲突,把它列在第十八节交出去的洞里。
三处必须明写。其一,发布者不等于承担者:一个人可能做了全部准备工作而由另一个人按下发布键。其二,维护者名单不等于名义归属:注册表的名单更接近权限清单,而不是职责表。其三,本次数据落在公开软件包注册表这一族,本栏近期的检验多次取自相近的数据族(发行版档案、代码托管平台),字段虽不同,同一族的多次取样不构成互相独立的验证,合计只能算一次。
还有一处必须说破:本文的核心构念本身没有被这次检验证明。这次跑的是它的一个可得代理(发布权限名单与实际发布者的分离),而不是企业里的名义归属与实际承载。一条主张不能用"它跑不动"来证明它成立,本文不这样用;跑不动的那一部分写在第十七节的证伪条款里,并把"补上这个字段"作为第三层主张。
以下五种情形,本文的读法不适用,硬用会误诊。
其一,产出已经变差的位置。空承的整个价值在于它能读出"指标正常而位置无人"这一格;指标已经难看的地方,任何人都看得见问题,不需要本文这套读法,而且用它会把注意力从更直接的原因上引开。
其二,执行不可分解的联合工作。见 12.1。战略判断、危机处置、复杂谈判这类由多人共同做出的事,事后无法拆出谁做了哪一段,L 在其上没有定义。这是一处真实的空白,不是可以靠细化编码规则解决的技术问题。
其三,本来就该迁移的工作。承载迁移常常是分工的正常演化。判定空承的前提是归属未随之改写;归属已经正式改写、配套已经重建的,不算空承,哪怕原位置从此再不执行。
其四,周期极长的工作。一项五年才做一次的事,L=2 意味着十年,这个读数在这里没有分辨力。经验的界线是:一个完整业务周期内被执行少于三次的工作项,不进空承清单。
其五,L 归零不能证明健康。见第九节场景五:一次自主呼吸试验成功,只证明发生过一次自执行,不证明承载已经回来。本文是一个单侧读数——L 大是坏消息,L 小不是好消息。任何把 L 低当作达标来用的做法,都是误用。
那句最朴素、最难反驳的话是:其实不就是分工吗? 熟手做得更好更快,把事情集中给他,本来就是效率的来源;所谓"位置无人",不过是把一种正常的分工描述得吓人一点。
本文承认这句话在大多数情形下成立。因此下面的证伪条件必须能把这句话排除掉:在控制了效率收益之后,本机制独有的那个变量是否仍然起作用。 本机制独有的变量是"归属未改写"这一件——分工解释预测归属改不改写没有区别,本文预测有区别,而且是决定性的区别。
F1(最便宜,多数企业现有记录就够):在同一家企业内取 30 项以上工作项,控制该项的执行频次与复杂度,比较"归属已随迁移改写"与"归属未改写"两组。若两组在替代者不可用时的停摆时长上不存在剂量-反应关系(L 越大停摆越长),则本判断为伪,届时问题应归因于绝对熟练度而非归属与承载的分离。
F2:取若干 L≥5 的项,按第十步做完四步。若完成登记与接痕的一组,其首次自执行发生率与只做试撤不做登记的一组无显著差异,则第一步(登记)不是承重的,本文的次序主张为伪。
F3:若在同一批工作项上,L 与该项产出指标的相关系数绝对值高于 0.6,则 L 是产出指标的一个代理,不是一个独立读数,本文的正交性主张为伪。
F4(正向读数,顺序预测):在一次承载迁移中,"归属方最近一次自执行"的时点,应当早于"该项配套(备份、培训、权限)被回收"的时点,且两者间隔应大于一个完整业务周期。若在多数案例中配套回收先于最后一次自执行,则第七节的阶梯次序为伪。
F5:取公开软件包注册表的另一批包(不与本次 60 个重叠),若 L≥5 的比例低于 0.10,则第十五节的结果不可重复。
F6:若存在一个组织,其空承清单非空且各项 L≥5,而在替代者整体不可用的一次真实事件中未发生任何停摆,则空承与脆弱性无关,本文的实践含义落空。
F7:若第十五节 15.5 第三处的二分(迁往位置/迁往装置)在实作中无法由记录判定——即多数案例落在"说不清是人还是装置做的"——则 8.3 的第五栏不可操作,本文须退回到只报 L 不报去向。
F8(这一条本文自己现在跑不动):本文的核心读数需要"归属登记时点"这个字段,而现有的组织记录、公开注册表、代码托管平台一律不记它。若在 2029 年之前有人证明这个字段其实广泛存在于某类既有记录中,则本文关于"这个字段不存在"的第三层主张为伪,且本文对它的整套论证需要重做。
若 F1 落空,说明停摆风险由熟练度的绝对水平决定,与归属和承载是否分离无关;那么修复的方向应当回到培训与人员冗余,而不是记账。这是一个明确不同的干预方向,因此这一条的证伪是有价值的。
赌注:到 2031 年 12 月 31 日为止,在国内外任意三类公开材料中——上市公司的内部控制评价报告、行业主管部门的运营规范、企业级流程管理软件的标准字段清单——找不到任何一类把"该职责的名义承担方最近一次自行完整执行的时点"列为强制采集或强制披露字段。
什么不算命中,一并写死:其一,只写"由某岗位负责"不算——那是归属,不是执行。其二,只写"最近一次执行时间"而不区分执行者是否为归属方,不算。其三,仅要求企业自行说明、无凭据位置要求的,不算。其四,仅在事故调查报告中事后追溯的,不算——本文要的是常规采集字段。其五,学术论文、咨询报告、内部试点中出现的,不算——必须是公开的规范或产品标准字段。
本文可以被分层引用,三层各自可以单独被推翻:
第一层,构念"空承"作为核心判据——最强,也最易倒,由 F1、F2 管。
第二层,五段迁移阶梯作为分析工具——由 F4 管。
第三层,一条不依赖前两层的经验主张:"名义归属方最近一次自行执行的时点"这个字段,在当前几乎所有组织记录与公开数据源中都不存在。 由 F8 管。这一层最稳,也最容易检验;即使前两层全部被推翻,这一条仍然成立,且它本身就足以支持一项建议——把这个字段补上。
按第七节的阶梯给本文自己定位,不是谦辞,是这套读法必须先在自己身上跑一遍。
本栏这条写作产线名义上有几项职责:独立的评阅、编码规则的一致性检验、多篇合稿时的互相指名、以及对已发篇目的兑现清点。这几项的名义归属方都是本栏自己。现在按本文的判据问一句:这几项工作,上一次由本栏自己从头做完并留下记录,是什么时候?
答案是:独立评阅从未发生过一次(L=∞);编码规则的一致性检验从未由本栏之外的人做过一次(L=∞);合稿与互相指名,上一次完整做完是在若干篇之前,此后每一篇都在正文里写"合稿时须补",而合稿一直没有发生(L 至少等于此后已发篇目的数量)。
三项全部落在本文自己定义的靶段里,而且三个签名齐备:短期指标改善(出稿速度越来越快、每篇的形式完备度越来越高);失效不产生信号(没有人来检验,因而从来没有失败过);自我加固(每多出一篇,合稿的成本就更高一分,于是更不会发生)。
这个定位有具体后果,本文照第十步的处方对自己下一步的处置写死:在完成一次由本栏之外的人执行的编码一致性检验之前,本篇的判定线 L≥5 只能被引用为一个提法,不能被引用为一个标准。 这不是客套;按本文自己的 F3,一个读数在没有经过第二双眼睛的编码检验之前,它的口径漂移是不可估的。
另有一处更难堪的:本文第十步反对"往空位上加压",而本文自己对上述三项的处置,过去一直是"下一篇再补"——正是加压。按第十步第四步,正确的动作是改名:要么承认这几项已经迁移到无人格的装置上(工序清单与自检脚本),并按 15.5 的办法把"人工做一次"列为定期动作;要么撤销这几项名义职能,不再在每篇末尾声称它们存在。 本文选择前者,并把它写在这里,以便日后可以按 L 来清点这一次承诺是否兑现。
这套读法一旦被制度采用,最省事的达标办法是安排一次形式上的自执行:让归属方在一个低风险的场合走一遍流程,留下痕迹,L 归零。于是首次自执行被制造出来,而承载并没有回来。
这件事在记录上几乎无法与真实的承接区分——因为本文自己的判据就是记录。加一条"必须是真实场合",只会把制造的成本抬高一点,抬不掉。我看不到出口。 能做的只有把这一点写在明处,让使用者知道这个数在被考核时会变成什么。
空承距是一个可以直接拿去考核人的数,因此三条必须写死,缺一条本文不可用于任何人事安排:
其一,这个读数指的是位置,不是人。 L 大说明这个位置长期没有被调用,它不说明占着这个位置的人能力差;在多数情况下,L 大恰恰是因为另一个人做得太好。
其二,不得为了把这个数做好看而制造轮换。 尤其在安全关键、质量关键的环节上,把一件熟手做得很好的事强行交给生手去做一次,以便让 L 归零,是本文明确反对的做法。试撤必须带兜底与时限,且不得在此类环节上进行。
其三,已经据此做出不利安排的,必须公开编码规则并提供复核通道。 什么算一次场合、什么算一次自执行、审批是否计入、联合执行如何处理,这些编码选择足以让同一份记录读出相差数倍的 L;不公开规则的读数不得用于任何不利决定。
结语
这道题一开始的问法是:怎么摆脱借债、加班、裁员、压价和关键人物的过度承担。本文的回答是,这个问法把力气用错了地方。这五样东西不是加在企业外面的五层皮,撕掉就露出原来的企业;它们在维持读数的同时,正在改变那些本该承担的位置——而改变的方向恰恰是"不再需要自己工作"。
所以修复不是减法,是在每一个被代偿过的位置上,重新发生一次自己从头做完。而它有没有发生,不能问感觉,只能问一件事:这项工作,上一次由它名下的那个位置自己从头做完并留下记录,是什么时候。
这句话之所以在今天几乎问不出答案,不是因为它难问,是因为没有一个组织认为它需要被记下来。本文最稳的一层主张就是这一条:那个字段不存在。 而一个不存在的字段,正是这类问题在所有账本上都不显形的原因。
读数名:空承距 符号:L 量纲:场合次数(整数,可取无穷)
定义:自这项工作的名义归属方最近一次自己完整执行并在正式记录中留痕以来,这项工作又被执行的次数。从未有过记为无穷。
粒度:一次"场合"=这项工作被完整执行一次并在正式记录里留下一条条目。恰在边界上的例子:一次因故中止、由替代者从中途接手完成的执行——计为一次场合,且计为"他人执行"。
编码规则(六条):
(1)审批不计为执行;签字放行而由他人操作的,计为他人执行。
(2)中途任一必需步骤由他人代做的,不计为一次自执行。
(3)未在正式记录中留痕的执行,既不计入分子也不计入分母(此规则会低估 L,已在 8.5 声明)。
(4)联合执行且事后不可分解的,单列"不可分解"栏,不计入 L。
(5)装置执行、归属方复核的,计为装置执行,L 照常累加,并在清单第五栏标注"迁往装置"。
(6)一次执行跨越两个记录周期的,以完成时点归入所在周期。
表头(可直接制表):工作项|名义归属方|最近一次自执行时点|凭据位置|当前实际承载者|承载去向(可指名位置/无人格装置/不可分解)|自该时点以来的执行次数 L|同期产出指标区间
不适用:见第十六节五条。
三处引用一致性:正文 8.2=证伪 17.2(F1、F5)=赌注 17.4,判定线一律为"L≥5 且同期产出正常;L=∞ 为深度空承"。
预注册(取数与统计之前写死):数据源为公开软件包注册表元数据,每包一份 JSON。
固定包清单 60 个:lodash、express、react、react-dom、vue、axios、chalk、commander、debug、moment、webpack、rollup、vite、eslint、prettier、typescript、jest、mocha、chai、sinon、babel-loader、postcss、autoprefixer、tailwindcss、next、nuxt、svelte、redux、rxjs、socket.io、ws、node-fetch、got、request、cheerio、puppeteer、playwright、dotenv、uuid、semver、glob、rimraf、fs-extra、yargs、inquirer、ora、minimist、body-parser、cors、morgan、helmet、passport、mongoose、sequelize、knex、pg、mysql2、redis。
纳入条件:HTTP 200;含 maintainers 字段;维护者不少于 2;版本数不少于 20。
假设与阈值:H1 u 中位数≥0.30;H2 c 中位数≥0.80;H3 满足(u>0 且 c≥0.80)的包占比≥0.20。判别检验:b 中位数≥0.30 则须分层重报。
结果汇总:请求 58,纳入 43,排除 15(全部因维护者仅 1 人)。u 中位 0.20(H1 证伪);c 中位 0.90(H2 成立);H3 占比 0.395(成立);b 中位 0,b>0 者 21 个。分层:b=0(n=22)u 中位 0.2916、c 中位 0.875;b>0(n=21)u 中位 0.0、c 中位 0.95。
补跑(末次自执行):L=∞ 者 4(react、react-dom、eslint、next);其余 39 个 L 中位数 0;L≥5 者 12;L≥20 者 8。L 前五:vite 509(1769 天)、puppeteer 322(2308 天)、tailwindcss 139(113 天)、svelte 120(340 天)、prettier 58(1173 天);对应的最近一次发布分别在取数前 5、7、1、18、21 天。
全部数据可由任何人按上述清单重新取得并复算。
检索采用剥掉本领域名词、只保留"什么对什么做了什么导致什么"的形式化句子。所用检索词包括:责任仍在而执行迁走/原动机消失后行为仍继续/support removed but capability not returned/disuse atrophy under support/nominal owner never performs/who performs when the substitute is absent/standard unchanged while performer changed/越帮越不会做。
被检出并已在第十三节正面处理的同向说法共十位,按方向分布:1980 年前的经典层四位(Allport 1937、Merton 1940、Forrester 1961、Cyert 与 March 1963);本题所属实务共同体三位(Repenning 与 Sterman 2001、Cunningham 1992、困境重整实务传统);方法学两位(混沌工程、消融实验);专著与外文层三位(Vaughan 1996、Snook 2000、Taub 等 1993/1999);本栏已发篇目五篇(见第十四节)。合计十七位次、十二个独立说法。
其中最危险的一位是舍本逐末(系统基模)。它没能吸收本命题的理由已写在 13.1 与 13.11:它把"能力是一个存量"当作给定,因而看不见"零次执行"与"很少执行"是两类东西;一旦承认这两类不同,它"增加根本解投入"的处方就失去了着力点。
本节由编者增补,不是作者原稿的一部分。本文第十三节逐位处理了舍本逐末、能力陷阱、习得性废用、功能自主性、目标置换与技术债,每一位都给了可裁决的分离线。增补的理由有两条:这几位全部来自理论传统,而本文说的那件事在工程实务里有一个已经在用的名字;补上之后,本文的读数 L 可以从「一个事件的缺席」推到一句更硬的话。
软件工程与运维实务有一个粗糙但流行的指标叫巴士系数(bus factor):一个项目里,最少需要多少人同时离开,它才会停摆。与它配套的一组词是所有权衰减(ownership decay)与维护者漂移——代码文件的名义所有人写在 CODEOWNERS 或包元数据里,而实际提交的是另一批人;名义与实际的分离可以持续数年,而在任何构建、测试与发布指标上都看不出来。
这一位与本文的关系不是覆盖,是同一张表的另一格,必须点名:巴士系数量的是会做这件事的人有几个,靶格是「只有一个」;本文量的是名义归属方最近一次自己做是什么时候,靶格是「从来没有」。两者可以同时为真、也可以互相独立——一个巴士系数很高的模块(很多人都会做)照样可以有 L=∞ 的项,只要那些人里没有一个是名义归属方。
可裁决的分离线。取一批 L≥5 的工作项,同时算出其巴士系数。若两者相关系数高于 0.6,则本文可被巴士系数吸收,L 只是它的一个变形;若低于 0.3,则两者是两个独立的量。本文押后者,理由写在正文第七节:巴士系数关心的是能力的分布,L 关心的是调用的归属,而一个组织完全可以在能力分布极广的同时,把某个位置的调用长期路由给别人。这一条在公开代码仓上可以直接跑——CODEOWNERS 与提交记录都是公开的。
本文反复说:这个位置的失效不产生信号。正文把它当作一个记录制度的缺陷来陈述——好像补一个字段就能看见。编者主张这一步可以推硬,而推硬之后它反而更容易被打:这个位置的失效在原理上不能产生信号,因为信号的发生条件正是这个位置被调用,而它被调用的次数是零。
把这句话拆开:一个位置「不行了」这件事,只能在它被要求出场的那一次显露出来。而空承的定义就是它从来不被要求出场——替代者一直在做,场合从来轮不到它。于是「失效」与「被观察到失效」这两件事之间不是记录不全的关系,是互斥的关系:只要它仍处在空承状态,它就不可能失效被看见;一旦它被看见失效,它就已经不在空承状态了。
这一步同时把本文与技术债和舍本逐末拉得更开。技术债有余额,余额随时可查;舍本逐末里的根本解能力是连续下降的,量表上读得出一个变小的数。空承里没有一个变小的数可读——零不是很小的量(正文第 13.1 节已有这句),而编者要补的是它的后果:因此唯一能产生读数的动作,是制造一次调用。本文第九节的处方(试撤并接痕)不是一个可选的诊断手段,它是这个量唯一的观测方式——这正是同栏《判耗》那一篇说的事,两篇在此处严丝合缝。
这一步的证伪条件。若能找到一种不需要调用即可读出该位置承载能力的方法(例如从人员构成、文档完备度或历史留痕直接预测首次自执行是否会成功),且其预测准确率显著高于随机,则「互斥」不成立,本节的推进作废,本文应退回原稿的「记录制度缺一个字段」这一步。这一条可以在有充分历史数据的组织里做,成本不高。
编者增补声明:以上一节为本站编者增补,非作者原稿,因此本篇标注「盲评 141 → 修改设计目标 142 · 待独立复核」,不是认证分。原稿的盲评分对投稿全文所打,本节不计入该次评分。
Almen, J. O., & Black, P. H. (1963). Residual Stresses and Fatigue in Metals. New York: McGraw-Hill.
Allport, G. W. (1937). Personality: A Psychological Interpretation. New York: Henry Holt.
Basiri, A., Behnam, N., de Rooij, R., Hochstein, L., Kosewski, L., Reynolds, J., & Rosenthal, C. (2016). Chaos Engineering. IEEE Software, 33(3), 35–41.
Bédier, J. (1928). La tradition manuscrite du Lai de l'Ombre: réflexions sur l'art d'éditer les anciens textes. Romania, 54, 161–196, 321–356.
Bengel, J. A. (1734). Novum Testamentum Graecum. Tübingen.
Boles, J.-M., Bion, J., Connors, A., Herridge, M., Marsh, B., Melot, C., … Welte, T. (2007). Weaning from mechanical ventilation. European Respiratory Journal, 29(5), 1033–1056.
Cunningham, W. (1992). The WyCash Portfolio Management System. OOPSLA '92 Experience Report. Addendum to the Proceedings, 29–30.
Cyert, R. M., & March, J. G. (1963). A Behavioral Theory of the Firm. Englewood Cliffs, NJ: Prentice-Hall.
Esteban, A., Frutos, F., Tobin, M. J., Alía, I., Solsona, J. F., Valverdú, I., … Blanco, J. (1995). A comparison of four methods of weaning patients from mechanical ventilation. New England Journal of Medicine, 332(6), 345–350.
Forrester, J. W. (1961). Industrial Dynamics. Cambridge, MA: MIT Press.
Kress, J. P., Pohlman, A. S., O'Connor, M. F., & Hall, J. B. (2000). Daily interruption of sedative infusions in critically ill patients undergoing mechanical ventilation. New England Journal of Medicine, 342(20), 1471–1477.
Levine, S., Nguyen, T., Taylor, N., Friscia, M. E., Budak, M. T., Rothenberg, P., … Shrager, J. B. (2008). Rapid disuse atrophy of diaphragm fibers in mechanically ventilated humans. New England Journal of Medicine, 358(13), 1327–1335.
Maas, P. (1927). Textkritik. Leipzig: Teubner.(英译本:Textual Criticism, trans. B. Flower, Oxford: Clarendon Press, 1958)
Meadows, D. H. (2008). Thinking in Systems: A Primer. White River Junction, VT: Chelsea Green.
Merton, R. K. (1940). Bureaucratic Structure and Personality. Social Forces, 18(4), 560–568.
Rasmussen, J. (1997). Risk management in a dynamic society: a modelling problem. Safety Science, 27(2–3), 183–213.
Repenning, N. P., & Sterman, J. D. (2001). Nobody Ever Gets Credit for Fixing Problems That Never Happened: Creating and Sustaining Process Improvement. California Management Review, 43(4), 64–88.
Senge, P. M. (1990). The Fifth Discipline: The Art and Practice of the Learning Organization. New York: Doubleday.
Slatter, S., & Lovett, D. (1999). Corporate Turnaround: Managing Companies in Distress. London: Penguin.
Snook, S. A. (2000). Friendly Fire: The Accidental Shootdown of U.S. Black Hawks over Northern Iraq. Princeton, NJ: Princeton University Press.
Taub, E., Miller, N. E., Novack, T. A., Cook, E. W., Fleming, W. C., Nepomuceno, C. S., … Crago, J. E. (1993). Technique to improve chronic motor deficit after stroke. Archives of Physical Medicine and Rehabilitation, 74(4), 347–354.
Taub, E., Uswatte, G., & Pidikiti, R. (1999). Constraint-Induced Movement Therapy: a new family of techniques with broad application to physical rehabilitation. Journal of Rehabilitation Research and Development, 36(3), 237–251.
Timpanaro, S. (1963). La genesi del metodo del Lachmann. Firenze: Le Monnier.
Totten, G. E., Howes, M. A. H., & Inoue, T. (Eds.). (2002). Handbook of Residual Stress and Deformation of Steel. Materials Park, OH: ASM International.
Vassilakopoulos, T., & Petrof, B. J. (2004). Ventilator-induced diaphragmatic dysfunction. American Journal of Respiratory and Critical Care Medicine, 169(3), 336–341.
Vaughan, D. (1996). The Challenger Launch Decision: Risky Technology, Culture, and Deviance at NASA. Chicago: University of Chicago Press.
West, M. L. (1973). Textual Criticism and Editorial Technique. Stuttgart: Teubner.
Williams, L., & Kessler, R. (2002). Pair Programming Illuminated. Boston: Addison-Wesley.
Withers, P. J. (2007). Residual stress and its role in failure. Reports on Progress in Physics, 70(12), 2211–2264.
字数与分工声明
正文十八节,另附录三则与参考文献。全文汉字数见文末统计。本文的资料检索、数据取用与统计由人机协作完成:第十五节的取数脚本、预注册文本与统计结果由机器执行,预注册在取数之前写定;三门学科的文献线、构念、辨别装置与全部判断由作者负责。第十五节报告的三处不利结果均未作修饰,其对正文的修改已逐处标出。