学习如何学习

Posted klsfct

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习如何学习相关的知识,希望对你有一定的参考价值。

作为一个有效的学习者至少与成为一名高效的编码人员一样重要。

当你是一名开发人员时,你的工作要求你每天都要学习 - 尽管像黑客新闻,Twitter,Reddit和Facebook一样引起了分心。

您经常遇到新的代码库和工作中的新技术挑战。当你处理开源回购和个人项目时,家庭并不是更好,每个项目都有自己的流程和挑战。

技术世界变化很快,它可以感觉像是一份全职工作,只需跟上最新的工具,语言和框架。

长话短说:学习很难。然而,我们需要能够快速有效地学习才能茁壮成长。

在过去的一年里,我从不知道如何使用Chrome调试器到为一家领先的加密货币公司担任软件工程师。在这个过程中,我迅速学会了一项新技能(编码)。

也就是说,学习对我来说并不容易。

老实说,每一个新概念都是一场斗争。有太多的未知数和太多的不确定性。

“这个世界怎么可持续?”我心想。

“如果这是学习编码应该感觉像每天,我会很痛苦。这真的是我的热情吗?“

“如果这是我的热情,对我来说这不容易吗?艺术家难以创作艺术吗?作家难以写一本好书吗?运动员在比赛中努力做得好吗?当我们追求激情时,我们是否应该挣扎?“

“我不应该对此感到高兴吗?”

它变得容易了吗?

是的,它确实。一年后,在需要纪律和努力工作的意义上,解决新的编程概念仍然是“困难的”。

但它也成为一个令人愉快的过程,而不是压倒性的过程。

去年发生了什么让这种转变成为可能?

简单:我改变了对学习的看法。曾经让我感到“困难”的东西变得“迷人”。

在帖子的其余部分,我将解释这种转变是如何发生的。

刚刚开始

学习编码在开始时是最难的。

例如,考虑一下您必须学习的第一种编程语言。你想要解决语法和风格等小问题。但首先,您必须理解困难的核心概念,如值,类型,运算符,控制流,函数,高阶函数,范围,闭包,递归等等。

感觉就像学习玩杂耍一样 - 但是从十八个引脚而不是两个引脚开始。

当我第一次了解关闭时,我花了好几周才真正理解这个概念。当我读到它时,我以为我明白了。但是当我尝试在实践中识别和使用闭包时,我发现自己很难过。

这并不罕见。我也把这个过程视为老师:新概念通常不会在第一时间点击。或者第二个。甚至是第十个。

但对于那些坚持不懈的人来说,会有一个“突破点”,事情突然变得有意义。在我的例子中,我读了每篇博文,Stack Overflow帖子,以及关于闭包的互联网规范。

我阅读和试验过的所有内容都给了我一个新的视角,直到最终,我对封闭的工作方式进行了360度的心理描绘。闭包“点击”。

我觉得这种对闭包的理解是非常重要的,因为它是有益的,并且鼓励我去做更多 - 包括编写我自己的博客文章解释这个概念。

学习是一个过程,而不是目标
如果我们将学习视为我们“必须”做的事情,那么我们就会急于完成它,这样我们就可以花更多的时间做一些更“有趣”的事情 - 我们“想要的”去做。

问题在于,无法了解任何事情,因此将学习视为一场比赛会导致倦怠和失望。

相反,如果你将学习视为一个过程,你将会欣赏沿途的小胜利和见解。这将推动你不断前进。

你可以将它与运动进行比较。锻炼受伤,然后一旦锻炼结束疼痛就会结束。但它永远不会消失。下次锻炼时它正等着你。除了每次,疼痛变得不那么刺耳了。你学会应付它。你熟悉疼痛,它只是成为常规的一部分。你会得到更好的健康和更好的体质的奖励,并被激励继续前进。

练习创造了一个积极的反馈循环

学习也是如此。

将学习转变为引人入胜的过程

想象一下构建您的第一个Web应用程序。

首先,你所拥有的只是一个令人生畏的空白文本编辑器。构建应用程序的任务似乎几乎无法克服。你什么都不知道,在你能做到这一点之前还有很多东西需要学习。

谢天谢地,无论如何你决定去做吧。

从那时起,您的主要关注点就是一次只做一小步。

首先,你创造一个想法。你会建造什么?谁是最终用户?有什么限制?

其次,您可以根据自己的想象制作原型或草图。您可以向您的朋友或互联网寻求反馈,并进行迭代以使其更好。

第三,您研究最符合您要求的语言,工具和框架。

一步一步地训练你的思想,将所有的精力都用于实现这一目标。

有时你正在编写代码。

通常情况下,你会因某些错误或错误而停滞不前。

有时你太累了,不能做任何工作,所以你休息一下。

其他时候,你不喜欢编写代码。没关系。您花时间研究或阅读与项目相关的主题。

最后,经过几周的努力,你已经建立了一个可以处理你的重大创意的基础。突然之间,处理你的应用并不会感到痛苦。你看到了最初的努力工作的回报,现在它只是你需要编写的另一段代码或者你需要做的其他一些重构 - 你已经做了100次,没问题。

你把曾经令人生畏或可怕的活动变成了复杂而迷人的活动。

这就是我们成长的方式。这就是我们变得更好的方式。无论是编程,跳舞,跑步还是阅读:这都不容易,当你“完成”学习时,永远不会有时间或地点。

相反,享受将精力投入到某些事物中的过程,并享受随之而来的痛苦。你会开始注意到你不再将它描述为“痛苦” - 因为曾经痛苦的东西会成为下一步的象征:个人成就感和自我满足感。

