如何快速地学习新事物?(上)

神译局 2021-11-29

https教程data-id

3069 字丨阅读本文需 8 分钟

编者按:这是个日新月异的时代,每天都会产生以兆亿计的信息,同时也有大量新事物不断在诞生。这些新事物也许是你以前没有接触过的,抑或是最近完全新生的事物。但是有些人会恐惧,面对新事物不知道该怎么下手去了解;有些人开始了解了,可是却不得其要,难以掌握。在这篇文章中,作者分享学习经验,如何快速掌握新技能,希望对你有所启发,本文来自编译。

人们常说,互联网已经使教育民主化:人类所有的知识只需在搜索引擎上搜索一下就可以得到!然而,获得信息只是故事的一半,你还需要能够将原始信息转化为可用的技能。

对于很多人来说,这两者之间的差距可能会导致像“教程地狱”这样的事情:被卡在一个又一个的教程中,却从来没有感觉到你正在取得实质性进展。

学习如何有效地学习是超级重要的,特别是作为软件开发人员;学习新的东西实际上是整个工作的一部分!如果你能学会快速掌握新的语言/框架/工具,你就能比一般的开发人员更有效率,这算是一种超能力。

广义上讲,有两类学习。

1.有指导性的。阅读教程,学习课程,观看视频。任何有指导的学习方式。

2.非指导性学习。从头开始创建你自己的项目,扩展一个教程,在文档中查找东西。任何你不遵循指南的行为。

如果你只遵循指导性的资源,就会陷入教程的地狱。你不能发展出作为一个成功的开发者所需的解决问题的技能。当你试图建立自己的项目时,你将不知道从哪里开始。你会觉得自己花了那么多时间练习,却没有发展出任何切实可行的技能。

另一方面,如果你完全专注于无指导的学习,那将会花费很长时间。如果没有一个有经验的向导,你将需要重新发明每一个轮子,花几天或几周的时间解决已经被解决的问题。这是一条漫长而令人沮丧的道路,最坏的情况下,你可能会完全放弃,因为你相信(不正确地相信!)你不够聪明,不适合这个东西。

一些课程意识到了这种二分法,并加入了非指导性学习的机会。比如扩展目标、思想实验和挑战性练习。我希望这些类型的资源能够更加普遍。

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

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

这种心态通常在生活中很有帮助,在其他领域也有帮助。如果你是一名汽车修理工,错误可能会造成数百美元的零件损失。如果你是一名牙医,一个错误可能会毁掉某人的笑容。

然而,在软件开发中,错误是免费的!如果我们犯了错误,我们可以回到我们的编辑器,修改代码,然后再试一次。我们甚至还能得到有用的错误信息,可以(有时)为我们指出正确的方向。这是一种令人难以置信的奢侈,但我们却没有充分地利用这种优势。

当我跟随一个教程时,我喜欢玩弄代码。与其逐字逐句地复制/粘贴所提供的代码,不如尝试一下:如果你省略其中的一行,会发生什么?或者如果你改变一些数值会发生什么?

我试着像个科学家一样行事。如果我对这段代码应该如何工作有一个假设,我就通过改变代码来测试这个假设,看看是否以我预期的方式发生。当我发现我的假设有缺陷时,我可能会绕过教程,在谷歌上做一些研究。或者,如果暂时解决不了,我可能会把它添加到 “以后要探索的东西 ”列表中。

这个过程可以帮助我们避免自动跟随教程的节奏,一味复制/粘贴代码而不真正理解它的作用或为什么要这样做。

学习是一个主动的过程,对代码的探究将帮助我们建立一个思维模型,了解正在发生的事情。

教程淡化

几年前,当我刚开始工作时,我使用了一个过程,我称之为 “辅导性淡化”。

以下是它的工作原理:

1.逐字逐句地跟随教程,一步一步地进行。

2.当你完成后,将代码重置为初始状态,并将教程最小化。看看你在不看教程的情况下能走多远。当你被卡住时,把教程拉回来,但一旦你解开了障碍,再把它最小化。

3.重复这个过程,直到你能在不看说明书的情况下从头到尾完成教程。

就像上面描述的科学家心态一样,这个过程是有用的,因为它迫使你注意到。教程逐渐消失,而你最终会在没有指导的情况下学习如何建造这个东西。

这种方法超级有效,但不是每个人都喜欢重复建造同样的东西。不过,如果你想从教程地狱中挣扎出来,这可能值得一试!

