影子系统:真正在跑的那套流程
真正在跑的流程活在 Excel、群聊和手写台账里:描述版与执行版怎么漂移,以及怎么把执行版从描述里剥出来。
更新于 2026-10-301 分钟阅读
每个客户都有两套流程。一套写在纸上:SOP、流程图、系统里的字段表。另一套在跑:某个人桌面上的 Excel、被当成任务队列用的群聊、因为系统装不下异常而保留的手写台账。正式系统记的是应该怎样,影子系统记的是实际怎样。
这不是造假,也不是偷懒,是累积修补。每出现一次异常,就有人在最便宜的地方打一个补丁,而最便宜的地方,从来不是那个变更流程以月计的系统。几年之后,补丁就是流程,文档描述的是一个已经不存在的公司。
描述漂移
文档版流程与执行版流程之间的差额,是「送不进接口的输入」之一,也是藏得最好的一种。没有人在这件事上撒谎:描述流程的人真心认为自己在描述流程,他描述的是他被教过的那一版。
看见这个差额有两条路。第一条是陪一个真实的人过完真实的一天,坐在他旁边看,而不是采访他;重点看他绕路的地方——他叹气的地方、打开第二个窗口的地方、突然去发消息的地方,而不是看流程图上的箭头。第二条是拒绝二手转述。一个经过 IT、采购或顾问转述过的痛点,至少已经被翻译过一次,每转一手就丢掉一点具体。
三种数据状态,和那个骗人的中间态
结构化数据是规整的:表格、报文、字段、协议,公司以外的人也读得懂。非结构化数据是手写便签、私人 Excel、方言口述、肌肉记忆——只有这几个人读得懂,而且他们自己不觉得这是知识。
伪结构化数据是中间态,也是最贵的那个。它长得像结构化数据:有表格、有字段、甚至有流程图;但它描述的是 SOP 版本,执行版本是另一套。形式上,它能通过你对内容做的所有检查。
这就回答了大公司里那个反复出现的问题:为什么明明有系统,还在用 Excel?因为系统记的是应该怎样,Excel 记的是实际怎样。这家公司不是没上新的软件,它在同时跑两个数据库,而只有一个在被维护。
中间态为什么失败得悄无声息
非结构化数据会自己报警。没有人会把一本手写台账当成 API,所以「显化」这项工作会被排进计划,也会被报价。
伪结构化不会报警。列是齐的,schema 是干净的,数字是像样的;你在上面搭的任何管道都会顺利跑完,然后输出一份关于一个并不存在的流程的、语言流畅的报告。这才是这份工作里值得怕的失败:不是崩溃,是对错误工作流的自信汇报。
它的特征好测,也容易被忽略:一列永远有值但从来没人读;一个字段永远是同一个值;一个状态只由某一个人手工更新。这些都是「为了满足表格而存在、不是为了跑活而存在」的标记。
把执行版剥出来
四个方法能做完大部分工作,可以在两周内并行。
给一个岗位录音并转写,提取其中的判断而不是任务——每个判断依赖了什么,做判断之前那个人看了什么。挑上个月出过的一次异常往回追,重建谁在什么顺序、通过什么工具碰过它。拿流程文档走一遍现场,把每一处走不通的地方标出来。如果有交接日志就读它,离职的人留下的那几页,往往是执行版唯一的书面记录。
七问清单里有两问直接喂这份清单。问「最不受欢迎的表是哪张、谁填、给谁看」,得到候选名单;问「我需要知道的东西现在存在哪里」,得到它到底是 Excel、群聊,还是一个人的脑子。
然后对版本。要同一张表最近三个版本,看哪几列长期空着、哪几列长期是手写的。空着的列是这张表里没人用的部分;手写的列是系统装不下的部分。两边都是执行版在露头。
这也正是谁会输这张图能被算出来的原因:真正要计的是花在这些表里的工时,不是岗位说明书上写的工时。
拿到之后怎么做
错误的做法是把影子系统本身当成项目。在什么都没跑通之前要求客户迁回正式流程,等于让他在还没有替代品的时候先拆掉自己的修补。
站得住的原则是不对称兼容:数据层深度兼容旧系统,因为数据不会为了迁就你的架构而搬家;架构层不做旧环境的寄生体,因为验证期方案一半以上会被推翻,而旧系统的变更流程以月计;流程层顺从人的习惯,而不是系统的习惯。
落到动作上,就是从那张 Excel 里读,而不是要求它退役。在工作已经在的地方埋点,让迁移因为新路更顺而自然发生,而不是因为旧路被关掉。
判据
同一个数字被两处维护,就是一个影子系统。找出被先改正的那一份——那才是执行版,你写下的每一条指标定义都必须指向它。指向另一份,整个项目期间你都在为一个现场没人认得的数字辩护。
来源与延伸阅读
- Dashen.Wang、黄小木(Jayce Huang)、Roland Wayne《FDE 现场工程手册》 — CC BY-SA 4.0;本节为改写与评注,改编部分同样以 CC BY-SA 4.0 提供
- 范冰《FDE 前线部署工程师》:观点启发自其影子工作法与「读旧写新」原则,未取原文表达
本文为 FDE 百科的原创分析。源自他处的框架与案例材料已在下方标注出处。