Skip to content

Commit

Permalink
[fix] publish @dethan3 translated post with format fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
TechQuery committed Jun 25, 2024
1 parent 46ec169 commit 8638b64
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 42 deletions.
4 changes: 4 additions & 0 deletions _data/volunteer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,3 +170,7 @@
title: luo jiyin
URL: https://github.com/luojiyin1987
logo: https://avatars.githubusercontent.com/u/6524977?s=96
- name: dethan3
title: dEthan3
URL: https://github.com/dethan3
logo: https://avatars.githubusercontent.com/u/33822639?s=96
Original file line number Diff line number Diff line change
@@ -1,38 +1,46 @@
---
title: 如何快速学习
date: 2024-06-22T16:21:51.250Z
authors:
- dethan3
authorURL: https://www.joshwcomeau.com/
originalURL: https://www.joshwcomeau.com/blog/how-to-learn-stuff-quickly/
original: https://www.joshwcomeau.com/blog/how-to-learn-stuff-quickly/
translator: "yiwei"
reviewer: "tianheg"
categories:
- Article
- Translation
toc: true
photos:
- https://www.joshwcomeau.com/_next/image/?url=%2Fimages%2Fhow-to-learn-stuff-quickly%2Fguided-graph.png&w=640&q=75
---

人们常说互联网已经实现了教育民主化:人类知识的总和只需要谷歌搜索即可获取!然而,获取信息只是故事的一半;你还需要能够将原始信息转化为可用的技能。

<!-- more -->

对于我们很多人来说,这两者之间的差距可能会导致类似于 _教程地狱_ 的情况——不断地做一个又一个教程,却从未觉得自己在取得实质性的进展。

学习如何有效地学习是非常重要的,_尤其_ 是作为一名软件开发人员;学习新知识几乎就是整个工作的全部!如果你能快速掌握新语言/框架/工具,你会比一般的开发人员 _更高效_ 。这有点像超级能力。

在这篇博文中,我将分享我关于学习的心得,并展示我如何快速掌握新技能!

## [混合指导学习和非指导学习](#mixing-guided-and-unguided-learning-1)
<!-- more -->

## 混合指导学习和非指导学习

广义上讲,有两类学习:

1. **指导型学习:** 阅读教程、参加课程、观看 YouTube 视频。任何你在跟随指导的活动。
2. **非指导型学习:** 从头开始创建自己的项目、扩展教程、在文档中查找信息。任何你不跟随指导的活动。

如果你只跟随指导资源,你会陷入_教程地狱_。你将无法掌握作为一名开发人员取得成功所需的解决问题的技能。当你尝试创建自己的项目时,你不知道从哪里开始。会觉得自己花了很多时间练习却没有获得任何实际的、实用的技能。
如果你只跟随指导资源,你会陷入*教程地狱*。你将无法掌握作为一名开发人员取得成功所需的解决问题的技能。当你尝试创建自己的项目时,你不知道从哪里开始。会觉得自己花了很多时间练习却没有获得任何实际的、实用的技能。

另一方面,如果你完全专注于非指导学习,学习过程会_非常漫长_。没有经验丰富的指导,你需要重新发明每一个轮子,花费几天或几周解决已经解决的问题。这是一条漫长而令人沮丧的道路。在最坏的情况下,你可能会完全放弃,错误地认为你不够聪明。
另一方面,如果你完全专注于非指导学习,学习过程会*非常漫长*。没有经验丰富的指导,你需要重新发明每一个轮子,花费几天或几周解决已经解决的问题。这是一条漫长而令人沮丧的道路。在最坏的情况下,你可能会完全放弃,错误地认为你不够聪明。

一些课程意识到了这种对立关系,并会包括非指导学习的机会。比如扩展目标、思维实验和挑战性练习。我希望这种类型的资源能更常见一些!

让我们看看如何将一些非指导学习融入指导资源中的一些想法。

### [故意犯错](#making-intentional-mistakes-2)
### 故意犯错

如果你和我一样,你不喜欢犯错。你希望一切都能第一次就完美进行。

Expand All @@ -47,23 +55,31 @@ reviewer: "tianheg"
这个过程帮助我们避免了无主动意识地跟随教程,复制/粘贴代码而不真正理解它做了什么或为什么我们要这样做的危险循环。

学习是一个主动的过程。探究代码有助于我们建立对正在发生的事情的心理模型。

