在我的知识星球「玉树芝兰」上,有一位名叫 Kevin 的朋友提了这样一个问题(简明起见,问题原文经过编辑):

我是一名工具爱好者,但一直没怎么接触过电脑;对于稍微懂些计算机的人看来是很常识性的东西,我却感到力不从心、没有把握。由于不了解相关的计算机知识和底层逻辑,我虽然也能使用 Zotero、DEVONthink、Obsidian 等生产力工具,但总是浅尝辄止,难以到位;这让我在创作时感到一定的负担,无法达到「随心所欲」的状态。

其实我的要求也不高,就是希望弥补自己的计算机知识,达到足以理解当前所使用工具的程度。但不知道为此需要学习哪些背景知识,例如简明的 Python 语言课程或者计算机通识书籍。很希望老师能推荐一些经典、优质的资源。

我觉得这是个很有代表性的问题,所以在此把答案分享给你。以下是我的答复(有改动)。


Kevin 你好!

我们把问题梳理一下。如果你的需求刚好和工具提供的功能匹配,我想你是不会感觉到「力不从心」的,也不必去顾虑自己对计算机底层逻辑和计算机语言知识欠缺,正常使用就好。你有这个疑问,很可能是因为你的需求与工具功能不完全一致。所以,你想做的,是打造个性化的高效工作流,需要对工具进行改动、补充或者综合。如果我的理解不准确,欢迎你补充。

「懂」与「不懂」,差别在哪?

想想看为什么我们会喜欢效率工具,其实它帮助我们包裹了一些实现细节,给我们提供了好用的功能。如果你对计算机底层了如指掌,那大可不必去追逐工具的更新,或者天天尝试新工具,而应该自己来改造甚至全新设计合适于自己的工具。

就拿编辑器来说,VS Code 出现之前,计算机界「自古以来」有两大阵营,分别是 Vim 和 Emacs 。

Emacs 就是个典型的可扩展工具,号称是「伪装成了编辑器的操作系统」。如果你掌握了 Lisp 语言,那么可以自己开发上面的各种宏和插件,简直就是千变万化。你看,那边厢 Roam Research 一推出,Emacs 上很快就有了 org-roam ,对标其功能。

但是,正如你所说的,普通人并不了解计算机底层是怎么运行的,所以没法自己玩儿这种「独孤九剑」,而只好在应用层接受现有的工具。一款工具,要面向整个儿用户群,很难做到「千人千面」。当你遇到不顺手的地方时,兴许就得忍一段时间。

举个例子,Roam Research 的插图,只存放在 Google Firebase 上面。这其实并不够安全。因为没有任何一个严肃的知识管理者,会放任自己的数据只存在云端,却不在本地的。

而且你会发现,拖拽图片上传的时候,总会有个延迟。

你说很长吗?也不是,但是那个进度条出现,慢慢走,变颜色。这会儿功夫,往往会让你感觉一种无助 —— 此时只能眼睁睁看着时间流逝,自己却做不了什么。甚至因为盯着进度条入神,可能让你忘了刚才想要写啥来着。

如果你是个普通用户,这些就是你目前得忍受的。顶多,你找 Roam Research 的客服,要求他们改进这个问题。人家可能会觉得这是个问题。不过他们的任务列表上面,还有一大堆更棘手的问题亟待解决。你这个需求真正得到满足,可能得等上好一阵子。

但是如果你了解 Python 和 GitHub ,这些就不算事儿了。我就在文章里写过,自己是如何基于别人做的备份 Roam Research 工具,写了 Python 脚本,可以将 Roam Research 的数据备份为 Markdown、JSON 和 EDN 文件,同时搞定图片的备份。

这样一来,每隔一个小时(这个时间间隔,你可以自己设定),你都可以让 Github Actions 自动帮助你把 Roam Research 备份下来,并且从中找到所有的图片链接,分别备份在本地、Dropbox 和你指定的某个图床上(例如我选择的是 AWS S3)。这样,你就做到了「狡兔三窟」,不会因为某次网盘发生的极端情况,导致自己几年积攒下来的图片数据被「一锅端」了。

真出现那种事儿,恐怕 Roam Research 官方也只能跟你说句 "I am so sorry" ,因为这种天灾人祸,他们也是束手无策的。

至于 Roam 所用的 Google Firebase 图床上传慢的问题,你也可以采用其他的图床。其实这种帮助你上传图床的工具很多,例如 iPic、uPic、PicGo 等都不错。

你可以拖拽图片,或者用快捷键上传。图床的链接,可以用 Markdown 图片样式反馈给你。如果用的是国产的图床,几乎是刷啦一下子,上传和链接回传就完成了。然后贴到 Roam Research 里面,一样是正常显示。你插图的工作,于是变得更加愉快。

这个例子虽小,却包含了两点值得注意的事儿。

第一,如果你真想把工具改造得「从心所欲」,那么确实是需要掌握一些更为底层的知识、更为进阶的技能。例如说脚本的撰写(包括 Python 或者 Apple Script 等)。当然,最好还需要了解一下 GitHub ,因为它可以通过版本管理达成数据安全,而且 Github Actions 还能完成很多自动化的操作等。

