户外运动或装备社群常言:Two Is One, One Is None。数据备份同样倍受重视,美国政府所倡导的 3-2-1 备份原则,已久经企业和民用市场考验。
不过,日常工具的冗余有所不同。较之“自己给自己制造不适”的户外运动,平日所用的器物,从锅碗瓢盆到生产力软件,似乎不单单是备用那么简单;而相比几乎一劳永逸、后台自动运行的数据备份,工具更需要反复斟酌和维护保养。我在工作和生活中刻意制造了一些工具冗余,例如四五款重叠但又有所差异的文本编辑器,或者厨房里那一堆功能相同但原理各异的食材研磨器,这些冗余,都很难视为纯粹的复制。
应对灾难,固然是冗余的应有之意,但工具冗余也是探索新器物、新方法以及重新审视现有工作流程的契机。而在此之前,工具冗余也不像备份数据那般自动,它需要自己的具体规则。
冗余最基本的意义是备份。Microsoft Word 订阅到期时,基础功能免费的 WPS 就可以救急;想在客人面前展示厨艺,却发现主力菜刀已足月未得研磨时,备用的水果刀也可以帮我撑过难关。
备份功能原本不必多言,然而,如今的软件纷纷转向订阅制,许多硬件则打开打造所谓的生态系统(可更换镜头的相机即为适例),就连装腌菜的玻璃瓶也衍生出了配件宇宙……此时,如果同类工具互不兼容,那么表面上的冗余就将大打折扣,甚至丧失意义。最简单的备份功能把我们带到了工具冗余的第一条规则——
当存在互换部件或共享数据时,兼容是冗余的前提
软件互不兼容,或假装兼容,简直是再寻常不过的商业策略。这损害了冗余,导致实际上你把鸡蛋都放在一个篮子里,而这个篮子甚至还可能随时上锁,阻止你把鸡蛋取出来。在线服务是虚假冗余的重灾区,例如印象笔记,虽说可以导出数据,却是专属格式,离了印象笔记压根没用——至少对不精通计算机技术的普通人来说。
这样看来,封锁用户数据的软件,就不能算入冗余,除非你只把它们当作临时的编辑器,根本无所谓数据是否存储其中。
兼容性并不限于软件,事实上,即便从美国的机床历史开始计算,标准化也已经实施了一百多年,硬件层面的不兼容其实更广泛——不如说,兼容是例外。我父亲有几台质量很好的胶片相机,虽说能更换镜头,但即便是同一品牌的数码机型,也不再兼容旧型号,结果,如果我想捡起这些古董,就得在数码相机套件之外另起炉灶。
两套完全平行的系统,根本不能算是冗余。当存在互换部件或共享数据时,兼容就是冗余的必要条件。
不过,我们很快会发现,冗余容易被一种奇怪的成分破坏——
共模错误会破坏冗余
把鸡蛋放在不同的篮子里固然重要,但如果这些篮子都在同一辆货车上呢?一旦出了交通事故,恐怕整车的鸡蛋都无一幸免吧。
这就是共模错误。在软件中,共模错误非常普遍,盖软件开发早已过了以 KB 计的单打独斗时代,如今的软件,往往集成或调用他人成果,结果,常用 API 或其他基础设施一旦出错,往往要牵连一大批软件。2025 年 Cloudflare 宕机,就导致“半个互联网”停摆。
不过,Cloudflare 级别的重大设施,通常也有人加班加点维护,反倒是许多本地的设施,年久失修,无人理睬。例言之,macOS 上绝大部分的第三方搜索工具,都建立在 Spotlight 索引之上,而这玩意儿是出了名的不靠谱,心情不好就破损,常常导致我连眼前的文件都搜不到。上梁不正下梁歪,依赖 Spotlight 索引的第三方工具,无论界面多么精美(我们适配液态玻璃喔!),不管交互多么贴心,搜不到文件,就是废物。当然,这是共模错误,只能怪开发商没选好地基。
相比之下,从头建立独立索引的软件,往往要比 Spotlight 靠谱,例如 DEVONthink 同厂的 EasyFind 或者常被用于专业数据库的 FoxTrot。
硬件的共模错误,更多归于原理,而非直接的组件共用。考虑一下锅子:不锈钢锅、铸铁锅、精铁锅、铝锅、铜锅、土锅、不粘锅……我都买过,平时炒个菜没啥问题,但朋友送的几块上等和牛就让所有的锅子哑然失笑:不管是几十块钱的不粘锅,还是四五千元的铜锅,都很容易翻车,把昂贵的牛排变成橡皮筋。
问题在于:它们都是锅,但加热工具远远不止锅子这一类。锅子之间确实有差异,但差异大小端视你的考察精度,如果把坐标象限拉大,站得远一点,把烤箱、微波炉以及低温料理机放在一起考察,几十块钱的锅和几千块的锅也只占据了很小的一篇区域:迅速而猛烈的热传导,新手难以把控。相同的加热原理,造成了共模错误。
(至于牛排,最稳妥的加热方式是先用低温料理机薅熟、小火煨熟或者清蒸蒸熟——效果依次降低——再单独煎一下,上色增香。)
冗余工具之间应当允许正向学习迁移
承前所述,我在厨房墙面上挂了一溜的锅子,不懂行的朋友难免要开玩笑:那么多不同材质的锅,你都懂怎么用吗?就我所选购的锅子而言,一旦掌握了最难伺候的不锈钢锅,剩下的就简单了。这好比掌握了钢琴,再学习其他乐器会容易很多,因为你已经摸到了原理,即便拿到一个新乐器,操作方式也可以类推。这是正向迁移。
软件也是如此,原理和交互是冗余成立的前提。很多设计师或程序员在截图发社交网络时,喜欢展示 dock 栏上那一场串的专业级