让我们假设我们通过建立一个井字游戏来学习React(Web开发框架),按照官方的教程。

当你完成这个教程的时候,你已经创建了一个功能齐全但相当简单的游戏。

我们可以添加各种有趣的东西:

要有创造性,并选择你真正感兴趣的东西!

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

还有一个很好的副作用:如果你为一个教程项目添加了重要的扩展,你可以在作品集中记下它的功劳。

一旦你完成了井字游戏项目,你可能有点不确定下一步该怎么做。

在跳到另一个教程之前,尝试从头开始建立一个类似的项目可能是一个好主意。

例如,也许你可以做一个宾果游戏! 你将能够利用一些新技能(状态管理、事件监听),但在一个稍微不同的背景下,你可能会遇到不知道怎么做的情况,因为教程中没有涉及到;你可以在谷歌上搜一搜,试图找到一个解决方案。

如果你真的卡住了,可以暂时把这个项目放在一边。多做几个教程,以后再回来看看你是否学到了足够的知识来解开自己原来的障碍。

我曾见过这种策略被描述为 “一上一下”。跟着教程这样的指导性资源学,然后花同样多的时间创建一个类似的(但没有教程的)项目。如果教程告诉你如何建立一个克隆版的Instagram,那么你可以尝试自己建立一个克隆的Twitter!

寻找正确的平衡

当我处于学习旅程的最初阶段时,我倾向于将主要精力放在指导性学习上。当我还在摸索语法和基础知识的时候,很难以非指导性的方式打造任何东西!

不过,随着我变得更加熟悉,平衡也发生了变化。我把越来越多的时间花在无指导的学习上,建造我认为有趣的东西。当我遇到新的、不熟悉的问题时,我会找教程,但随着经验的增加,这种情况变得越来越少。

我的图表看起来是这样的:

你的图表可能看起来有点不同;最终,这取决于你是否能找到正确的平衡点! 重要的是,我们并不完全局限于有指导或无指导的学习。

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

我打得并不好,我的大部分球都掉到了边沟。比赛结束时,我的分数是全组中最低的。

有两种不同的方式来解释这种情况:

1.我就是不擅长打保龄球,而且永远也学不会。保龄球并不是我的专长。

2.我不擅长保龄球。不过,如果我想,我可以成为一个优秀的保龄球手。

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

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

谈到软件开发,事情永远不会一帆风顺。不可避免地,我们会遇到一个粗糙的补丁,代码做不到我们期望的那样。

这可能会导致一个向下的螺旋,一个充满挫折、自我怀疑和冒名顶替综合症的螺旋,或者它可以被看作是一个奇妙的学习机会。如果你有正确的心态,没有什么比难以解决的错误信息更能帮助你学习。

老实说,我们从挣扎和失败中学到的东西,比我们从毫不费力的成功中学到的东西多得多。有了成长的心态,挣扎可能并不完全是有趣的,但却是很有成效的,就像一次好的健身。

我们生活在一个社交媒体的世界里,很容易感觉到压力,要保持与时俱进,要学习流行的每一个时尚的JS库。

就我个人而言,每次我试图这样做的时候,都没有成功。

我只是没有特别的动力去为学习而学习。为了让我保持动力,我需要心中有一个令人兴奋的具体目标。

例如:几年前,我发现了节奏空间(Beat Saber),一个VR视频游戏。在这个游戏中,随着音乐计时,你用光剑攻击方块,每首歌都有一个独特的编排。

现有的软件可以让用户创建他们自己的编排(在社区中被称为 “地图”),但我对它并不感冒。我想为节奏空间建立我自己的地图编辑器。

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

在这个项目之前,我没有3D经验,我必须学习大量的WebGL、Three.js和react-three-fiber。学习是困难的,无论你的心态有多好,总会有事情不顺利的时候。

但是因为我有一个具体的目标,一个我真正想要的东西,所以我能够克服挫折,继续取得进展。如果我学习这些东西只是为了好玩,或者因为我认为这在简历上会很好看,可能很快就会放弃。

不同的人有不同的动机,所以我的意思不是说你需要找到一个小众项目。但我认为重要的是,你要有一个目标,一个你真正感兴趣的东西。否则,在最初的新鲜感消失后,将很难维持所需的动力。

译者:蒂克伟

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:神译局
0

参与评论

登录后参与讨论 0/1000

为你推荐

加载中...