第二,即使你不具备上述能力,也有一些变通的方法。不过这需要你了解更多的工具及其特色。假如你从来没有听说过 iPic, uPic, PicGo 等图床上传工具,那么可能你就得一直忍着 Roam Research 图片上传进度条,觉得这就是「人间正道」。直到某一天,你看到别人使用 uPic 的时候,初惊诧,复沉默,再热泪盈眶。

下面咱们说说怎么办

如果所学尚浅,如何以人为「径」?

确实,不是每个人都有精力、有条件去学习那些更深入的知识和技能。但如果你没有打算系统学习底层的脚本编程等深度内容,就得能够了解新的好用工具,及其组合使用方式。这时候,最好是能够「以人为径」。我这里没有打错别字,不是想说唐太宗那种「以人为镜」,而是把他人当作过滤和连通解决方案的「途径」。

现在不是流行直播带货吗?想想看你为什么会信任某些主播,而「闭着眼买」?除了价格因素以外,他们就有这种把你和好货连通在一起的属性。好比说对方博览群书,更能分辨书籍质量,选择这样的路径,就可以一下子知道很多有趣有益的新书;有的人对数码产品深度钻研,跟着他的推荐选购,你可以知道许多新品有什么特色功能,同时避开很多坑。

这就是人作为「路径 + 过滤器」的优点。其实不要误会,直播带货之外,我们也需要这样的「以人为径」,例如我在得到 App 订阅了贾行家的《文化参考》,上了王佩老师的《好中文》课,常听 永锡老师的知乎直播,少数派网站上订了 少楠的专栏《产品沉思录》;至于 赵赛坡先生的邮件订阅产品,我买的是终身会员…… 这些有趣的高人,让我增长见识的同时,也了解到了很多有趣的文化、艺术、科技作品和效率工具。

Roam Research 的中文群「Roam CN」里面,也有很多热爱分享的小伙伴。例如吕立青这小伙儿,经常把几种现成的工具结合在一起,玩儿出了花。他的 B 站视频,很值得你花时间看看。

从别人那儿获得的认知,若能有助于你改进工作流程,回应痛点,那么你的目标也就达成了。这是最高效的方法,因为你避免了「重复发明轮子」的过程。

如果决定学习,从哪里学起?

当然,如果你发现穷尽各种渠道,现成的资源依然不能满足需求时,可能就得「自己动手,丰衣足食」了。

如果有此打算,我建议你可以循序渐进,先学以下几样东西。(注意其中有些是 iOS 和 macOS 系统专用,但 Windows 上也不难找到类似定位的工具。)

一是「快捷指令」(Shortcuts)。这东西的好处是不涉及任何代码知识,简明易懂、上手快速,而且 iOS 和 macOS 通吃。有了它,你可以和 Siri 结合,把许多繁琐的流程操作变得简单,行云流水。

比如,我之前 分享过赵赛坡先生的语音输入转文本流程。其中有个关键步骤,是把语音备忘录的内容送到飞书妙记里面。有了 Shortcuts ,我只需要打开 Siri ,说一声「秘书」,这俩工具就都打开完毕左右分屏,虚位以待,我再批量拖拽一下就完事儿了。如此一来,你才不会觉得用这个流程麻烦,甚至因为心理负担减少使用频率。

学习快捷指令,可以订阅 「少数派」网站上 2018 年 的付费专栏。时间虽然有些久,但是内容依然可用、实用。教程写得结构严谨,还很有趣。

其次是 Keyboard Maestro。它比快捷指令要复杂一些,但也不需要懂编程,却强大到我现在根本离不开。当然,如果你懂代码,它更会如虎添翼。虽然是个商业软件,需要花钱买,但是我觉得这个钱花得物有所值。

你可以使用快捷键,让一个流程走下来,先来上一段 Python 脚本或者终端 bash 脚本,然后把结果送到捷径中,之后呼叫各种应用轮流上阵,甚至还可以模拟键盘输入…… 总之,就是让你用最小的代价,达到对计算机的灵活操控。

Keyboard Maestro 官网上有完整的教程和说明,直接看就行。少数派上也有很多教程和技巧(例如这篇 入门指南)。

第三,再往上走,还是建议你学学 Python。这东西可以看作一种全平台通用的「万金油」和「胶水语言」,同时有完善的「生态」;你即使学得不深,也可以发挥「拿来主义」,将现成的各种功能融为一炉。

Python 的学习并没有你想的那么难。网上有很多不错的入门教程,也可以试试我的《如何高效学 Python?》另外,注意学了 Python 之后,它不光能解决你工具改进的问题,还可以帮你做很多其他的事儿,例如搞点儿数据分析啥的。如果你想学数据科学了,我那本《数亦有道》兴许就能派上用场了 :P

小结

小结一下,计算机软件的发展,整体趋势是越来越易用,不懂编程也完全可以玩转得得心应手。

我们制定工作流程时,可以循序渐进,先考虑现成的、拓展能力更强的工具(例如上文提到的 iPic、快捷指令);如果想向上探索,可以优先考虑学习跨平台、通用的脚本语言(例如 Python 或者 Bash)。总之,要从需求出发、量力而行,避免为编程而编程,陷入时间和精力的黑洞中。毕竟我们是用户啊。

希望上述的回答,对你能有帮助。也欢迎你把自己阅读和实践反馈写在留言区,我们一起交流讨论。

祝进步!

延伸阅读

也欢迎关注我在少数派上的的专栏「科研利器」和教程 《科研新手全面入坑指南》