Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我的学习方法论 #60

Open
riskers opened this issue Jun 1, 2022 · 0 comments
Open

我的学习方法论 #60

riskers opened this issue Jun 1, 2022 · 0 comments
Labels

Comments

@riskers
Copy link
Owner

riskers commented Jun 1, 2022

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

目的

首先,明确自己学一个技术的目的,这样才能有的放矢。不要含糊地定义目标为「学会」,什么叫学会?是得心应手地处理工作叫「学会」,还是能实际上手做一些小功能叫「学会」,还是了解了几个 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 整理一下这一周的学习成果。

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

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

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


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


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant