riskers / blog

:pencil2: 博客写在 Issues 里
http://riskers.github.io/
MIT License
1.13k stars 96 forks source link

我的学习方法论 #60

Open riskers opened 2 years ago

riskers commented 2 years ago

这个时代太棒了,什么知识都可以在网络上找到,之后就是筛选的烦恼。现在总结一下我的学习方法论。

目的

首先,明确自己学一个技术的目的,这样才能有的放矢。不要含糊地定义目标为「学会」,什么叫学会?是得心应手地处理工作叫「学会」,还是能实际上手做一些小功能叫「学会」,还是了解了几个 API 叫「学会」。

我觉得,针对问题解决问题最重要!而不是看到一个新玩意,就去「学会」!搞不好你以为「学会」了,可没有实践,最后也会一事无成。

前些年,我就陷入这个怪圈。陷入选择怪圈,想要同时 TS 和 Golang,结果贪多又没有实践,今天学的明天就忘,自己也很痛苦。幸好,最近写 GithubX 又找到了写代码和学习的感觉!让我知道了:学习最好的效果就是用学到的去做一个东西出来,也最牢靠!

回顾历程

我上大学之前,准确地说,是大二之前,是不知道编程这回事的。大一暑假,我自己打工赚了不到两千块钱,加上之前攒的生活费,给自己买了一台笔记本,是神舟的,我记得很清楚。

大二,学习 PS、PR,给学生会做做海报和宣传视频。现在想想,要是一直坚持下去,不知道现在自己会不会是一个设计师或者影视后期呢?

大三,学习 CSS,开始切一些页面练手。当时也不知道怎么获取知识,就是把图书馆里相关的书都借回来,对着里面代码敲。结果是可想而知的,没有什么效果。之后发现其实有些人的博客写得特别好,愿意分享出来,尤其是张鑫旭的博客,我当时几乎把他每一篇文章都看了,然后敲下来。

大三暑假,去了北京实习两个月,住在蚂蚁间里。让我明白了多人是怎么协作的,也让我知道了 Node.js 和 Angular.js 两个框架。

大四,继续夯实基础,然后找工作。其实我在这个阶段还处于没开窍的阶段,也根本不会知道未来工作会有什么困难在等着我。

2014/8 - 2017/1,第一份工作移动 Web 前端。这个时候主要是用 jQuery 开发业务,至于 React、Vue 这些框架都还没有,JS 模块化主要靠 RequireJS 或 SeaJS,工程化是 Grunt 或 Gulp 这些工具。可以说,我是花了一年左右的时间,才把这些东西怎么用,怎么组装搞明白的。因为公司里没有技术氛围,我属于 free farm 状态,技术学习途径主要依然是看博客和看书,还处于「量变」积累的过程。

2017/1 - 2018/4,第二份工作 PC Web 前端。这个团队就比较正规了,还是 React 技术栈,这里我算是进入正规军了。构建规范化、流程化,也有技术分享了。不过,后面因为部门变动,我就离开了。这个阶段开始买电子书而不买纸书了,因为搬家太重,而且电子书可以搜索

2018/5 - 2019/3,创业,前端。这依然是一份目前我面对的最困难的一份工作,因为是创业,我什么都要做,而且没有规范,没有指标,没有工作量。唉,很是心类的一个阶段。不过,这个时候的我,已经不会再对自己的发展迷惘了,心中有了大概的学习计划。不管公司如何,我自己总是在进步的,当时想法就是这么简单。离开的时候,我心里是比较从容的,因为我已经知道我要往全栈的方向发展了。

2019/3 - 2022/5,Java 后端,转型了。后端知识之复杂,体系之庞大,是我之前没有遇到过的,是全新的领域,我之前的那点 Nodejs 储备量根本不够用了。所以,我用了几乎一年的时候,把常见的框架、组件都搞明白怎么用了,第二年的时候才有了点后端开发的感觉。我很少买书了,除了经典书籍,我现在学什么基本都通过 Google 和 Youtube 学习了,而且现在微信读书有太多电子书资源了!

可以看到,我几乎每去一家公司,都是去学东西的,也总能学到东西。

学习的过程

对于大部分开发任务,我们没有必要掌握一门编程语言的所有细节。好办法是花尽量少的时间去掌握日常开发所需要的 80%,而不是花 80% 时间去掌握平时比较少见的 20%。

比如我在用 Java 开发的时候,其实 2 天我就把 Java 的语法过了一遍,然后基本就可以开发业务了,但是,直到一年后,我才能完全明白这些是怎么回事。

学习一门技术的时候要快速掌握其最核心的部分,抛弃细枝末节,直接动手实现目标,中途遇到不会的再 Google 即可。这样才是高效快速的学习方式(缺点就是基础可能不牢靠,需要自己整理知识图谱来巩固)。

学习过程从来不是线性的,所以如果你看别人给出一个最佳的学习路径,比如看完某本书,然后再看另外一本更深入的,然后再买个什么课的,就比较坑了。

知识的学习一定是螺旋向上的。学习任何技术都不会是线性的,是螺旋式的,要积累量变到质变的能量。这个能量,可能是累计的代码量,可能是若干个知识点等等。是理论和实践相互交叉在一起向上的。

还要逐渐把自己心中的 Roadmap 勾勒出来,不断完善。大脑里保存一份记忆宫殿,在用到的时候,取走对应的那部分,我努力做到这个样子。

我觉得要学一门新技术,最快的办法就是看完文档之后,自己试着做些小项目,如果还想继续深入就做一些更大的项目,或是参与到开源项目中去。而绝对不是细细地扣着文档来学语法或者功能点,这样不是不行,而是有点笨拙。一定是做的时候学,是最快的!光看语法有什么用,没有项目要自己去找项目,技术不练怎么精进。

没有参与开源项目是我上面说的我在迷茫时期犯的最大的错

通常是技术不难学,但是领域知识比较难学,因为要实践某些领域知识需要相关环境和工作内容。

比如前端,JavaScript 难么,不难,但是学完你就能干前端了么?还差得远呢。什么 npm、DOM、MVVM 框架一上来,你就懵了。 比如后端,Java 不难,但是学完你能干后端么?还需要数据库、框架、分布式知识的加持。 比如 DApp,Solidity 其实也不难,但是需要了解背后成体系的区块链知识。

持续学习的好处

上面说了「怎么」学习,现在说说「为什么」。

有人问过我,说他做了三年 Java,想要转 Go,但是又怕 Java 退步了。我其实觉得挺不可思议的,为什么会退步呢?

要知道学得越多,就会学得越快,当然前提是你之前的真的学会了。

我告诉他,退步说明你 Java 还不牢靠吧,但是如果只为了「守」住什么技术,而不去学别的技术,这恐怕是懒惰的表现。

努力是最大成功因素,绝大多数的人努力的程度,都还用不到去拼天赋的程度。编程其实有点像卖油翁的,最后,可能就是「无他,唯手熟尔」的境界。

学习方法

很多新手还是像在学校一样,看书就从第一章开始看。不得不承认,出了学校,就已经不存在让你可以成体系学习一个东西的时间和机会了。工作中,全部都是业务的学习。

那怎么学呢?不停地写,遇到不会的就查!这是最快的学习方式。但是,这样获得的知识不牢靠,形成不了体系。这时候就需要自己整理知识图谱了,我是用的 Notion 做整理,获取知识途径可以是 Youtube、书、博客等等。不断地优化 Notion 的同时,就是自己不断思考和整理知识碎片的时候!

而且,看书要带着问题去看,看书是为了解决问题,而不是单纯地去学。

古人说,「学而不思则罔,思而不学则殆」,放在这里:只顾着学习新玩意,赶时髦技术,就会让自己忙忙碌碌,但却无所适从,甚至有让身体的勤劳掩盖头脑的懒惰的嫌疑;而空有想法,却从不去实践,只会让自己陷入焦虑,毫无意义。

有过两段迷茫的时期,一段是刚工作 free farm 的时候,一段是刚转型后端时候。虽然两段时间跨得比较久,但也有共同点,都是在我刚进入一个新领域的时候。

之前有一段时间,我就陷在这里。那时候光想着学概念,一点都没想着要找个实际项目来做。导致 TS 一直没学会,还不如我最近 2 个月做 GithubX 学的 TS 多呢。

那一年也不是自己学不进去后端的那些东西。就像前几年,前端的那些不也是学不进去么?比如当时想学重绘重排这些东西,到现在忘了;比如当时学的 Docker,直到真正做了后端才学会。

对于我来说,整体知识了解之后(一般是看书或者文档),直接开始上手写个小项目,遇到不会就查,记录在 Notion 上。项目做完会有正反馈,可以刺激大脑。积累一定量不会的知识之后,就可以进阶了,尝试把他们在 Notion 上归类。让知识成体系,解决上面说的知识不牢靠问题。

当然,即便整理出来了,也不能保证学会,还要时时练习才行,让大脑形成肌肉记忆。

现在我不会因为同时学很多东西,而忙乱得一匹了。做到慢就是快

主要的原因还是我学会了整理知识:Notion 帮了我大忙,网络式的知识图谱,是我的第二大脑。这也是我已经不怎么写博客的原因了。我可以在1分钟内,找到我遗忘的东西。

如何构建知识图谱呢?不要给自己设限。比如最开始做前端的时候,学跨域的解决方案,看到可以 Nginx 转发,就觉得那不是我干的。到后来,Docker、数据库都会用了,人还是不要给自己设限。

总结复盘

我的复盘方式就是写周记,每天的想法都记在 Dayone 上,每周末对着 Dayone 整理一下这一周的学习成果。

我是从初中开始学英语,否没有学会音标。因为老师讲的不好,自己就没有学会。上学时,如果听不下去老师讲的,就只能自己看书,而英语这种东西又不是看书就能看会的。

而最近又在学英语,照着一个台湾大学老师的课程学音标,收获极大,绝对超过了我之前十几年对音标的理解。

真的感谢网络时代,让我又有了学习的快乐。


向我捐助 | 关于我 | 工作机会