换句话说,斗争和享受将开始意味着同一件事。记住周期:

学习技术主题的一种方法

让我告诉你一些我遵循的学习过程。这不是所有学习风格的全部,所以如果不同的东西适合你,请在评论中分享!万一你不能说,我是这个东西的书呆子:)

我们以学习React.js库的过程为例。

学习这个的动机是什么?
第一步:我从谷歌搜索React.js文档开始,并阅读一些关于库的背景和动机。

了解任何主题背后的“原因”对于构建学习过程非常有帮助。它回答如下问题:

这与其他解决方案有何不同?

这对我有用吗?

这个解决方案有哪些问题需要解决?

这只是一个新的闪亮工具,它只会在几个月内有用,还是会从根本上改变我的想法和编码方式?

阅读和理解核心概念

其次,我会阅读文档中提供的任何介绍文章或示例。

请注意,我还没有触及任何代码。在动手实验之前,阅读和沉没核心概念。这样做非常重要,因为它为我的其余学习奠定了基础。

即使我可以在不学习核心概念的情况下盲目地使用React.js,但是当我遇到一个bug时,它最终会赶上我。

第一次编码

花了一些时间在上面的步骤后,我开始了解正在发生的事情,或者甚至觉得我完全得到它。然后是时候跳进一些代码了。

我通常会尝试使用任何新工具构建一些非常小的东西,方法是在进入自定义项目之前遵循视频教程(例如,在egghead.io上)或书面教程。

当你卡住了

......然后,我不可避免地陷入困境。

阅读文档看起来像小菜一碟,但实际上在实践中使用它让我意识到我不知道发生了什么。

这是我开始觉得可怕的“放弃”的感觉。但是当我变得艰难时,我不会放弃,而是提醒自己痛苦= =获得。回头会很懦弱。

这是我做的事情:

我首先缩小并弄清楚我实际上遇到了什么 - 即定义问题。然后我想出了我认为可能是问题的根本原因或原因的假设。即使我不知道,我只是猜一猜。

然后我离开问题和我的电脑,做一些放松我的事情。当我对我坚持的问题感到不安时,这是非常难以做到的,但放下这个问题会产生奇迹。(有没有注意到淋浴时总是有多好的想法?)

现在我尝试用我的假设进行调试。在没有在网上寻找答案的情况下,我尽可能地得到了我的假设 - 当你试图通过自己首先真正深入思考问题来解决问题时会发生一些美好的事情。即使你走的是错误的道路,你做出努力的事实会教会你很多,而且下次遇到问题时你会更好地记住问题空间。

如果我的假设得出答案,万岁!我受够了。如果没有,我谷歌搜索文档,博客文章或Stack Overflow帖子,可以帮助我更接近答案。

在阅读时,我会记录可能有用的任何和所有信息。

仍然没有解决方案 没关系。我确信通过阅读所有这些来学习有价值的东西,即使它没有直接帮助我解决手头的问题。谁知道这些知识何时可能在下次派上用场?

此时,如果我真的陷入困境,我会在Stack Overflow上发布一个问题,或者询问我认识的同事或开发人员。

否则,我冲洗并重复,直到我接近最终的解决方案。在某些时候,答案总会来临。

有时这个过程需要几秒钟,有时需要几个小时(或几天)。无论哪种方式,该过程本身对您作为开发人员的技能都非常有益。

卡在一个虫子上感觉就像在黑暗的隧道中寻找一缕光线一样磕磕绊绊。你最终会找到它,但是沿途你发现了很多关于隧道的知识 - 而且它对“隧道”的了解使你成为一名强大的编码员。

将调试视为探索的机会,而不是绕道而行,并且变得更有趣。

冲洗并重复

到目前为止,在学习过程中,我已经建立了一些小的东西,并在此过程中解决了一些小障碍。正如你所看到的,这是一场斗争 - 显然,我需要使用新工具进行更多练习。

所以,我再次尝试自己构建一些东西。而不是直接跳到一个大的自定义项目,我会寻找一个基于我的应用程序的回购。

例如,如果有一个使用React.js的在线CRUD todos示例(当然),也许我将构建一个不同类型的CRUD应用程序。只是不同,足以让我保持参与,但没有那么不同,如果出现问题,我会气馁。

征服

掌握需要重复,所以我一直在构建更多的小项目,直到我觉得我已经掌握了核心概念。

最终,我开始能够自己拼凑一些东西,而不必经常引用文档或示例。只有这样,我终于冒险出去,自己从头开始构建一些东西。

在整个过程中,我的目标是让这个过程变得有趣和吸引人。我不断地推动自己去做一些比我现在所能做的更难的事情,但不要把自己投入到深层,这样我才会气馁,永远不会完成。

最后,一旦我发现自己太沮丧而无法享受这个项目,我一定会离开。

学习很有趣

通过一些努力和结构,学习编程变得异常有趣。起初它非常复杂,在我看来,这就是为什么这么多人会被吓跑 - 不是因为它“无聊”,而是因为它“很难”。

在您完成这个学习过程几次后,处理新信息就成了肌肉记忆。你真的没有想过。你只是学会驾驭痛苦的浪潮,并在奖励中找到快乐。

像魔术一样,它变得“更容易”学习。

以上是关于学习如何学习的主要内容,如果未能解决你的问题,请参考以下文章

如何学习ruby?Ruby学习技巧分享

如何学习新技术-学习

我们如何学习 2:如何建立模型

如何分辨机器学习模型的学习者类型

我们如何学习 2:什么叫 “会学习”

我们如何学习:学会学习再学习