编注:本文是「少数派 2019 年度征文活动」的入围文章,本篇征文的投稿赛道为: 多一度思考 。本文仅代表作者本人观点,少数派对标题和排版略作调整。
Unix 是……「独角兽」还是「日料」?
也许很多小伙伴已经非常清楚 Unix 是什么,不过这里请允许我略提一下身边关于 Unix 名称的有趣经历。 我向一些朋友提起 Unix 时,有时会产生两种耐人寻味的意见:
- 谁不喜欢 「独角兽」 呢,是吧?(unicorn,发音也接近 unix)
- 「海胆」很贵,但很好吃~ (uni, 日料,书面上粗心看很像 unix)
事实上, Unix 是 「祖父级别」的 操作系统名称, 远在 我们目前主流的 macOS / Windows / Linux(包括 Android)系统之前就已经诞生。而且 Unix 深深的影响了我们当代系统的发展。比如说,
- macOS,我们现在 Apple 电脑上的 macOS, 本身就是基于 Unix 的一个版本,Apple 因此经常骄傲的说,我们比微 X 的系统更安全稳固。
- Linux, 其创始人 Linus 参照当时的 小型类 Unix 系统 (Minix)捣鼓了一个 类似的系统,起名为 Linus 的 Minix, 即 Linux 。对,起名就是这么任性。
- Windows 呢?Windows 虽然没有直接来自 Unix,但是 Unix 发展的计算机语言(也是很多工科生的噩梦,例如 C 语言)以及操作系统思想(管道,进程,信号)深深影响着 Windows (尤其是早期的)发展。微软甚至还自己搞过一个纯粹的 Unix 系统 Xenix,后来发现还是 Windows 来钱快,于是放弃了。
虽然 Unix 不是「独角兽」,这点也许大家有些失望, 但 Unix 和独角兽有个共同的潜在含义,那就是「独一无二」(Unique),很多业内人士 称 Unix 为 Unique System,凸显 Unix 独特的地位。而关于「海胆」,Unix 更有一些巧合,海胆并非人人爱吃,我遇到的一些欧美人甚至觉得「恶心」(gross),但喜欢日料的食客却赞不绝口。这点 和 Unix 的情况 也差不多,有人视之为珍品,有人却觉得 Unix 繁琐恶心,根本不值一提。
而这一切的「好恶」背后,我相信都和 Unix 的哲学 有关,这个哲学本身也备受争议,而且(很可能)不是一个「普世正确」的理念,尽管如此,我觉得这个哲学还是深深影响了 一代甚至几代人,至少在效率应用的选择上,即使放到今天,这些理念仍旧很有启发性。
哲学?听起来就很无聊?
「哲学」虽然听起来很深奥,但是换种提法:「方法论」,「原则」,「理念」,「毕业即失业」…… 可能就容易被理解些。
但请允许我还是使用「哲学」一词,不是因为装 X,而是因为「Unix 哲学」本身就是一个固定搭配了。按照这个搭配,大家如有兴趣可以从海内外网站搜索到无数的内容和意见,推特上直到 2 个小时前,还有人在讨论「Unix 哲学」(Unix philosophy)。
Unix 哲学,有很多种衍生版本,和我这里话题有关的,简单来说,我就取其 3 条:
- 一个应用尽可能只关注一个目标
- 尽可能让多个应用互相协调 / 组合
- 一切皆文件
在介绍我所相信的 Unix 哲学之前,我想诚实的告诉大家,我是怎么发现 Unix 哲学的,我并不是一个 「传统 Unix」用户(很少有人是,不少 macOS 用户也未必知道自己是 Unix 用户)。Unix 这个名字,除了我在大学时听说过,之后工作中几乎再无交集。我一度以为,Unix 就像历史书上一个不重要人物的名字(例如:Lyndon Johnson 林登·约翰逊,谁关心?),也许值得一提,但无人深究。甚至,我一点不喜欢老式 Unix 的非图形化交互方式,我需要记住很多命令,很多参数,命令和命令的组合,命令和参数和命令的组合,命令和…… ,感觉像是一套神秘的仪式。
我了解到 Unix 哲学, 并不是从 Unix 的角度,事实上,随便这个哲学叫什么名字,哪怕叫「独角兽哲学」「海胆哲学」,我都不关心;我之所以感兴趣恰恰是因为「哲学」两个字。
出于职业习惯,我用过很效率工具,其中部分是需要帮助企业设计改善工作流程。随着使用工具越来越多,对企业的需求越来越了解,我发现有一些「规律」可循。例如:我会留意,为什么明明没什么相关经验,却坚持要上「大而全」系统的很多企业,后来都不能得到 Happy Ending。
我并没有把这些规律上升到哲学层面,但是随着积累,我觉得这些「规律」隐约和人们提到一些理念有微妙的联系,例如:「小而美」,「专注做好一件事」,「目标导向」 等。
再深入一些,当我把这些规律归纳到一起时,我在网上就能搜出「Unix 哲学」这个搭配出来了。
这个时候,我才记起到 Unix 这个名字。Unix 诞生和早期的发展时期,处于上个世纪 60~80 年代,联想到当时「反越战运动」「嬉皮士文化」「自由至上主义」「X 解放」,因此「崇尚自由」的理念一直贯穿在 Unix 哲学中,也就不足为奇。
这时,我觉得我一直「折腾」很多事情,包括各式各样的效率工具,有种「舍本逐末」的感觉。我们可能是想获得某种程度的「自由」,但最终被各种工具所束缚。我们究竟是被自己的「哲学」所指引,还是被一些工具的「宣传语」所吸引?或者仅仅为了跟上某种「流行」?
例如:我一度很迷恋 GTD 工具,然而如果不需要深度任务分解情况,或者没有很强烈协作需求的情况下,很多时候手机自带的的免费「提醒事项」,或者一页「便签纸」,就已经可以解决了。通俗来说,「买盒牛奶」这种事情,不值得我们为之匹配复杂的工具,复杂工具反而会限制我们的「自由」。
带着这种想法,我们可以重新审视一下诞生在上个世纪的「Unix 哲学」是如何启发我们的。
理念 1. 一个应用,一个目标
一个应用尽可能只关注一个目标。
我回忆一下自己及周围人的经历里面,大量的悲剧发生在对「目标」把握的失衡上,「喜欢 A,却和 B 交往,最后嫁给 C,出轨了 D」这种例子,数不胜数。我最想一说的是,我个人的 Todo 工具,我很想给大家一个截图,我一度手机上有不下 10 个 Todo 工具,基本上能报的上名字的,我都有。(大概因为成年人不做选择题,成年人说我都要。)
出于工具研究是一方面原因(或借口),糟糕的地方在于,我相当一段时间在一直混用这些工具,有时会把工作类事情记录在 OmniFocus 上,它非常适合任务分解和回顾。有时会把任务记录在奇妙清单上(后来变成了 Microsoft To-Do),因为足够轻量快速,而且跨平台。有时日程会记录在 Fantasical 上,有时则通过 Things 安排。一时兴起的 临时记录会用到系统自带的「备忘提醒」。这样做下来,基本上我已经很难分清重要的任务在哪里了,切换在不同工具下记录任务的过程也非常痛苦,这都不是「自由」,这是「负担」。如果我不逐个工具进行任务检查,很可能会遗漏什么。如此不便,我使用 To-Do 工具的目的又何在?
对于 To-Do 工具的目标不明确,导致采用多个工具,产生效率降低,抵消甚至倒扣了工具带来的好处。所以,现在我对 To-do 工具的目标就很明确了:「非协作,跨平台的提醒备忘」。当然这不是所有人的标准,这恰好只是我个人的目标:我有工作上成熟的协作工具不需要 ToDo 工具来处理,我有跨系统平台提醒的实际需要,而且个人习惯上比起日历我更在意提醒。明确了目标之后,我现在采用的是「Todoist」,这是我 To-Do 的唯一入口。
理解自己的「目标」虽然很重要,并不是说「目标」不会变,至少也有短期长期目标,不能错配。我接触过的客户当中,更是如此,一个希望采用系统提升效率的企业,如果不知道自己近期最需要的是什么,只知道堆砌各种「流行」的功能,不仅会导致项目「范围蔓延」影响交付,也会导致企业增加高昂的额外成本。一度非常流行咨询开发一个 App,就是一个例子,某个老板有一个商业 idea,向我咨询希望 App 来承载,要求能社交推广,能充值支付,能反馈跟踪,能打通 ABCD 应用接口,能 2D3D 展示,能 AI 客服自动建议,能大数据分析…… 这一切要一次完成,然而这个 idea 还没有充分商业验证过。这个时候,目标难道不应该是快速验证 idea 吗?如果需要,然后再逐步迭代或替换或添加工具,每次满足一个目标,直至接近完美,私以为这才是正解。也不妨透露一下,最近这类咨询少很多,资本寒冬也是有好处的,而周围比较成功的老板,都比较注重「目标」,有些工具和产品非常简陋甚至是一次性的,但够用;有些是看似微不足道但把某类需求满足到极致的,这类老板往往才是「闷声发财」。
一个应用,如果是为了提升效率的,最好明确提升了什么效率。否则也会陷入「大而全」的陷阱,最近有业界这个趋势,不想点名,会牵涉到一大票「跨界」的效率应用。按照 Unix 哲学来看,什么都做的应用,就是什么都做不好的应用。应用大厂和商家为了抢夺市场,甚至是下沉市场,鼓吹效率场景的「万灵药」是一回事,然而我如果想成为「专业人士」,自己还是要有清醒的意识,我是谁,我在哪里,我为什么采用这类效率工具,解决了什么问题。我个人倒是建议大厂可以分拆出一些「子品牌」,最终还是要突出每个应用自己的「专注目标」所在。
理念 2. 组合胜过单干
尽可能让多个应用互相协调 / 组合。
从上个理念我们知道,Unix 哲学不相信「万灵药」一样的应用。我们也许会发现,「应用程序」其实像很我们身边的人,有各种能力特色,有优点和缺点。聪明的管理者把人组织起来,形成团队达到更高的目标。而喜欢专心寻找「超人」的管理者,或者自以为是「超人」的老板,一般都要咽下现实的苦果。
Unix 哲学是 「面向现实」的哲学 ,首先承认应用都是有「弱点」的,所以才需要搭配,另一方面这也是「分工经济」的体现。有弱点本身不是问题,如果我不会钓鱼,但我会做面包,我可以拿面包换鱼肉,做好面包是我的本分。这种哲学相信我们生生不息的经济活动「生态圈」,都是被这种「看不见的手」所主导的。
往小的方向上想也是一样,我们未必人人都会去管理一个团队,但我们几乎人人都在管理自己的 一个手机,一台电脑,一个平板。我们面对形形色色的「效率应用」时,和组织一个团队是同样的境遇。
我很喜欢的桌面文章撰写 应用是 Typora,同时我配合 iCloud 作为云存储,在手机上使用 iA Writer 查看或轻量编辑。
这三者在 桌面端,云存储,移动端上各有所长。我选择这样一个「3 件套组合」,不是想说服大家也这么做,每个人有自己实际需求,我完全可以选择一个「超级应用」来满足。
- 一站式全平台
- 自带云存储
- 附带 高级富文本编辑功能
- 兼容 Office 文档格式
而我没有选择这样的「超级应用」,是出于一些「Unix 哲学」所倡导理念的考虑:
避免被单一应用「绑架」
一个「超级应用」的确是让人省力的,不过「集中性风险」也是巨大的。
一个既能 花式编辑,又能云存储,又是跨平台,还有各种附加能力于一身的「超级应用」,会让我眼界放窄产生依赖。
- 按照「能躺着绝不站着」的原则,一旦习惯了「超级应用」带来的便利,我几乎不会去寻找替代品;
- 即使去找,也很难找到第二个完全匹配的「全能力」替代品;
- 再退一步,即使找到替代品,迁移历史数据也很困难(有些应用开发方会人为制造这种困难);
- 即使可以迁移数据,操作习惯也会发生变化,需要重新适应。
- 我个人对于「超级应用」的任何不满,都只能忍气吞声,因为我不想为了码点字,而对整个方案进行「重构」。
比起整个方案「重构」,按「组件」逐步替代就是个理想的渐进过程,风险小到可以忽略。比方说,万一 iCloud 停摆了, 我们的 OneDrive 可以无缝顶上。前提是,某个应用没有强制我们采取它自带的云存储,或者这个应用至少允许我们也可以选择同步到 iCloud 上。
我相信,上个世纪的 Unix 大佬,对于系统的「集中性风险」显然有过认真的考虑,可能和「越战创伤」有关,他们可能害怕集中且无所顾忌的 …… 我觉得不能说更多……
Markdown 应用只是个便于说明的简单例子,完全可以引申为知识收集整理「工作流」。我的原则是,没有哪个应用可以成为「工作流」的绝对主导,每个应用必须和其它应用配合使用,而且有备胎可用。用人话来说,每个小伙伴都要学会团队精神,不要单干也没有必要单干,「There is no I in team」,也许从单位 HR 也能听到类似的话,背后也可能是一个意思。
1+1>2
之所以 1+1>2 是因为「协同效应」,形象来说,Jane 和 Jack 两人分工,一个装箱,一个搬运,好过两个人都去又装箱又搬运。
现代工厂的「流水线」机制就是出于这样的考虑,我们讲的各种信息化「工作流」,很大程度上就是把工作分解到 不同角色 / 不同阶段 / 不同应用,并且使信息在其中高效流转的过程。
工具应用也是一样,Unix 下无数让人「头皮发麻」的命令 / 工具,就是想贯彻这个精神,如果仔细去看,我们会发现命令和命令,应用和应用的组合花样之多,让人乍舌,估计这种「组合」可以搞定发生在 Unix 里面的任何事。虽然我觉得我们一般人,尤其不是系统工程师的话,没有必要了解如此细致的「分工组合」,但是哪怕稍微有一点「组合」的概念,也能让我们获益良多,我就问:
- 比某些「超级应用」附加的 Markdown 书写体验,Typora 它不香吗?
- 比某个封闭 App 自带的海外云存储,iCloud 的国内云同步不是更让我们放心吗?
- 比某个只能看看不能编辑 Markdown 的「超级应用」,iA Writer 的移动端体验,不强 10 倍吗?
- 这些效用加起来,难道不是 1+1>2 吗?可能都大于 4,5,6 了。
还是那句话,这个工具组合并非「放之四海」的标准,Markdown 应用也只是便于说明的例子,每个人都可以自由选择自己喜欢的应用,任意替代我上面的工具,我只是表达「组合」的理念。还有非常重要的是,「超级应用」并不针对谁,万一感觉是针对谁,请自己消化,不要声张。
理念 3. 一切皆文件
Everything is a file
Unix 的这个理念,本身也有争议,仅供大家参考启发。
Unix 认为「文件」是一种 信息输入输出的高度抽象 ,我们可以把一个文档,一个程序,甚至一条内存,一个显示器 都看成同一类东西。当然我们也可以称之为「资源」。但 Unix 下,「文件」就是你我能看到的「.txt」「.docx」之类的东西,确切的说,有「文件名」可以按文件常规方式操作的「资源」。实际当中,我们每个大活人,在某些体系下也只是一个或几个「文件」(例如:带员工编号的人事档案),当然我不认为这是「Unix 哲学」的体现。
现在,我们生活在互联网时代,生活在手机应用充斥的今天,我们很容易认为,「文件」这个概念太古老了,甚至过时了。我们生活中的遇到的信息,没有什么「统一」的文件概念,我们一般称之为:
- 一个网页
- 一个云文档
- 一封邮件
- 一个在线问卷
- 一张相册照片
- 一个聊天
- ……
「文件」?我可能一秒钟也没有考虑过,也可能有些小伙伴很久都不需要接触「文件」。iOS 直到近几年才加入了「文件」这个应用,之前则尽力淡化「文件」这个概念。但 Apple 公司显然也发现,没有「文件」的概念,如何谈生产力工具?iPad 要避免沦为「买后爱奇艺」的设备,怎能不提「文件处理」?为什么我要强调「文件」如此重要,是因为:
方便实现「组合胜过单干」的理念
很多工具都提供各式各样的接口,每个接口都需要对接设计。
而文件,尤其是开放标准格式文件可以省去很多麻烦,例如:文本文件(Unix 哲学中另有一条,信息交换倾向于纯文本),就是天然的统一接口。信息处理双方不需要从 0 开始定义如何交换信息,而我们可以把精力放在「内容」上,而不是如何转换格式,或者制定接口协议上。
就像如果指定大家都说一种语言,那么我们就可以把精力放在讨论事情上了,省去了翻译语言或斟酌用词的麻烦。
这样做也有缺点,文件不是在所有场景最高效的手段,不过我们日常工作中,甚至不少可以自动化操作的工作流当中,文件是足以胜任的。
例如:一份 Excel 销售表 → 执行一小段脚本,提取数字 → 数字添加到周报 Word 文件中 → 自动复制粘贴,或者自动按邮件附件发给老板。
我们看到,Excel/Word/Outlook/脚本应用就这样被「文件」组合起来了。
降低我们面对信息的操作成本
「文件操作」是信息处理的基本操作。我们知道的不少其它的信息操作都是文件操作一种「模拟」。
例如:
- 网页系统里面「添加」一个案件,「删除」一个案件。
- 「选中」一些联系人,「拖入」黑名单 (文件夹)
- 「打开」编辑一个在线表格,并「打印」出来
- 在日历应用中,「新建」一个会议,并「设置」日期属性
……
如果某个工作流,我们以实用为导向,不需要过多考虑面向所有人的「界面体验」,那么不如直接基于「文件」进行处理吧。这样一来,就可以省下很多操作上成本。前面说的,iOS 开始重视「文件」作为生产力的一个重要部分,某种程度上,是因为我们实际工作的「生产力」应用和「消费」级应用截然不同,「文件操作」就是事实上比较省力的而且教育成本也很低的信息处理手段。
满足备份 / 归档积累的需求
如果我们逐渐开始接受「一切皆文件」,那么也可能意识到「文件」也是信息处理的「统一」终点。
我自己这里所有重要信息,如果需要归档或备份,一定是转存为「电子文件」形式,而且一定保留至少 2 份本地的文件拷贝。
前几年「XX 快盘」「XX 云盘」由于突然停服,导致不少人(包括我)需要资料时,却不得不在最后停服前和大家一起挤兑,并忍受慢速提取。
这些经历提醒我,没有必要把 归档 / 备份 放在外面,因为只要事前稍作安排,就能自己掌握主动,前提是,信息都采用「文件」的形式。
通过转存到「文件」,我们可以备份几乎任何东西 :
- 作为证据的聊天记录
- 重要的客户邮件
- 一个有参考价值的网页
- 一些珍贵的照片
- 甚至纸质合同
- ……
而且主流的文件存储方式,其相对成本(每字节单价)很低,而且存储方式选择也很多,从一块移动硬盘,到一个磁盘阵列,丰俭随意。
所以,我现在的习惯是,有以下特点的应用我坚决不碰,因为里面的信息无法被有效归档和备份:
- 完全不能将数据「导出」为文件的应用
- 可以「导出」,但不能将数据「导出」为「公开格式」的文件应用
最后, 寻找心中的「独角兽」
说到这里,对于「Unix 哲学」无论大家是认同也好,还是根本没兴趣,都已经不重要了。正如开头所说,有人认为「海胆」是绝赞美食,也有人认为相当恶心,这并不重要。况且,我也一直不认为存在一种「普世方法论」能够放之四海皆准。
重要的是,Unix 业界的各位先驱们,虽然他们并非神明,但他们怀有一些 ,或许「古老陈旧」,或许「理想主义」,或许「崇尚自由」的理念,他们至少找到了心中的「独角兽」,并且把它以一种让人「头皮发麻」的方式呈现了出来,从此启发了后面几代人。这一点我个人非常欣赏,可以说,在我眼里,Unix 是一个「有灵魂」的系统。
即使如此,即使我写下此文,我仍旧不喜欢使用传统 Unix,以后应该也不会去使用。但是,我很欣喜的发现,如果从「Unix 哲学」这个角度来看待各类工具应用,的确能帮助我找到很多疑惑的解答,甚至我们可以将「Unix 哲学」放之更广,考虑一下 工作业务,团队管理上的应用,也许有会有新的发现。这可能才是「Unix 哲学」的「独特」魅力吧。
最后,希望本文的「Unix 哲学」可以启发各位,从而发现每个人自己心中的「独角兽」!