在我自己的学习与职业生涯中,我曾经一次又一次给人们留下深刻的印象——特别是我解决问题、尤其是难题的时候。例如,大概四年之前,我进行了自己人生中的第一次面试。面试官提出的一个问题让我之前四个小时的努力尽皆化为乌有——请解释一下,什么叫“递归”。在接下来的时间里,我在 Facebook 上创建出了无数用户用过的核心 UI 组件,通过编写优化编译器将一种优化模式由 Haskell 移植为 JS,构建起一套拥有五十万安装量且广受推荐的 VSCode 扩展,扩展了一个超过 2000 台“肉鸡”的僵尸网络并通过游戏挂机赚钱,发布了一款受 IPFS 启发而来的文件服务以及整体最快的无服务器 Docker 运行时,还成功建立了一个目前得到我母校几乎每一位计算机科学学生所认可的品牌。最后,我建立了一家由 Y Combinator 与 Pioneer 出资支持的公司。
我积累起的技能储备,让我自己成为在硅谷当中炙手可热的技术通才。但是,我觉得自己真正擅长的只有一件事——学习。这也是我唯一投入过 1 万小时的努力方向。在今天的文章中,我想向大家分享自己的所学所知。
系统之美
大家学得越多,学得就会越快。在阅读后文内容时,请时刻注意这一点。
在设计当中,存在着一个众所周知的自解释性概念。当某人与某些事物进行交互时,用户会利用自己以往的全部经验来快速学习如何使用该事物。精心设计的方案,能够优化事物的这种自解释性,从而显著降低用户的上手门槛。这一概念来自 Don Norman 的《万物的设计(Design of Everyday Things)》一书,其中提到的典型例子就是门——垂直把手代表拉动,横向把手(或者无把手)则代表横开。通过这种核心思路,我们能够快速学会操作新的门扉设计。
让我们尝试分解这套系统。精心设计的对象会充分利用以往经验,教会用户如何与之交互。这意味着只需要使用经过良好设计的事物,就能帮助大家学会使用其它类似的事物。相反,设计不佳的对象则无法让用户正确借鉴以往的经验,这实际上会通过错误的提示阻碍使用者的学习速度。我们可以将这里的“对象”或者“事物”替换为“学习资源”(例如博客、视频、截图、播客、文档等等),而这就是我想要强调的重点所在。
如果大家选择最好的资源进行学习,那么不仅学习速度更快,同时也能够确保自己不会把时间浪费在质量低下的误导性信息身上。
过程的意义
找到关于某种事物的最佳资源。何谓最佳?简单来说,就是您会发现在找到它之后,不再需要进一步查找其它补充资源。
从中提取所有内容。这一般代表着我们应该立即尝试使用其中的经验,从而确保自己快速了还有哪些问题没有弄清。
由于大家已经对于相关技能拥有充足的“表达”知识,接下来您就通解更轻松地找到各类免费的技能最佳资源。到这里,您已经解锁了真正的力量、跨过了“初学者”这道门槛、开始拥有自学能力——这非常重要。
停下来。这有点违反直觉,但除非您真的打算精通某一项技能(除了学习之外),否则只需要达到中等水平就足够了。
上述步骤将帮助您在某一领域当中达到良好的熟练程度。一般而言,当您开始接触并学习某个新领域的知识时,由于大家对其几乎一无所知,因此您的观点通常仅限于“公众”的普遍水平。而所谓的普遍水平,就是误以为自己对这个领域很了解,认定其涉及的专业知识并不多,而且很容易掌握。我们的目标永远是学习本身,只有这样才能让我在与领域专家进行讨论时获得他们的尊重,同时意识到自己与对方相比几乎什么都不懂。
这种方式为我带来了不少隐性的收益。如果您对某一领域了解得足够多,那么在接触新的领域时,您就能够立刻利用原有知识进行关联。这里我讨论的不是某种模糊的潜意识效应,而是您应该刻意尝试的方法——在学习新事物时,根据您已经熟悉的领域进行类比。接下来,您就可以向精通熟悉您所有领域的人们,解释这个新领域中的新概念了。
在学校里,我们学的通常都是些看似无用的知识,而且相当一部分来自您根本不感兴趣的领域。但是,这种积累非常重要,也属于之前提到的了解一切的范畴。
正因为如此,我们在学习过某些内容之后,会发现自己可以更快更好地掌握更多新知识。因此,在学习方面,广博的涉猎要比深度钻研更加高效。
但有些朋友可能意识到,我在这里遗漏了一个重要的部分——我们该如何找到最佳资源。说实话,我也不知道。
也就是说,我可能只是非常“幸运”,碰巧找到了最好或者说最适合自己思路的学习资源。
寻找最佳资源
如何确定最适合自己的资源类型——视频、截图、图书抑或是文档?对我自己来讲,视频是最能激起我兴趣的形式。但是,如果真的打算进军某个新的硬核领域,那文档才是最快也最有效的学习方法。我个人不爱喜欢读长篇大论,但换成有声读物效果就会好很多。
接下来,坚持让自己只阅读这种类型的内容,同时忽略其它所有内容——除非其内容真的非常出色、广受好评,只不过类型恰好不太适合您。如果真是这样,那请大家忍一忍。我也遇到过这样的情况——我不爱读书,但还是把《Learn You a Haskell》啃下来了。
在阅读内容的过程中,考虑我们能否提出帮助自己理解内容的类比——如果可以的话,而且您想出的内容让自己恍然大悟,那就证明您已经找对了方法。
按照之前的过程,找到需要补充的技能,然后再从第一步开始重复进行。
在这里我得承认,所谓“最佳”资源其实并不确切。只存在“最合适”的资源,具体取决于您以往的经历与喜爱的形式。而且,正确的答案往往在事后才会浮现,例如:
Jeffrey Way 的课程给我的职业生涯带来了重大影响,并成为我接触 JavaScript 的敲门砖(我是先学的 jQuery,可能很多朋友都跟我一样)。接下来
Dan Abramov 的课程以及 mpi 的视频又让我迈向函数式编程领域。最后
在 Facebook 公司供职时的eslint-plugin-relay 附加项目,让我踏出了自己编译器与语言理论学习的第一步。
总而言之,这一系列经历让我不到一年之内就能够以开发者的身份进行技术宣讲。
写在最后
当然,我还有很多很多需要学习的知识。我一直在按照之前提到的方式针对不同领域与资源进行以广度为优先的搜索方法。当然,我有时候也会遇到学习效果不好的问题,有时候找不到理想的资源;但大多数情况下,最佳资源实际就在那里,只是我没办法把太多时间投入进去。
请原谅这篇文章的文笔平庸稚嫩——从中考到高考,事实反复证明我的文字功底实在有限,这也是个我一直无法攻克的难题。接下来,我会分配一点精力好好提升提升。感谢各位的阅读!
原文链接:
How to learn things at 1000x the speed
评论