言中你羞愧的事情
相信你一定为自己列过很多计划,无论是深入研究某个技术框架的源码,还是长期维护一个开源项目,半途而废的一定非常多,开始坚持了一段时间,一天、几天、几周,甚至几个月,然后因为某件事件耽搁了一天,然后就耽搁了一周、一个月,其实你心里有数知道自己隔了蛮久了,但是到你再认真想起来的时候,打眼一看,已经隔了几个月了,心里的那种对自己的愧疚感会油然而生😔。心里会想如果几个月前一直坚持,就如何如何了。但是现实就是这样,时间流逝的速度远远超出我们自己的想象。所以坚持这件事情真的是非常重要的。
坚持难吗?其实难也不难,如果给自己订的计划很大,很满,但是生活中总是有各种各样的事情会挤进来,比如自己感冒了,比如这周末需要出趟门,都会占用绝大部分的时间,回到家里时候就只想着休息了,因为你心里知道已经来不及了,索性不做了。因此一定要给自己的计划留够余地,不要拉的太长,就只关注当前一周的计划;不要太满,如果有那种一整天都没时间的情况,就打开电脑或者书只看五分钟,第二天还可以继续完成,而不是像滚雪球一样越滚越大直接放弃。
看代码的正确姿势
无论是研究源码,还是通过项目学习技术,都是在看代码。但是不能够傻看,点开这个文件看一下,看不懂,关掉,换另外一个,还是看不懂,关掉,整个项目都关掉。这样肯定是不行的,我们看代码之前应该对这个代码有一定的“背景知识”,这个代码是做什么的,有那些个功能,然后探索每个功能在那个文件里实现的。这样带着问题看代码驱动着自己去探索代码,而不是随便打开一个文件从头看到尾。
研究源码时候(可能是复杂的框架代码也可能是业务项目代码)要注意读代码的方式,首先应该找到功能入口,就是你想看那一块的功能是如何实现的,就是找到调用的函数在哪里实现的。因为代码里其实就是变量、常量、函数、类,没有其他的了,相信逻辑判断、循环基本都是封装到函数里的。
找到入口以后,开始看实现过程,但是注意只关注主体,以后代码里会有很多的条件和边界判断,这样的代码量有时会比较多,但对理解主体逻辑并不太重要。不过如果是分支判断进行不同的处理的情况,则需要关注。看函数里的逻辑是怎么样的,如果有调用了别的函数,先不着急去看这个函数的具体实现,而要先知道这个函数做什么的,弄清楚当前函数的逻辑。如果需要知道调用函数的实现和逻辑,就再理解当前函数的逻辑和流程以后,再跳到调用函数里去看它的实现。
如果想要梳理清楚函数的组织和调用逻辑,就需要边看边记录,记录调用关系,可以方便后面的复习和梳理。
应该怎么看技术视频
技术时候对于程序员来说已经是不可缺少的了,我们经常听到说“刷”视频,但是刷视频真的能学好吗?不需要做笔记吗?不需要进行复习吗?不需要测验一下吗?我想我们在工作之前的学习中这些环节都是不可缺的,那工作后为什么就全部丢失了呢?
为了达到更好的学习效果,看视频学习时,应该随时记笔记📒,而不是让眼睛爽一下,有一种看了就会了(甚至是倍速+快速的)的错觉。看视频时应该进行思考🤔,边看边想实现当前的功能(可能只是一个小函数)怎么实现,如果视频里的跟你想的不一样就要学习视频中的做法,另外要尝试自己的思路是否可行。
实际写代码过程中遇到问题是再正常不过的事了,如何解决,遇到问题时想到的是什么,去找什么是非常重要的。但是一些技术视频里,很多都是录制前准备好的,出错的概率不高,有一种非常顺畅的感觉,但实际自己动手时却是另外一番景象。因此切忌只刷不动手。
通过项目学编程
通过一个小项目快速上手,用以致学,而不是学以致用。以用带学,而不是花了很长时间才去开始动手做。但是也不要在一开始就去找复杂的项目,去找简单容易理解容易实现的项目。不要担心学的不系统,在上手之后可以去接触技术的核心。在入手阶段应该轻理论,重实践。
正确的流程应该是:找到一个项目 -> 运行项目 -> 尝试修改代码 -> 理解代码组织结构和逻辑 -> 自己尝试实现
一定要复习
上学的时候知道复习的重要性,但是工作以后为什么就不这样去做了呢?不要因为自己忘了昨天刚看过的东西就愧疚,这是很正常的,复习就好了。尊重记忆曲线,不要觉得自己一看就懂了,顿时感觉永世不忘。不要再去看原始素材,而要去复习笔记,通过笔记去回忆起学习的内容,这也要求笔记要记好。
复习的时间点:当天复习,第二天进行复习,周内进行第三次复习,月内再进行第四次复习。其实费不了 太多时间,因为到第三次、第四次复习会看的更快,看到笔记就全部回忆起来了。
快乐学习
编程学习就是有时快乐有时愁,有时无聊有时厌倦。因此让自己有成就感是非常重要的,那么如何让自己有成就感呢?
学习编程的成就感就来源于实现。学了就马上去做东西,无论大小,开心就好。不然让你去学一些东西你也不知道能干啥,学了干啥呢?学着学着就不想看了,想赶紧看完完事,成为了一种负担了。
看十分钟就不想看了怎么啵
大家都知道生物钟的概念,就是我们如果习惯了晚上一点才睡,那么晚上九点大概率是睡不着的。我们应该固定时间、固定精力去学习。固定时间就是我们学习的生物钟,固定精力就是这段时间是有精力,能够集中自己的注意力和脑力去学习的,因此要学好精力管理。当然别说没时间了,有时间刷手机就有时间学习。而且需要坚持哦,上学时候为啥家长和老师都不会让轻易请假,我们都知道一旦过了个暑假,回来之后就是心似平原放马,易放难收了。
看着看着就看不进去了怎么办?学编程看啥都需要一两个小时,想想是不是?看一个项目的代码半个小时能看完吗?搭建一个环境,然后跑项目半个小时够吗?所以不够呀。但是一两个小时是不是太近了呀,过一会看会时间,过一会再看一眼,注意力一直再分散。所以不要去关注学了多久了,而要去关注自己进行到哪一步了?如果某一步是一个比较大的节点了,就可以停下来歇一下,喝口水或者活动一下。也不需要给自己立flag说一定要学一个小时两个小时,因为你会过分去关注这个时间,即便你定了闹钟⏰你也会去看手机闹钟到了没有,是不是时间已经到了但是没响😂如果你说我用沙漏⏳,你可能会时不时的看看沙漏,然后想摇一摇让它漏的快一点🤦🏻♀️
不要浪费时间
欧阳修说“余平生所作文章,多在三上,乃马上、枕上、厕上也。盖惟此尤可以属思尔。”就是说他的文章都是在一些零散时间做的。其实我们今天也是,只不过通勤路上、等饭时候都是无意义的刷手机而已。如果订立了学习的目标,当然可以将这些刷手机的垃圾时间用来学习了。
营造学习的环境
为什么总是不能集中注意力呢?想想是不是一会看下手机,一会动动水杯,没人打断你但是自己不断的想做别的事😂。自己打断自己这能怪谁呢🐶。所以呢用电脑学习就只用电脑和笔记本📒就可以了,当然电脑上也不要去登录微信,就算关掉了消息通知还是会一会点一下看看有没有新消息,关掉消息通知也没用了。
因为家里对于自己是个综合的场所,吃饭、睡觉、玩耍、学习都会进行,因此可以找一个专门的地方学习,可以是任意地方,比如星巴克或者图书馆,当然如果在家里如果有书房当然也可以了。
准备好必备的物品
我们是碳基生物,坐卧躺行都会消耗体能。我们学习时候会消耗脑力,而消耗脑力的话就是会消耗很多葡萄糖,因此需要准备一些带糖分的水,当然不能太甜,越喝越渴。这样身边随时有水,渴了就可以喝,不需要去找水。夏天这么热的天气,当然也需要一个凉爽舒适的环境让自己能够静心学习。
学习也要保持健康
前面说编程学习是需要有连续性的,但是久坐对身体实在不好。因此一个小时必须起身活动一下,预防颈椎病。
学习需要检验
上学时候考试是必要的,通过检测会发现自己的薄弱地方,而不是靠自己虚假的自我感觉。通过找一些面试题或者在线挑战去检测自己,甚至是真正的去面试检验自己。
做好目标管理
目标不要太大,也不要太长,也不需要太详细。如果太大了容易放弃,如果太久了没有急迫感,而且很难弥补,非常容易破罐子破摔导致放弃目标。如果太详细就缺乏弹性,因此生活中不可预估的事情太多了,要给自己足够的容度,不然会让自己陷入赶进度的窘境,让自己忙于追上进度,让自己厌倦起来。每天的学习不需要太多,进步不需要太大,关键是每天要前进一点,不间断比一天六小时、八小时重要得多。
目标要可实施。对于编程来说就是要做项目,简单的功能就可以,关键是能够锻炼自己的编码能力,并且将自己做的功能写一篇文章或者发布到github上。不需要做的很好,不需要非常详尽,这不是编程的学习正道,因为时间是有限的,技术是持续更新的。
如何做好笔记
记笔记是很重要的,无论是看书还是看视频,看完就忘,跑不掉的。而且进行复习也需要有笔记才可以,不然还需要去看书看视频,耗费更多的时间。
康奈尔笔记法是非常著名的一种方法,其实就是在一张纸上写笔记,然后同时写下自己的疑惑以及个人的总结。
当然了,版面和内容可以自己修改,不必要纠结非要和示意图一致,关键在于笔记不等于🙅♂️抄写。
理解更深刻-费曼学习法
理解知识(概念) -> 假想要解释给别人 -> 对进行的解释进行评价和简化 -> 教授给别人
教授给别人的要求是要让对这个知识没有概念的人理解,而不是用“你懂吧”这样的话。这样会让自己去深挖自己所没有在意或者遗漏的内容。通过教会别人让自己学的更深刻。现在的形式可以多样,可以写文章,可以录视频,可以真正的在公司做技术分享或者跟别人进行交流。
写这篇文章的意义
其实意义是在于如果自己啥时候迷失了,或者学习的时候没有目标了,感觉不到意义了,打开电脑或者打开书📚无所适从了,就回来看一下自己写的这篇文章,让自己重新走上学习的正轨。
虽然现在确实是内卷,而且内卷对开发者确实没好处,但是学习和内卷还是不一样的。理清自己要学的内容以及意义,而不是无意义的、恐慌的去学不知所云的东西。
欢迎关注我的大前端知识体系仓库:JavaScript_Everything 大前端知识体系与面试宝典,从前端到后端,全栈工程师,成为六边形战士,一起加油💪🏻