> #### 教程渐隐
>
> 多年前,当我刚起步时,我使用了一个我称之为“教程渐隐”的方法。
>
>
> 具体操作如下:
>
> 1. 按照教程逐字逐句地操作,一步一步地进行。
> 2. 完成后,将代码重置为初始状态,并最小化教程。看看在不看教程的情况下你能走多远。当你卡住时,重新打开教程,但一旦你解开困惑,就再次将其最小化。
> 3. 重复这个过程,直到你可以从头到尾完成教程而不看说明。
> 就像上面描述的科学家心态一样,这个过程很有用,因为它迫使你集中注意力。教程逐渐淡出,你最终学会了在没有指导的情况下创建事物。
>
> 3. 重复这个过程,直到你可以从头到尾完成教程而不看说明。 就像上面描述的科学家心态一样,这个过程很有用,因为它迫使你集中注意力。教程逐渐淡出,你最终学会了在没有指导的情况下创建事物。
>
> 这种方法非常有效,但并不是每个人都喜欢反复创建同样的东西。不过,如果你曾经挣扎于“教程地狱”,这可能值得一试!
### [扩展教程](#extending-tutorials-3)
### 扩展教程

假设我们通过这个 [官方教程](https://react.dev/learn/tutorial-tic-tac-toe) 学习 React 并创建了一个井字棋游戏。
假设我们通过这个 [官方教程][1] 学习 React 并创建了一个井字棋游戏。

当你完成教程时,你将创建一个功能齐全但非常简单的游戏。

<video
autoplay loop muted playsinline
src="https://www.joshwcomeau.com/videos/how-to-learn-stuff-quickly/tic-tac-toe.mp4"
aria-label="单人玩的井字游戏">
</video>

我们可以为它添加各种有趣的功能:

- 记录每个玩家赢得了多少场比赛
Expand All @@ -76,9 +92,9 @@ reviewer: "tianheg"

这种策略很好,因为你避免了空白画布的压力。你已经有了一个功能齐全、理解透彻的项目。你是在坚实的基础上添加砖块。

它还有一个好处:如果你对教程项目进行了显著扩展,可以在你的作品集中将其作为亮点!我在我的书[《创建一个有效的开发者作品集》](https://www.joshwcomeau.com/effective-portfolio/)中深入探讨了这个策略。
它还有一个好处:如果你对教程项目进行了显著扩展,可以在你的作品集中将其作为亮点!我在我的书[《创建一个有效的开发者作品集》][2]中深入探讨了这个策略。

### [创建相关项目](#building-related-projects-4)
### 创建相关项目

一旦你完成了井字棋项目,你可能会有点不确定接下来该做什么。

Expand All @@ -91,18 +107,18 @@ reviewer: "tianheg"
我见过这种策略被描述为“一个有指导,一个无指导”。跟随一个有指导资源,如教程,然后花费相同的时间创建一个类似的(但无指导的)项目。如果教程教你如何创建一个 Instagram 克隆版,尝试自己创建一个 Twitter 克隆版!

> #### 找到正确的平衡点
>
>
> 当我刚开始学习旅程时,我倾向于主要专注于有指导的学习。当我还在努力掌握语法和基础知识时,很难以无指导的方式构建任何东西!
>
>
> 然而,当我变得越来越熟悉后,平衡就会发生变化。我花更多的时间进行无指导的学习,构建那些对我来说有趣的东西。当遇到新的或不熟悉的问题时,我会寻找教程,但随着经验的积累,这种情况会越来越少。
>
>
> 我的图表看起来像这样:
>
>
> ![Line Chart](https://www.joshwcomeau.com/_next/image/?url=%2Fimages%2Fhow-to-learn-stuff-quickly%2Fguided-graph.png&w=640&q=75)
>
>
> 你的图表可能看起来有些不同;最终,找到正确的平衡点取决于你自己!重要的是,我们不要只专注于有指导的学习或无指导的学习。
## [心态培养](#mindset-cultivation-5)
## 心态培养

多年前,我和一些朋友去打保龄球。

Expand All @@ -113,19 +129,19 @@ reviewer: "tianheg"
1. 我就是不擅长打保龄球,我永远不会擅长。保龄球根本不是我的菜。
2. 我不擅长打保龄球。但如果我愿意,我可以成为一个优秀的保龄球选手。

这有一种自我实现预言的性质:无论你选择哪种解释都是正确的。如果你认为你的保龄球技能水平是固定的,它就会是。如果你相信自己可以提高,你就会提高!*
这有一种自我实现预言的性质:无论你选择哪种解释都是正确的。如果你认为你的保龄球技能水平是固定的,它就会是。如果你相信自己可以提高,你就会提高!

如果你想快速学习新技能,培养正确的心态至关重要。

软件开发从来都不是一帆风顺的。不可避免地,我们会遇到一个困难的问题,即代码无法达到我们的预期。

这可能会导致一个充满沮丧和自我怀疑以及冒名顶替综合症的下行螺旋,或者它可以被视为一个极好的学习机会。只要你有正确的心态,没有什么比难以理解的错误信息更能帮助你快速学习。

说实话,**我们从挣扎和失败中学到的比从轻松成功中学到的要多得多**。有了成长心态,虽然挣扎可能不一定_有趣_,但感觉很有成效,就像一次好的锻炼。
说实话,**我们从挣扎和失败中学到的比从轻松成功中学到的要多得多**。有了成长心态,虽然挣扎可能不一定*有趣*,但感觉很有成效,就像一次好的锻炼。

了解更多关于 [培养成长心态](https://www.youtube.com/watch?v=-71zdXCMU6A) 的信息。
了解更多关于 [培养成长心态][3] 的信息。

## [目标和动机](#goals-and-motivation-6)
## 目标和动机

我们生活在一个社交媒体炒作的世界里,很容易感到有压力,要跟上潮流,学习每一个在 Twitter 上出现的流行 JS 库。

Expand All @@ -139,15 +155,20 @@ reviewer: "tianheg"

经过几个月的艰苦和偶尔令人沮丧的工作,我实现了我的目标:

(如果你对这个项目感兴趣,可以[在线观看](https://beatmapper.app/),在 [Github 上查看代码](https://github.com/joshwcomeau/beatmapper),或[观看关于其开发的会议演讲](https://www.youtube.com/watch?v=9u0VapB-AbE)!)
<iframe
frameborder="0" allow="autoplay; fullscreen" allowfullscreen
src="https://player.vimeo.com/video/652869239?pip=true"
></iframe>
(如果你对这个项目感兴趣,可以[在线观看][4],在 [Github 上查看代码][5],或[观看关于其开发的会议演讲][6]!)

在这个项目之前,我没有任何 3D 经验,我必须学习大量关于 WebGL、Three.js 和 react-three-fiber 的知识。学习是困难的,无论你的成长心态有多么培养得当,总会有些日子事情进展不顺利。

但因为我有一个具体的目标,是我_真正_想要的,我能够克服挫折并继续进步。如果我只是为了好玩或者因为我认为它会让我的简历看起来更好而学习这些东西,我可能很快就放弃了。
但因为我有一个具体的目标,是我*真正*想要的,我能够克服挫折并继续进步。如果我只是为了好玩或者因为我认为它会让我的简历看起来更好而学习这些东西,我可能很快就放弃了。

不同的人受到不同事物的激励,所以我并不是说你需要找到一个特定的项目来创建。但我确实认为有一个明确的目标是很重要的,某个你真正感兴趣的东西。否则,在最初的新奇感消失后,维持所需的动力将变得很困难。

## [记忆事物](#remembering-things-7)
## 记忆事物

我的记忆力 _非常_ 差。

Expand All @@ -157,9 +178,9 @@ reviewer: "tianheg"

这听起来很复杂,但有一些工具可以帮你跟踪这个过程。我个人使用 Leitner 盒,这是一个装有几百张索引卡的物理盒子。每天,我会复习一小部分卡片。

如果你对间隔重复感兴趣,我_强烈_建议你看看 Nicky Case 的这篇可探索的解释:[《如何永远记住任何事情》](https://ncase.me/remember/)
如果你对间隔重复感兴趣,*强烈*建议你看看 Nicky Case 的这篇可探索的解释:[《如何永远记住任何事情》][7]

## [建立日常习惯](#building-a-daily-habit-8)
## 建立日常习惯

假设我们承诺每周花 7 个小时学习新东西。你认为是每天花一个小时在这个活动上更有效,还是每周日连续花 7 个小时更有效?

Expand All @@ -171,32 +192,33 @@ reviewer: "tianheg"

1. 每晚,大脑会处理并承诺当天学到的东西。我希望每天都能利用这一点,而不仅仅是每周一次!
2. 因为我每天都练习,可以直接从上次中断的地方继续。我不必花费大量时间刷新记忆和重新开始。
3. 正如我们所谈论的,在新奇感消失后维持动力可能很困难。如果你能将其融入日常生活,你就不必太担心动力问题;不管你感觉如何,它变成了你只需要_做_的事情
3. 正如我们所谈论的,在新奇感消失后维持动力可能很困难。如果你能将其融入日常生活,你就不必太担心动力问题;不管你感觉如何,它变成了你只需要**的事情

## [公开学习](#learning-in-public-9)
## 公开学习

我是 Swyx 的 [公开学习](https://www.swyx.io/learn-in-public/) 理念的忠实粉丝。
我是 Swyx 的 [公开学习][8] 理念的忠实粉丝。

主要思想是,通过发布我们所学的内容,我们可以帮助未来的自己。当我们发现新事物时,我们应该创建一个记录它的文档,比如博文、推文或 YouTube 视频。

这可能有点违背直觉;为什么要在“学习时间”写博文呢?这不是浪费时间吗?

公开学习有_很多_好处,我发现了以下几点:
公开学习,但这里是我发现的一些:
公开学习有*很多*好处,我发现了以下几点: 公开学习,但这里是我发现的一些:

1. 你有没有试图向某人解释某事,结果发现自己并不像你想象的那样彻底理解它?写博文有同样的效果。这是揭示你心理模型中的缺陷/漏洞的最佳方法,以便你可以修复它们。
2. 世界上最糟糕的感觉是遇到一个你_知道_自己已经解决过的 bug,但你记不起如何解决它。如果你写了一篇关于它的博文,你可以参考它!
2. 世界上最糟糕的感觉是遇到一个你*知道*自己已经解决过的 bug,但你记不起如何解决它。如果你写了一篇关于它的博文,你可以参考它!
3. 通过分享你的学习,你成为开发者社区的积极参与者。你可以结交朋友和建立联系。这既有趣又有成就感,更不用说在找新工作或启动新企业时的好处了!

需要注意的一点是:不要陷入设置完美博客数周的陷阱!从像 [Dev](https://dev.to/) 这样的平台上发布开始,甚至只是发布在 Twitter 上!在我建立博客之前,我在 Medium 上发布了数十篇博文。如果你发现自己真的喜欢公开学习,你可以随时迁移到一个华丽的定制博客。😄
需要注意的一点是:不要陷入设置完美博客数周的陷阱!从像 [Dev][9] 这样的平台上发布开始,甚至只是发布在 Twitter 上!在我建立博客之前,我在 Medium 上发布了数十篇博文。如果你发现自己真的喜欢公开学习,你可以随时迁移到一个华丽的定制博客。😄

## [技能网络](#a-network-of-skills-10)
## 技能网络

最近,我开始自学如何使用 [Blender](https://www.blender.org/) 创建 3D 插图。
最近,我开始自学如何使用 [Blender][10] 创建 3D 插图。

我还是个初学者。目前,我大概投入了约 150 个小时的时间。但我已经能够创建一些看起来不错的艺术作品。以下是我制作的一些东西:

![3D illustration](https://www.joshwcomeau.com/images/how-to-learn-stuff-quickly/sneakers.avif)
![3D 插图](https://www.joshwcomeau.com/images/how-to-learn-stuff-quickly/sneakers.png)
![3D 插图](https://www.joshwcomeau.com/images/how-to-learn-stuff-quickly/muffin.png)
![3D 插图](https://www.joshwcomeau.com/images/how-to-learn-stuff-quickly/chess.png)

我能够如此快速地学习,是因为遵循了这篇博文中列出的所有技巧。但还有一个我手中的王牌:_互补技能_

Expand All @@ -212,8 +234,20 @@ reviewer: "tianheg"

我并不是说你应该成为一个完全的通才——拥有深厚的专业知识仍然是值得的!但你的技能网络越广,在学习新事物时你的优势就越大。

有时,学习资源会利用这一点。例如,我正在制作一个 CSS 课程,[《为 JavaScript 开发者准备的 CSS》](https://css-for-js.dev/)。我专门为 JS 开发者创建它,因为我知道我可以利用大量的预先存在的知识来简化学习 CSS 的过程。我们不是从零开始创建,而是利用你对 JS 的知识来解释 CSS,复制/粘贴你已经拥有的心理模型。
有时,学习资源会利用这一点。例如,我正在制作一个 CSS 课程,[《为 JavaScript 开发者准备的 CSS》][11]。我专门为 JS 开发者创建它,因为我知道我可以利用大量的预先存在的知识来简化学习 CSS 的过程。我们不是从零开始创建,而是利用你对 JS 的知识来解释 CSS,复制/粘贴你已经拥有的心理模型。

我的目标是改变你与 CSS 的关系。很多 JS 开发者觉得它令人沮丧且违反直觉。如果你想提升你的 CSS 技能,你可以[了解更多关于课程的信息](https://css-for-js.dev/)
我的目标是改变你与 CSS 的关系。很多 JS 开发者觉得它令人沮丧且违反直觉。如果你想提升你的 CSS 技能,你可以[了解更多关于课程的信息][11]

在这篇博文中我覆盖了 _很多_ 内容,真的很感谢你坚持到最后 💖 祝你在学习旅程中好运!

[1]: https://react.dev/learn/tutorial-tic-tac-toe
[2]: https://www.joshwcomeau.com/effective-portfolio/
[3]: https://www.youtube.com/watch?v=-71zdXCMU6A
[4]: https://beatmapper.app/
[5]: https://github.com/joshwcomeau/beatmapper
[6]: https://www.youtube.com/watch?v=9u0VapB-AbE
[7]: https://ncase.me/remember/
[8]: https://www.swyx.io/learn-in-public/
[9]: https://dev.to/
[10]: https://www.blender.org/
[11]: https://css-for-js.dev/

0 comments on commit 8638b64

Please sign in to comment.