了解你所不知道的事情的框架

2025-06-08

了解你所不知道的事情的框架

这篇博文最初发布在我的网站上。

在我的职业生涯中,我不得不学习很多很多新事物。我做过小学老师、数字营销人员、软件工程师,现在是一名全职开发者倡导者。我不得不一次又一次地学习全新的概念。这很棒;它让我保持谦逊,让我感到快乐。学习过程中会产生大量的多巴胺。但学习中最困难的部分之一是了解你不知道什么。了解你的不知道什么很重要,因为它可以防止你犯下那些源于判断失误的错误。

我学到了一些关于如何界定我对某个概念的知识界限的方法。我在这里分享我的框架,希望它能对科技界的其他人有所帮助。

第一阶段:无

了解一个新概念的初始阶段是最容易定义的。我从零开始!

这太棒了!我完全知道我不知道什么。假设我对 API 的概念完全陌生。以下是一张图,展示了我对 API 的了解程度:

我的大脑图像,位于标有“有关 API 的一切”的圆圈外面

没有比这更准确的了。我没开玩笑。“你不知道的事情”会让你一次又一次地感到惊讶。我在这里建议的框架并不能让你避免在人前犯错。但我认为它能为你提供一些关于如何学习新事物的一般指导。

第二阶段:概念的一个实例

那么,让我们来思考一下通用概念。我们都认同的定义。例如,根据维基百科,API 的定义是

“应用程序编程接口 (API) 是两个或多个计算机程序相互通信的方式。”

这或许不是最完整的定义,但我认为大多数技术人员都会认同。现在,你可以记住这个定义,但除非你在实际使用中遇到过 API,否则你无法获得 API 的实践经验。

假设我正处于这个阶段。我正在习惯查询 REST API,并且正在学习用 Python 或 Node Express 之类的语言自己构建一个。这个定义适用于我正在构建的 REST API,所以我正在积累一种 API 的经验。这是这个通用概念的一个具体例子。这是我的另一张大脑地图:

一个圆圈,里面装着我的大脑,刚好与两个相交的圆圈接触,这两个圆圈分别标有“关于 API 的一切”和“关于 REST API 的一切”。箭头指向这两个圆圈的交点

所以,我正在学习一些关于 REST API 的知识。目前就这些。箭头指向了一个我没注意到的边界:

我不知道 REST API 和所有 API 有哪些共同点,又有哪些不同点。

所以,我见过一个特定的API实例,但我没见过其他API实例。这是一个问题,因为在“API”这个通用概念下,存在着不同类型的API。就像在“猫”属下,存在着不同种类或物种的猫一样。老虎和狮子也有很大区别。

阶段 3:一个概念的两个不同种类的实例。

假设我开始实现的不是 REST API,而是 GraphQL API。它和 REST API 是不同的,就像狮子和老虎是不同的猫科动物一样。我对 API 的世界观开始崩塌。REST API 和 GraphQL API 之间的差异摧毁了这种世界观,比如

  • GraphQL 是应用层,而 REST 是一种 API 风格。并非所有 API 都是 REST 风格的!
  • GraphQL 请求类似于 JSON,而 REST 请求通常在 URL 中参数化。并非所有 API 都以相同的方式使用参数!或者具有相同的请求格式。
  • 您可以使用 schema 来定义 GraphQL,而不是使用端点列表。并非所有 API 的定义方式都相同!

我用我的大脑画了一个圆圈,刚好触及三个相交的圆圈,分别标有“关于 API 的一切”、“关于 REST API 的一切”和“关于 GraphQL API 的一切”。

我知道这张图有点复杂,抱歉。但这是需要做笔记的最重要的阶段。为什么?因为当你意识到自己做了哪些假设时,你就知道下次遇到新的 API 时应该问什么问题。

以下是我做出的假设:

  • 所有 API 都采用相同的风格。
  • 所有 API 请求的格式都相同。
  • 您以相同的方式定义 API。

现在,我的经验已经打破了这些假设,我知道下次学习一种新的 API 时要问什么问题。

第四阶段:不同类型的第三个实例。

好吧,假设我正在学习什么是 tRPC API,以便在工作中实现它。基于我上次做的假设,我现在可能会问什么?

  • tRPC 的风格与我熟悉的 REST 和 GraphQL 相比如何?
  • tRPC 请求的格式是怎样的?
  • 如何映射或定义 tRPC API?

这些问题将帮助我理解什么是 tRPC API,比我理解什么是 REST 或 GraphQL API 要快得多。

此外,我将更好地理解 API 的一般概念,因为我将了解所有这些 API 之间的共同点。在此阶段,我还将更好地理解 GraphQL 和 REST API,因为我可以列出它们的局限性。

概括这个过程

我认为每次学习新东西时,都必须经历这 4 个阶段,而且没有其他方法可以绕过。

但如果你有意识地这样做,它会加快学习的进程。

因此,当你开始时,承认“我对此一无所知。我应该问一些了解这方面的人,首先构建的最佳实例是什么”,可以为你省去一些痛苦。

再说一次,一旦你构建了第一个实例,承认“我在这里做出的假设可能不适用于其他实例。我应该问问构建过其他类型实例的人,它们之间有什么区别”,将有助于你在构建下一个实例时决定是否要学习新的范式。

鏂囩珷鏉ユ簮锛�https://dev.to/cerchie/a-framework-for-knowing-what-you-dont-know-1m2d
PREV
我从使用 3 种不同语言构建 REST API 中学到的东西
NEXT
最好的 IDE 和文本编辑器!