如何学习
过去几年,我一直在思考学习科学,或者说,系统地研究人类的学习方式。这源于我大学毕业后转向软件工程的职业轨迹转变。
有一篇令人望而生畏的文章,我经常犹豫着把它推荐给那些想进入网站可靠性或运维领域的人。它就是《2017 年成为 Web 开发者的路线图》,其中列出了一些 Web 开发领域中,想要进入某个领域的人可以尝试学习的主题。以下是“DevOps”之路需要了解的知识图表:
(图表来源于 Github 用户 @kamranahmedse)
哇,光是看着就让我汗流浃背。不用说,还有很多东西要学。
五月,我在 Monitorama 做了一场关于学习及其与我作为运维工程师的工作关系的闪电演讲,主题是“优化学习”。你可以在这里观看演讲,时长 6 分 7 秒。这场演讲探讨了为什么在面对看似深不可测的知识时,记忆和学习至关重要。
软件工程是一个非常广泛的领域。在你真正掌握它们之前,有很多主题需要了解。对于系统和运维工程来说尤其如此。进入这个领域真的让人不知所措。在演讲中,我指出了这种不知所措的感觉的一个来源——运维很大程度上依赖于专家的直觉和经验。经验需要时间,而时间往往是我们无法控制的。然而,在去年,我决定用一些我更容易掌控的东西来平衡这个劣势:我的学习和记忆。我决定做那个演讲并写这篇文章,因为我意识到这是每个人都面临的挑战。你学习新事物的速度越快,并将它们与你已知的知识和你面临的问题联系起来,你在工作中或开始构建有用的东西时就越有效率。
学习本身就极其主观,大脑也非常复杂。每个人的学习方式都不一样。不过,我发现了一些让我学得更好的模式,我很乐意分享。
学习层次
我从九年级开始学习的一些概念图开始理论学习,比如加涅的学习层次理论和布鲁姆的学习分类法。自20世纪50年代罗伯特·加涅和本杰明·布鲁姆提出这些理论以来,这些理论经过多次修改和补充,但我发现,对我来说,通用的学习路径是一种有效的思维建构。
其理念是,学习的复杂性会随着层级的上升而增加,而专注于较低层级(此处按从低到高的顺序排列)的学习往往能取得更大的成功。以下是加涅的层级结构:
- 信号学习
- 刺激反应学习
- 链接
- 言语联想
- 辨别学习
- 概念学习
- 规则学习
- 解决问题
布鲁姆的:
- 回忆
- 理解
- 申请
- 分析
- 合成
- 评估
你可以看到,我们从底层开始,比如路由记忆和模式匹配。这就是我喜欢称之为“复制粘贴代码”的学习层次。我想明确一点,我并非在贬低这种学习方式或复制粘贴代码。事实上,我们最好不要称之为“底层”——它是基础性的。许多经验丰富的程序员或领域专家通常需要重新学习基础工具才能学习。
在这两种范式中,长期记忆的构建都处于基础层面。基于这些技能,模式匹配和信息链得以形成。然后,学习“不是什么”(分析、辨别学习)开始变得有用。例如,当我在只使用面向对象语言编程之后第一次学习函数式编程语言时,我惊讶地发现它极大地增强了我对面向对象编程的理解。最终,当我们掌握了基础知识后,我们就可以开始形成普遍适用于不同类型示例的心理模型或概念。最后,我们能够创造。老实说,我认为这两个层次都应该有一个最终目标——观点。它们应该是你能在最高层级持有的东西。不幸的是,许多人在学习演算中将其排在很低的位置。
虽然我(我想大多数人也是)确实以非常非线性的方式与这些层级结构互动,但它们在学习任何新东西时都非常有用。它们常常能帮助我解释为什么,比如,当我第一次学习 Go 语言时,我无法立即开始在其中创建或解决复杂的问题。
在过去的一年里,为了更接近这些等级制度的顶端,我重新认识了一些老敌人:测验和抽认卡。
这是因为我在担任运维工程师的第一年就意识到,我对所用工具了解得越多,就能越快地认识到我所负责的任何项目的局限性。这是因为一旦你掌握了知识(无需专业知识!),你就能开始提出更好的问题。拥有良好的记忆力,就能让你在解决问题时更有创造力。
我发现通过以下几种方式可以成功了解操作世界中的事物:
练习检索
持续开发和测试你的大脑!
事实证明,仅仅重读材料是行不通的。然而,练习检索材料却可以。检索就是从记忆中回忆起一些东西。
低风险测试
阅读后试着测试一下自己。检索已被证明能迫使大脑与概念建立牢固的联系。虽然短期记忆有点糟糕,但我们的长期记忆却具有极强的可塑性。但不要马上就测试自己。学习困难反而能增强记忆力。间隔一段时间进行检索,会让你的大脑更加紧张。
反射
学习后写下来。反思有助于巩固想法,形成长期记忆,因为它能将想法与我们已有的经验联系起来。反思很简单,比如问问自己哪些做得好,哪些可以做得更好,哪些可以下次再做。
记忆宫殿
我使用记忆宫殿来记住有关网络、HTTP 代码、Linux 功能和 AWS 服务的概念。
它建立在一个被许多人称为想象力膨胀的酷炫特性之上。想象力膨胀指的是我们能够对事物进行如此强烈的想象,以至于欺骗我们的大脑,使其相信它们是真实的,并将它们作为真实的东西保存在记忆中。
你只需选择一个你熟悉的地方,并在其中穿插一些信息,同时想象一些让你印象深刻或荒诞的事情,以此来让你记住它。就像狼蛛在你的客厅里传递纸条,提醒你 TCP 的存在一样。
构建心智模型
心智模型是提取过程的产物,在这个过程中,你从新材料中提取关键概念并进行组织。当我们开始收集有关运维领域(例如监控系统)的信息时,我们正在构建这些监控系统的抽象概念,这将使我们能够设计其他类型的、不完全相同的系统。换句话说,心智模型构成了专家的直觉。
拥有成长型思维
今年至关重要的最后一个记忆工具是拥有成长型思维模式,并与拥有成长型思维模式的人一起工作。
2010年,纽约的研究员卡罗尔·德韦克(Carol Dweck)对五年级学生进行了一项研究。研究人员给这些学生布置了一些谜题。完成谜题后,研究人员告诉这些学生,要么他们非常聪明,要么他们非常努力。之后,研究人员又给他们布置了一轮更难的谜题。结果,那些被告知努力学习的孩子表现得更好。
以下是该研究的一段引言:
强调天赋智力会使孩子失去控制,并且无法提供应对失败的好方法。
学习需要失败。Ops 工程绝对需要失败。
让你身边都是相信这一点的人。我很幸运能与一个团队共事,他们互相称赞对方努力解决难题,而不是称赞对方“聪明”或天生就是优秀的工程师。
如果您对这些策略感兴趣,我从一本关于学习科学的书《Make it Stick》中得到了很多建议。
最后说明
最后,我想说,学习如何学习不仅对任何领域的新手来说都是提升水平的好方法,而且对任何技术领导来说,这都是一件非常有益的事情。首先,它能让你更快地指导和培训新工程师。其次,认识到模式匹配和复制的根本重要性,应该促使我们编写代码库、运行手册和文档时,要对新手友善且体贴。我们都在不断地学习,跨越不同的理解层面。我们都在努力将学习提升到技艺的水平。了解我们如何学习,不仅能帮助我们更快地学习,还能让我们总体上更富有同理心。
我希望能分享更多我遇到的学习技巧和窍门。另外,我也把这个博客当作一种长篇反思和回顾的方式,帮助自己学习。
文章来源:https://dev.to/logan/how-to-learn-d8e