原文是 how-to-learn-stuff-quickly,受益良多,故翻译出来共享给咱们。
人们常说互联网使教育变得民主化:只需求谷歌查找一下就能够取得人类常识的总和!然而,取得信息只是故事的开始,之后你还需求将原始信息转化为可用的技能。
对于咱们中的许多人来说,两者之间的差距很可能会导致“教程阴间” —— 堕入一个又一个的教程中,却从未感觉自己在取得实质性的前进。
了解“怎么有用地学习”是非常重要的,尤其是作为软件开发人员;学习新事物几乎便是你的悉数工作!假如你能学会快速把握新的言语/框架/东西,你将能够比一般的开发人员更有功率。这无疑是一种超能力。
在这篇博客中,我将共享我在学习方面的经历,并向您展现我是怎么快速把握新技能的!
混合
广义上讲,有两类学习:
- 辅导性学习: 阅览教程,参与课程,观看视频。任何有辅导的学习方法。
- 非辅导性学习: 从头开始创立你自己的项目,扩展一个教程,在文档中查找东西。任何你不遵从指南的行为。
假如你只遵从辅导性的资源,你就会堕入教程的阴间,你不会学到一个成功的开发者所需的处理问题的技能。当你试图树立自己的项目时,你将不知道怎么开始,你就会觉得自己花了那么多时刻练习,却没有学到任何切实可行的技能。
另一方面,假如你彻底专注于无辅导的学习,那将会花费很长时刻。假如没有一个有经历的辅导,你将需求重新发明每一个轮子,花几天或几周时刻来处理现已处理的问题。这是一条漫长而令人懊丧的道路。在最坏的情况下,你可能会彻底放弃,由于你会觉得你可能不行聪明,不适合这个东西。
所以咱们需求混合它们,在辅导性资源中加入一些非辅导性学习的主意。
成心犯错
你可能和我相同,不喜爱犯过错,总是希望一切都在第一次就完美进行。
这种心态一般对生活会有协助,对其他范畴也有协助。假如您是一名轿车修理工,过错的零件可能会造成数百美元的丢失。假如您是一名牙医,一个过错可能会毁了某人的笑脸。
可是,对于软件开发,过错是免费的!假如咱们犯了过错,咱们能够返回到咱们的编辑器,更改代码,然后重试。咱们乃至有一些有用的过错信息,能够为咱们指明正确的方向。这其实是一种奢华,并且咱们还没有充分运用它。
当我在学习一个教程时,我喜爱“玩”代码。与其逐字逐句地仿制/粘贴所供给的代码,不如测验一下:假如省掉其间的一行,会产生什么?或许改变其间的一些数值?
我试着像个科学家相同行事。假如我对这段代码应该怎么工作有一个假定,我就会改变代码来测验这个假定,看看它是否以我预期的方法中止。当我发现我的假定有缺陷时,我可能会绕过教程,在谷歌上做一些研讨。当然假如挖的“兔子洞”太深,我会把它添加到 “以后要探求的东西 “。
这个进程能够协助咱们避免一向跟随“自动驾驶”的教程,堕入“仿制/粘贴代码但没有真实了解它的效果”或“不知道为什么这样做”的节奏。
学习应该是一个自动的进程。对代码的探求会协助咱们树立一个心理模型,了解正在产生的工作。
淡化教程
几年前,当我刚开始工作时,我运用了一个进程,我称之为 “淡化教程”。
它的原理是这样的:
- 逐字逐句地学习教程,一步步地学习。
- 当你完结后,将代码重置为初始状态,并最小化教程的网页。看一下你在不看教程的情况下能走多远。当你被卡住时,把教程拉回来,一旦你跨过了障碍,再把它最小化。
- 重复这个进程,直到你能在不看教程的情况下从头到尾完结它。
就像上面描述的科学家心态相同,这个进程是有用的,由于它迫使你集中注意力。教程会逐步消失,而你终究学会了怎么在没有辅导的情况下制作这个东西。
这种方法超级有用,但不是每个人都喜爱重复制作同样的东西。不过,假如你正在尽力逃离教程阴间,这可能值得一试!
扩展教程
假定咱们正在学习 React 的官方教程 ,经过构建一个井字棋游戏来学习 React。
完结这个教程后,您将创立一个功能完全但非常精简的游戏。
咱们能够给它添加各种风趣的花里胡哨的东西:
- 盯梢每个玩家赢得了多少场竞赛
- 运用更多展现组件来增强 UI
- 允许配置棋盘大小(4×4、5×5)
- 添加玩家能够对抗的 AI
- 一些奇思妙想(动画、音效、胜利时的五彩纸屑等)
发挥构思,选择您真实感兴趣的东西!
这个战略很好,由于它使你避免了从头开始的压力。由于你现已有了一个功能完全、易于了解的项目。
注:我也是这样做的,对井字棋教程的扩展 demo
创立相关项目
完结井字游戏项目后,您可能有点不确定下一步该做什么。
在跳转到另一个教程之前,测验从头开始构建一个相似的项目可能是个好主意。
例如,或许您可以制作 Bingo 游戏(译者注:或许换成中国人了解的五子棋游戏)!您能够在略有不同的上下文中运用你的一些新技能(状态管理、工作监听)。您可能会遇到教程中没有涉及所以无法处理的工作,这时你能够在谷歌上做一些查找来测验找到处理方案(译者注:现在还有 ChatGPT )!
假如实在处理不了,能够暂时放置这个项目。多做几个教程,然后再回来看看,是否学到了足够多的内容来处理它。
我见过这种被描述为“one on, one off”的战略。依照辅导资源(如教程)进行操作,然后花费相同的时刻创立一个相似(但没有辅导)的项目。假如教程向您展现了怎么创立一个 Instagram 的克隆,就测验自己创立一个 Twitter 的克隆!
寻觅平衡
当我刚开始学习时,我倾向于首要专注于引导学习。当我还在尽力学习语法和基本常识时,很难以无辅导的方法创立任何东西!
然而,随着我越来越了解语法,平衡就产生了变化。我把越来越多的时刻花在无辅导的学习上,以及创立对我来说风趣的东西。当我遇到新的和不了解的问题时,我会寻求教程,但随着我取得更多的经历,这种情况变得越来越不常见。
我的图表如下所示:
你的图表可能看起来有点不同,这取决于你是否能找到正确的平衡点。重要的是,咱们不要只重视有辅导或无辅导的学习。
培养心态
许多年前,我和一些朋友去打保龄球。
我做得很差,大部分球都掉进了排水沟。到竞赛结束时,我的得分是现在小组中最低的。
有两种不同的方法来解说这种情况:
- 我不拿手打保龄球,并且我永久不拿手,保龄球不是我的菜。
- 我不拿手打保龄球,可是假如我乐意的话,我能够成为一名出色的投球手。
这有一个自我完成的预言:不管你选择哪种解说都是正确的。假如您以为自己的保龄球技能水平是固定的,那便是固定的。假如您信任自己能够前进,那么您一定会前进!
假如您想快速学习新技能,培养正确的心态至关重要。
在软件开发方面,工作永久不会一帆风顺。不可避免地,咱们会遇到各种情况,代码不会依照咱们的预期进行。
这要么导致恶性循环 —— 充溢挫折感、自我怀疑和冒名顶替综合症——要么被视为绝佳的学习机会。假如有正确的心态,没有什么比难以了解的过错信息更能协助您快速学习。
老实说,与毫不费力的成功相比,咱们从斗争和失利中学到的东西要多得多。有了成长心态,斗争可能并不彻底风趣,但感觉很有成效,就像一次很好的训练。
方针和动机
咱们生活在一个交际媒体炒作的国际里,很简单感到压力,比方要跟上潮流,学习 Twitter 上出现的每一个流行的 JS 库。
就个人而言,每次我测验这样做时,都没有成功
我没有特别的动力去为了学习而学习。为了让我坚持动力,我需求心中有一个令人兴奋和详细的方针。
例如:几年前,我发现了一款 VR 视频游戏 Beat Saber。在这个游戏中,你用光剑进犯方块,并伴有音乐。每首歌都有共同的编舞。
虽然社区中存在让用户创立自己的编舞(在社区中称为“地图”)的软件,但我不喜爱,我想为 Beat Saber 创立自己的地图编辑器。
经过几个月的艰苦和偶尔令人懊丧的工作,我完成了我的方针。假如你对这个项目感兴趣,你能够 检查 Github 上的代码。
在这个项目之前,我没有 3D 经历,我不得不学习许多关于 WebGL、Three.js 和 react-three-fiber 的常识。学习是艰苦的,不管你的心态有多好,总会有工作开展不顺利的时候。
可是由于我有一个详细的方针,我真实想要的东西,所以我能够克服挫折并继续取得前进。假如我只是为了好玩而学习这些东西,或许由于我以为它在我的简历上看起来不错,我可能很快就会放弃它。
不同的人有不同的动机,所以我并不是说你需求创立一个小众项目。但我确实以为,心中有一个方针很重要,一个你真实为之兴奋的方针。不然,在最初的新鲜感消失后,你很难坚持所需的动力。
记性
我的记性很差。这可能有点问题;假如你不记得东西,就很难学习东西!走运的是,我有一个记忆系统:距离重复。
距离重复的中心思维便是:为了加强记忆,您需求在它行将消失时立即检查它。每次你加强记忆,它只会继续更长的时刻。
这听起来很杂乱,但有一些东西能够为您盯梢这一点。就个人而言,我运用一个 leitner 盒子,一个能够包容几百张索引卡的实体盒子。每天,我都会复习一小撮卡片。
详细能够检查 怎么永久记住任何工作 的解说。
养成日常习惯
假定咱们承诺每周花 7 个小时学习新事物。您以为每天花一个小时进行该活动更有用,还是每个星期日花 7 小时?
风趣的是,我更频繁地花费少数时刻取得了更大的成功。
我知道不是每个人都有这样的奢华的时刻,但假如你能做到,我强烈建议你每天花一些时刻在你想学的东西上。
我有一些关于为什么它对我更有用的假定:
- 每天晚上,大脑都会处理并提交您当天所学的常识。我想每天都运用它,而不是每周一次!
- 由于我每天都练习,所以我能够从中止的地方继续学习。我不用花费许多时刻来改写我的记忆并重新开始。
- 正如咱们所评论的,在新鲜感消失后很难坚持动力。假如你能把它融入到你的日常生活中,你就不用太忧虑动力了。不管您感觉怎么,它都会成为您要做的工作。
揭露学习
我是 Swyx 的 Learn in Public 哲学的忠实粉丝。
它的首要思维是,经过发布咱们所学的常识,咱们能够协助未来的自己。当咱们发现新事物时,咱们应该创立一个文件来记载它,例如博客文章、推文或 YouTube 视频。
这可能有点违反直觉;为什么要花我的“学习时刻”写博客文章?这不是浪费时刻吗?
揭露学习有许多好处,但以下是我发现的:
- 您是否曾经测验向某人解说某事,却发现您并没有像您以为的那样彻底了解它?写一篇博文也有同样的效果。这是发现心智模型中的缺陷/漏洞的最佳方法,因此您能够修复它们。
- 国际上最糟糕的感觉是遇到一个你知道你以前处理过的过错,但你不记得你是怎么处理它的。假如你写过一篇关于它的博客文章,你能够参考它!
- 经过共享您学到的常识,您将成为开发社区的活跃参与者。你能够结交朋友和树立联系。这能够是风趣和充实的,更不用说在找新工作或兴办新企业时的好处了!
一个警告:不要堕入花费数周时刻从头开始树立一个完美博客的圈套!首先能够在像 Dev 这样的平台上发布,乃至只是在 Twitter 上发布!在树立博客之前,我在 Medium 上发表了数十篇博文。假如您发现自己真的很喜爱揭露学习,随时能够迁移到一个精美的自定义博客。
技能网
最近,我开始自学怎么运用 Blender 创立 3D 插图。
我还是个初学者,在这项技能上投入了大约 150 个小时,但我现已能够创造出一些看起来不错的艺术品。
我能够如此快速地学习,是经过遵从这篇博文中列出的一切技能。但我还有另外一张主力:技能互补。
3D 插图不是一项单一的技能;它是数十种个人技能的集合。其间一些,比方创立 3D 模型,对我来说是全新的,我必须从头开始学习。但其间一些是我经历过的。
例如:我是一个摄影爱好者。多年前,我学习了构图,怎么在视口内安排元素以取得引人注目的镜头。在渲染中定位目标时,我能够运用这些技能。
这是一个特别详细的比如,但其他的比如就比较含糊了。作为一名前端开发员,我花了许多年的时刻来培养对细节的观察力。一切这些像素化的工作都协助我想出了合适的斜面和厚度的数值。而我的UI设计工作也协助我了解了色彩理论和美学。
你纷歧定会以为我具有的技能能够与 3D 插图协作,但它确实给了我很大的优势。
在我看来,技能就像财富。我把握的技能越多,它们堆集的速度就越快。在一个范畴收集的主意和技能能够在另一个范畴供给协助。
我并不是说你应该成为一个全才 —— 具有一些深厚的专业常识仍然是值得的!可是你的技能网开展得越大,你在学习新事物时的优势就越大。