我们今天说的是 Unix哲学
Unix ……独角兽还是日料?
也许很多小伙伴已经非常清楚 Unix 是什么,不过这里请允许我略提一下身边关于Unix 名称的有趣经历。
我向一些朋友提起 Unix 时,有时会产生两种耐人寻味的意见:
* 谁不喜欢 「独角兽」 呢,是吧?(unicorn,发音也接近 unix)
* 「海胆」很贵,但很好吃~ (uni, 日料,书面上粗心看很像 unix)
事实上, Unix 是 「祖父级别」的 操作系统名称, 远在 我们目前主流的 macOS / Windows / Linux(包括安卓)系统之前就已经诞生。而且 Unix 深深的影响了我们当代系统的发展。比如说,
* macOS,我们现在苹果电脑上的 macOS, 本身就是基于Unix 的一个版本,苹果因此经常骄傲的说,我们比微X的系统更安全稳固。
* Linux, 其创始人 Linus 参照当时的 小型类Unix 系统 (Minix)捣鼓了一个 类似的系统,起名为Linus的 Minix, 即 Linux 。(对,人家起名就是这么任性)
* 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条:
(1)一个应用尽可能只关注一个目标
(2)尽可能让多个应用互相协调/组合
(3)一切皆文件
现代操作系统源自 Unix
在介绍我所相信的Unix哲学之前,我想诚实的告诉大家,我是怎么发现Unix哲学的,我并不是一个 「传统Unix」用户(很少有人是,macOS用户也未必知道自己是 Unix用户)。Unix这个名字,除了我在大学时听说过,之后工作中几乎再无交集。我一度以为,Unix 就像历史书上一个不重要人物的名字(例如:Lyndon Johnson 林登·约翰逊,谁关心?),也许值得一提,但无人深究。甚至,我一点不喜欢老式Unix的非图形化交互方式,我需要记住很多命令,很多参数,命令和命令的组合,命令和参数和命令的组合,命令和…… ,感觉像是一套神秘的仪式。
我了解到 Unix哲学, 并不是从 Unix 的角度,事实上,随便这个哲学叫什么名字,哪怕叫「独角兽哲学」「海胆哲学」,我都不关心;我之所以感兴趣恰恰是因为「哲学」两个字。
Unix诞生和早期的发展时期,处于上个世纪60~80年代,联想到当时「反越战运动」「嬉皮士文化」「自由至上主义」「X解放」,因此「崇尚自由」的理念一直贯穿在 Unix哲学中,也就不足为奇。
那个时代的 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的唯一入口。(之前是「奇妙清单」,现在官方不再维护了。马上要停服了)
这是我目前唯一的To-Do App
一个应用,如果是为了提升效率的,最好明确提升了什么效率。否则也会陷入「大而全」的陷阱,最近有业界这个趋势,不想点名,会牵涉到一大票「跨界」的效率应用。按照 Unix哲学来看,什么都做的应用,就是什么都做不好的应用。应用大厂和商家为了抢夺市场,甚至是下沉市场,鼓吹效率场景的「万灵药」是一回事,然而我如果想成为「专业人士」,自己还是要有清醒的意识,我是谁,我在哪里,我为什么采用这类效率工具,解决了什么问题。我个人倒是建议大厂可以分拆出一些「子品牌」,最终还是要突出每个应用自己的「专注目标」所在。
理念2. 组合胜过单干
「尽可能让多个应用互相协调/组合。」
从上个理念我们知道,Unix哲学不相信「万灵药」一样的应用。我们也许会发现,「应用程序」其实像很我们身边的人,有各种能力特色,有优点和缺点。聪明的管理者把人组织起来,形成团队达到更高的目标。而喜欢专心寻找「超人」的管理者,或者自以为是「超人」的老板,一般都要咽下现实的苦果。
Unix哲学是「面向现实」的哲学,首先承认应用都是有「弱点」的,所以才需要搭配,另一方面这也是「分工经济」的体现。有弱点本身不是问题,如果我不会钓鱼,但我会做面包,我可以拿面包换鱼肉,做好面包是我的本分。这种哲学相信我们生生不息的经济活动「生态圈」,都是被这种「看不见的手」所主导的。
应用的生态圈 才是关键
往小的方向上想也是一样,我们未必人人都会去管理一个团队,但我们几乎人人都在管理自己的 一个手机,一台电脑,一个平板。我们面对形形色色的「效率应用」时,和组织一个团队是同样的境遇。
我很喜欢的桌面文章撰写 应用是 Typora,同时我配合 iCloud 作为云存储,在手机上使用 iA Writer 查看或轻量编辑。
这三者在 桌面端,云存储,移动端上各有所长。我选择这样一个「3件套组合」,不是想说服大家也这么做,每个人有自己实际需求,我完全可以选择一个「超级应用」来满足。
* 一站式全平台
* 自带云存储
* 附带 高级富文本编辑功能
* 兼容 Office 文档格式
而我没有选择这样的「超级应用」,是出于一些「Unix哲学」所倡导理念的考虑:
(1)避免被单一应用「绑架」
一个「超级应用」的确是让人省力的,不过「集中性风险」也是巨大的。
一条路走到黑的风险
一个既能 花式编辑,又能云存储,又是跨平台,还有各种附加能力于一身的「超级应用」,会让我眼界放窄产生依赖。
* 按照「能躺着绝不站着」的原则,一旦习惯了「超级应用」带来的便利,我几乎不会去寻找替代品;
* 即使去找,也很难找到第二个完全匹配的「全能力」替代品;
* 再退一步,即使找到替代品,迁移历史数据也很困难(有些应用开发方会人为制造这种困难);
* 即使可以迁移数据,操作习惯也会发生变化,需要重新适应。
* 我个人对于「超级应用」的任何不满,都只能忍气吞声,因为我不想为了码点字,而对整个方案进行「重构」。
比起整个「重构」,按「组件」逐步替代就是个很理想的渐进过程,风险小到可以忽略。比方说,万一 iCloud 停摆了, 我们的 OneDrive 可以无缝顶上。前提是,某个应用没有强制我们采取它自带的云存储,或者这个应用至少允许我们也可以选择同步到 iCloud 上。
我相信,上个世纪的 Unix 大佬,对于系统的「集中性风险」显然有过认真的考虑,可能和「越战创伤」有关,他们可能害怕集中且无所顾忌的 …… 我觉得不能说更多……
Markdown应用只是个便于说明的简单例子,完全可以引申为知识收集整理「工作流」。我的原则是,没有哪个应用可以成为「工作流」的绝对主导,每个应用必须和其它应用配合使用,而且有备胎可用。用人话来说,每个小伙伴都要学会团队精神,不要单干也没有必要单干,There is no I in team,也许从单位HR也能听到类似的话,背后也可能是一个意思。
(2)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 直到近几年才加入了「文件」这个应用,之前则尽力淡化「文件」这个概念。但苹果公司显然也发现,没有「文件」的概念,如何谈生产力工具?iPad要避免沦为「买后爱奇艺」的设备,怎能不提「文件处理」?为什么我要强调「文件」如此重要,是因为:
方便实现「组合胜过单干」的理念
很多工具都提供各式各样的接口,每个接口都需要对接设计。
而文件,尤其是开放标准格式文件可以省去很多麻烦,例如:文本文件(Unix哲学中另有一条,信息交换倾向于纯文本),就是天然的统一接口。信息处理双方不需要从0开始定义如何交换信息,而我们可以把精力放在「内容」上,而不是如何转换格式,或者制定接口协议上。
就像如果指定大家都说一种语言,那么我们就可以把精力放在讨论事情上了,省去了翻译语言或斟酌用词的麻烦。
这样做也有缺点,文件不是在所有场景最高效的手段,不过我们日常工作中,甚至不少可以自动化操作的工作流当中,文件是足以胜任的。
例如:一份 Excel 销售表 → 执行一小段脚本,提取数字 → 数字添加到周报Word文件中 → 自动复制粘贴,或者自动按邮件附件发给老板。
我们看到,Excel/Word/Outlook/脚本应用 就这样被「文件」组合起来了。
降低我们面对信息的操作成本
「文件操作」是信息处理的基本操作。我们知道的不少其它的信息操作都是文件操作一种「模拟」。
例如:
* 网页系统里面「添加」一个案件,「删除」一个案件。
* 「选中」一些联系人,「拖入」黑名单 (文件夹)
* 「打开」编辑一个在线表格,并「打印」出来
* 在日历应用中,「新建」一个会议,并「设置」日期属性
……
各种系统都在「模拟」文件操作
如果某个工作流,我们以实用为导向,不需要过多考虑面向所有人的「界面体验」,那么不如直接基于「文件」进行处理吧。这样一来,就可以省下很多操作上成本。前面说的,iOS开始重视「文件」作为生产力的一个重要部分,某种程度上,是因为我们实际工作的「生产力」应用和「消费」级应用截然不同,「文件操作」就是事实上比较省力的而且教育成本也很低的信息处理手段。
满足 备份/归档积累的需求
如果我们逐渐开始接受「一切皆文件」,那么也可能意识到「文件」也是信息处理的「统一」终点。
我自己这里所有重要信息,如果需要归档或备份,一定是转存为「电子文件」形式,而且一定保留至少2份本地的文件拷贝。
前几年「XX快盘」「XX云盘」由于突然停服,导致不少人(包括我)需要资料时,却不得不在最后停服前和大家一起挤兑,并忍受慢速提取。
这些经历提醒我,没有必要把 归档/备份 放在外面,因为只要事前稍作安排,就能自己掌握主动,前提是,信息都采用「文件」的形式。
通过转存到「文件」,我们可以备份几乎任何东西 :
* 作为证据的聊天记录
* 重要的客户邮件
* 一个有参考价值的网页
* 一些珍贵的照片
* 甚至纸质合同
……
而且主流的文件存储方式,其相对成本(每字节单价)很低,而且存储方式选择也很多,从一块移动硬盘,到一个磁盘阵列,丰俭随意。
自己备份,有备无患
所以,我现在的习惯是,有以下特点的应用我坚决不碰,因为里面的信息无法被有效归档和备份:
* 完全不能将数据「导出」为文件的应用
* 可以「导出」,但不能将数据「导出」为「公开格式」的文件应用
最后, 寻找心中的「独角兽」
说到这里,对于「Unix哲学」无论大家是认同也好,还是根本没兴趣,都已经不重要了。正如开头所说,有人认为「海胆」是绝赞美食,也有人认为相当恶心,这并不重要。况且,我也一直不认为存在一种「普世方法论」能够放之四海皆准。
重要的是,Unix 业界的各位先驱们,虽然他们并非神明,但他们怀有一些 ,或许「古老陈旧」,或许「理想主义」,或许「崇尚自由」的理念,他们至少找到了心中的「独角兽」,并且把它以一种让人「头皮发麻」的方式呈现了出来,从此启发了后面几代人。这一点我个人非常欣赏,可以说,在我眼里,Unix 是一个「有灵魂」的系统。
即使如此,即使我写下此文,我仍旧不喜欢使用传统Unix,以后应该也不会去使用。但是,我很欣喜的发现,如果从「Unix哲学」这个角度来看待各类工具应用,的确能帮助我找到很多疑惑的解答,甚至我们可以将「Unix哲学」放之更广,考虑一下 工作业务,团队管理上的应用,也许有会有新的发现。这可能才是「Unix哲学」的「独特」魅力吧。
找到自己心中的「独角兽」
如果本文能让这种神奇的哲学启发到大家,从而发现自己心中的「独角兽」,那就最好了!
网友评论