4.2 “一切程序都是过滤器”——对生产力软件的重新思考
工作对我的数字生活的另一项影响是改变了我评价和选择生产力软件的思路。一方面,由于要处理的任务的性质相对稳定,我对于工具的需求变得更加明确;另一方面,有限的闲暇时间也不允许我再以“玩玩具”的心态四处“尝鲜”和频繁迁移。
以评价生产力工具的典型代表——任务管理软件为例。此前,我用过的任务管理软件不可谓不多,对于它们各自的特征也都略知一二,但如果问我如何选择,我还是只能诉诸功能多少。实际上,现有的多数评测文章的思路也是“甲软件中的任务具有某些属性,乙软件中的任务具有某些属性;乙软件的属性设置更灵活,因此更好”。但这种“比大小”的思路多少有些颠倒了主次。任务是独立于记录介质而存在的,它产生于生活和工作的真实需求。任务管理软件并不能凭空“创建”任务,而只能“刻画”现实中存在的任务。这种刻画可能有角度、详略之分,但刻画的对象——任务——并不因此而受到影响。Todoist不支持设置任务的“开始日期”,但一项任务并不因为被记在Todoist中就不可能到未来某天才有条件执行;OmniFocus的组织层级反映了开发者对任务管理的理解,如图4-9所示,因此直到3.0版才支持为任务添加多个“情景”,但记在其中的任务显然不是随着版本升级才“一夜之间”涉及了生活的多个方面。
图4-9 OmniFocus的组织层级反映了开发者对任务管理的理解
此外,既然是刻画,就必然存在遗漏,因为可能的观察角度是无限的。但“遗漏”并不等同于缺陷,而是不同软件主动取舍的产物,也是它们各自的特征甚至优势所在。实际上,任何任务管理软件在本质上都是一个“过滤器”,都代表着开发者基于对任务的理解创作的一套过滤规则。
这就解释了为什么任务管理软件市场看似一片红海,但仍有源源不断的新产品被开发出来——一千位用户可能有一千个理解任务的角度,任何一种描述方式都有其潜在的受众。OmniFocus的追随者可能很难想象一个任务没有开始日期,但Todoist阵营却认为这是为了一览无余和便于管理,需要开始日期反而说明任务分解得还不够细。反过来,其他软件的用户可能习惯了将任务随意移动,但OmniFocus却坚持任务必须依附于项目,而不能被直接放在文件夹中,否则说明分类可能存在赘余。
可见,选择一个任务管理软件就是选择一种对任务的描述方式,就是在给开发者所宣传的那套过滤规则“投票”。既然如此,评价的标准就不应该是“比大小”,而是这些方式和规则在多大程度上符合自己的理解、契合自己的需求。
同样的方法也可以推广到对其他生产力软件的选择上。例如,对于写作类工具,要被刻画的对象就是文档。那么,一份文档是一篇独立的作品,还是完整项目中的一页草稿?整理文档的方法除了利用标题和日期,是否还包括写概要、贴标签?文档能不能添加附件、能不能相互引用?
对于这些问题的不同回答,最终就反映为软件的不同功能体系和操作逻辑。如果采取“白纸加铅笔”的极简模式,就会做出Byword这样的纯Markdown编辑器。在此基础上引入文档库、附件等概念,然后逐渐进化到iA Writer和Ulysses这些写作、管理一体化工具。而如果将复杂度推到极致,将写作描述为一个系统性、多阶段和非线性的项目,就催生出了Scrivener这样的“写作IDE”,如图4-10所示。它的强大和复杂正是因为允许开发者通过标签、关键词、概要、完成状态等足够多元的角度刻画文档(还嫌不足的用户甚至可以自定义所需的属性)。而Corkboard、Outliner等令人眼花缭乱的功能在本质上都是一些预置的过滤规则,以将具有特定属性的文档筛选出来,并以卡片、大纲等形式呈现。
Scrivener往往被认为特别适用于写小说等长篇作品。究其原因,正是它对写作这件事的描述方式精准契合了作家的需求,如以鸟瞰视角随意排布记录灵感的卡片,以时间线方式串联涉及特定角色的段落等。反过来说,如果你的需求只是做速记或写短文,或者习惯一气呵成的写作方式,那么自然会对Scrivener的体系和设计感到烦琐和困惑。
这种将软件看成过滤器的思路并不是我的原创。在《Linux/UNIX设计思想》(Linux and the UNIX Philosophy)一书中,迈克·甘察日(Mike Gancarz)就阐述过这种思想,并将其上升为Linux/UNIX的一种“信条”。在他看来,计算机不能创造信息,只是在处理信息,把信息从一种形式转换为另一种形式——进行过滤。
图4-10 Scrivener针对写作者设计的各种视图
当然,迈克·甘察日的目标读者是开发者,意在通过让他们认清软件作为过滤器的角色,在开发时注重提高兼容性和普适性。但换一个角度,这也能指导用户在选择软件时,更多地从自身出发,而不是“拿着解法找问题”。
你可能发现我还没有介绍自己最终都选择了哪些生产力工具。但其实如果上面的说法都是对的,你现在应该也不关心这个问题的答案了。