什么是元知识,我的理解是各个领域都通用的知识,例如交流的能力,搜索信息的能力,语言的能力等,不管你是从事什么行业的工作,这些都是必备的技能(或可以增益的技能)。什么是领域知识,例如编程能力、运营能力,这些是在特定领域发挥作用的知识,虽然编程和运营都可以运用在别的领域中,但是都是比较简单的情况(产品经理如果想学习简单的数据分析知识,不需要去学习如何编写操作系统)。

信息检索是所有元知识中最重要的一个,因为如果学会了这个,完全可以通过自学习的方式去学习其他元知识,所以可以被成为「元知识」的「元知识」。

定义问题

在搜索信息之前我们首先要定义问题,你到底要搜索什么样的信息?

很多人其实不会问问题,经常有网友给我发邮件或私信询问编程相关的问题,很多都是直接甩过来一张错误的截图,然后留一句怎么解决(有的甚至连这句话都没有)。最开始我还会仔细看一下问题中的具体报错是什么,久而久之,这种问题多了,我也就懒得回答了。有的人我告诉他把问题描述清楚,ta 还会说你摆架子。后来,对于这种问题,我直接删除扔进垃圾箱不再去管。

相反的,另外一部分人很善于问问题,问题描述地非常清楚,包括产生错误的上下文,遇见错误后自己的解决办法,对于这种问题,经常是看了上下文就能找到问题出现在哪里,或者根据它的运行环境在本地测试一下就能 debug 出问题所在,对于这样的提问者,我通常非常乐于解答。

好的提问和坏的提问,可以带来不一样的反馈。所以,下次在问问题之前可以先问问自己:

  1. 遇到的问题到底是什么?能否用简单的话描述?
  2. 出现问题的上下文是什么?是否是某些失误导致的?
  3. 我采取了哪些办法来解决问题?是否可行?

说不定在你想清楚这些事后,就能自己找到问题的解决方案了。

关于定义问题的方法,推荐阅读一下波利亚的《如何解题——数学思维的新方法》,这本简短的小册子介绍了如何定义问题、描述问题、抽象模型、解决问题,是一本对思维训练非常有帮助的书。

Raymond Hettinger 在今年的 PyCon 上有一场演讲就是关于如何定义问题的,有兴趣的读者可以看一下:Modern solvers: Problems well-defined are problems solved

学会提问

学会定义问题之后就要开始提问了,从上一节也可以看出来,不同的提问方式得到的解答也不一样。好的提问会得到积极的解答,不好的提问会得不到有效的反馈,被当成伸手党。

提问的智慧 这本小册子详细介绍了在互联网上应该如何提问,虽然很大程度上是编程领域的提问指南,但是对于其他领域也同样适用。

使用搜索引擎

如果遇到一个自己无法解决的问题,第一件事应该是求助于搜索引擎。所有你能想到的问题,大体上别人也都问过了,搜索引擎是你最好的老师。

如何用好搜索引擎?

  1. 选择合适的搜索引擎
  2. 定义问题,分解关键词
  3. 使用高级搜索

你可以根据问题的不同来选择不同的搜索引擎,一般来说,中文的娱乐内容可以使用百度来搜索,其他严肃类的内容搜索,统一使用 Google。关于为什么严肃类内容不能使用百度来搜索,可以参考这篇文章:搜索引擎百度已死-虎嗅网

定义问题在第一节中已经讲到,将定义好的问题分解成关键词可以更好地搜索到想要的内容。例如「Python 如何使用标准库进行格式化时间字符串」可以分解为下面几个关键词:「Python」、「格式化」、「时间字符串」,还可以翻译成英文关键词:「Python」、「format」、「date string」,第一条就是 Stack Overflow 的解答:python - How to convert a date string to different format - Stack Overflow

很多人使用搜索引擎都是简单的用关键词进行搜索,其实 Google 等搜索引擎都支持自定义的高级搜索,知乎的这篇回答详细介绍了如何使用 Google 的高级搜索语法:如何用好谷歌等搜索引擎? - 知乎

自动化你的搜索流程

Alfred 是 macOS 上的一个快速启动器,利用 Alfred Workflow,可以自定义你的搜索引擎工具箱。

例如我经常会在 GitHub 上搜索一些代码片段,利用 Alfred 可以把流程简化为:

  1. 快捷键呼出 Alfred 输入窗口;
  2. 输入想要搜索的代码片段关键词(或从剪贴板粘贴);
  3. 回车!

结果会自动展示在浏览器的窗口中。

Alfred 的设置如下(在新标签页中查看大图):

其中,Search URL 填写的是想要搜索的地址, query 是替换的搜索内容,打开 Alfred,输入 keyword 中的关键词就可以快速呼出这个搜索框了。

这只是 Alfred 基础功能的最简单使用,在之前的文章中我介绍过使用 Alfred 的 Workflow 来自动生成博客:使用 Devonthink 来写博客,在后续的文章中,我将会介绍更多的 Alfred 高级使用技巧。