博客专栏

EEPW首页 > 博客 > 再见了……自学编程

再见了……自学编程

发布人:编码之外 时间:2021-07-17 来源:工程师 发布文章

本文原本是准备只发在星球内的,可是我觉得这篇文章对那些自学编程的朋友应该很有帮助,于是就发出来给大家,也希望球友不要介怀,后面肯定会有更多星球专属内容!


大家存在的问题

为什么说自学编程很难?因为编程,一直都是一件有门槛的事情,不然你以为为啥别人拿20K,你只能拿5K啊……


先看大家在自学编程中遇到的一些典型问题:


1、学了就忘,知识记不住,学了等于白学

2、越学越感觉自己啥也不会

3、越学越觉得知识太多,而且杂乱

4、觉得自己付出很多,貌似没啥收获

5、一旦遇到问题,无从下手

6、陷入深深焦虑

7、无限循环


以上都是大家在自学编程中会遇到的一些非常典型的共性问题,为什么会这样,除了上面说的编程本身就是一件有门槛的事情之外,另外一个重要的原因就是,这个行业啊,本身就是一个知识密度大且问题繁多,而且技术发展更新迭代非常快,再加上现在卷的厉害,你稍不留神,你就落后了!


之所以出现上述种种无问题,一句话就是“你没有属于自己的方法”

为什么我觉得方法很重要


我一直觉得自己是个普通人,所以一些共性问题我基本都会遇到,我不觉得自己有什么过人的天赋可以让我轻轻松松去解决工作学习和生活中遇到的某些问题,就比如编程自学这块,我也是遇到好多的问题,其过程真的是无比痛苦,想必一定有感同身受之人!


那面对这个情况,我从很早就产生一个想法,在我学习当中,我必须给自己找一个方向,定一个路线,而且是一个正确有效的路线,然后我可以按照这个方向,尽管去努力就好了,在我是个不怎么聪明且没有天赋的情况下,我必须有一个可以践行的准则以及指导我前进的方向,否则,我觉得我的人生会很乱,会浪费很多时间也不会有些什么明显的进步!


这就是我在学习编程中一直很重视学习方法的原因,我觉得有了学习方法之后,学习会更加的明确,也会对未来更加的充满希望,尽管我的学习方法可能并不是很正确或者存在不少的瑕疵,但是这些都不重要,只要有了,我觉得就有了方向,我就可以在这个方向上只管努力就行了,而且随着自己的认知不断升级,我的这个方法也会不断的更新迭代,但是如果没有这个方法作为根基,那我想,我的学习会是一团糟,就好比那无头苍蝇一般……

人和神是不同的

你相信人和人是有智商差别的吗?


慢慢的我相信了,而且有的人真的让你感觉像神一样,我们学习Java的都应该认识一个神级人物,就是这位:

大名鼎鼎的“Doug Lea”,就是他,写了Java中的并发包,你要是仔细了解他之后,你真的会发出一声感叹:

人和神是不同的

在编程学习这件事情上,有些人真的是特别的强,你不服都不行,我就知道很多比我年龄还小的,人家就是架构师,资深专家,被誉为天才少年什么的,不服?不行啊!


在你还在为知识学不会发愁的时候,人家已经是精通各种底层原理了,你怎么比,我曾经咨询过一位这样的大佬:


“请问你是如何解决知识遗忘的问题呢?记笔记吗?”


“不,我从不记笔记,忘了就再看看,用的多了就记住了,用的不多的记它干嘛”


说的对吗?我觉得很有道理,但是,我知道自己达不到这样的层次,或者说很难去这样做,所以,我还是习惯去记笔记,把一些知识学习之后经过自己的思考重新整理梳理,再用自己的话叙述出来,记录下来,我觉得这对我非常有帮助,而且可以帮我解决知识遗忘的问题!


在理解了人和人始终存在差别之后,我发现,选择适合自己的才是最重要的!

分享我的方法

那接下来我就重点介绍那么久以来我总结的学习方法,希望能帮助大家更好的自学编程!


方法有用吗


有些人是不太相信有什么学习方法可言的,觉得只是唯手熟尔,而且认为方法论的东西是一件很虚的东西,这个我不反对,我一直觉得,任何一件事情,都会存在反对与支持,这个太正常了,我甚至觉得这是一件好事!


所以,接下来的分享可能更加适合那些对“方法”二字没什么偏见或者抵触的人!


首先,我也承认这样的一个事情,就是“方法”的确是一个很虚的东西,以至于有的时候我在看别人分享的方法之后觉得说了跟没说一样,或者根本不知道在说什么,又或者方法有些道理,但是没有指明该怎么做以至于这个方法只能是个很虚的概念!


所以我在整理“方法”的时候尽量避免自嗨以及尽量可执行化,就是让你明白一个理念之后你还能知道怎么去做!

先说怎么做

以下是我整理总结的自学编程的步骤,无论你是学习Java还是python,你都可以按照下面的步骤去操作:

第一阶段:揽全局

默认你是完全零基础,新手小白,找本书,或者一套视频教程,或者一套Java自学手册,比如庆哥写的这个,开始学起来,跟着学就对了,先学完一本书,看完一套视频教程再说,其他的都是在浪费时间!同时学的时候一定要进行教程式笔记记录,否则你的学习将毫无用处,不懂教程式笔记的一定找庆哥请教,对你们太重要了!

第二阶段:重实战

我在初期自学Java的时候就陷入了这样的问题,就是只学理论,实战几乎没有,导致学习效果很差,在进行完第一阶段之后,记得,直接怼项目,查漏补缺,发现知识盲点,然后去攻克,这样进步才快!

第三阶段:读源码

这一阶段是专题深入式的学习,就是把一些高频重点知识点单独拿出来进行专题式攻克学习,要做到的就是不仅知其然还要知其所以然!

第四阶段:补内功

这一阶段就是学习计算机基础知识了,这个知识的重要性不需要多少,学就对了,万丈高楼平地起,勿在浮沙筑高台!

第五阶段:成面霸

相信我,面试这一关值得你花心思去学习!

好了以上就是学习Java的具体步骤了,当然,限于篇幅,我只说了精华,其中有不了解的,可以找庆哥详细探讨!


再次强调一下,以上说的是总的学习步骤,但是我发现还是有很多人看了不知道怎么做,这里简单解释一下,以上五个具体步骤是告诉你该学习哪些内容,但是需要你自己去找学习资料的,比如第一阶段揽全局,你得去买一本书或者找一套视频教程来学习,第二阶段需要你自己去找相应的实战项目去学习,懂了吧,告诉你怎么学习了,你得自己找资源去学习啊!


现在这网络时代,最不缺的就是学习资源了,千万不要想着别人什么都给你准备好,除非你愿意付费!

重点说方法

那接下来我将重点解读下我所践行的学习方法,总结起来就一句话:

系统化学习和教程式笔记

看起来很简单,理念需要仔细理解,否则你是get不到真正的点的!


系统化学习


我相信现在你一定感觉到,我们日常生活中的碎片化时间越来越多了,我不知道你是怎么利用这些碎片化时间的,首先说明一点,我认为,碎片化时间是不适合学习的!


为了让大家有个更清晰的认识,我还是举几个碎片化时间的例子吧:


1、吃饭的时候,尤其在外面吃饭的时候

2、等车,坐车,排队等

3、上厕所……

4、睡前

5、放空

6、……


OK,有这个场景概念了吧,那这些时间我认为是不适合学习的,对于这些时间,我通常这样利用:


1、刷抖音

2、看文章(技术文章一定看自己学过写过的,其他的不看)


咋样,我的利用方式和你一样吗?有的人会说,这样的时间,我一般会用来刷剧,其实我之前也会这样,但是慢慢的我发现刷剧这件事情也是需要系统化时间来进行的,否则,幸福感太低!


那说了这么多,啥是系统化学习呢?其实对于系统化学习这个概念,网上也有不同解读,可能我这个是最普通的了,要说系统化学习,需要先说说什么是系统化?


对比之前说的碎片化时间,这里的系统化我指的是就是那些系统化的时间来说的,所谓系统化的时间就是指的你有可自由利用的一整块的时间,我通常将其限定为最低一小时,也就是说在这一小时里你可以想干什么就干什么,你是可以完全自由支配,不会有人来打断,可以持续利用完这一小时。


那以上是针对时间而言的系统化,那系统化的学习是怎样的呢?这个要拿碎片化的学习来对比,什么是碎片化的学习呢?比如,突然看到一篇讲解CopyOnWriteArrayList,然后你就去看看,然后过了一会又看到讲解IOC的文章,好在去看看,过了一个小时又在B站看jvm内存模型,晚上的时候又在学习分布式锁,我把这样的学习称为碎片化的学习!


看似这一天你又是学习多线程,又是学习虚拟机,还有框架什么的,但是在我看来,没什么用,除了自我满足以外,你的学习并没有什么效果!这种碎片化学习是我不提倡的!


而且,如果上述碎片化学习过程中你没有任何产出,我觉得就是存粹在消磨时间而已!


⚠️想一下,为什么你会觉得知识学不完,知识多,学了就忘,学了很多感觉还是不怎么会?get到了吗?


怎么办?你需要的是系统化学习!


上面解释了什么是系统化时间,而这个系统化的学习指得就是在系统化时间内去集中学习一个专题知识,直到你将其80%的常见知识点都学完!


举例来说,就是在你可自由支配的这一个小时的系统化时间内集中去学习多线程的知识,当然,可能这一个小时你并不会学完多线程,你也不可能学完,但是你要记住,你的下一个系统化时间一定还是学习这个多线程!


另外,知识都是可以深入挖掘的, 很多都不是你一时间内可以完全掌握的,所以不要想着把所有的都全部弄懂学会,不可能也不现实,只需要掌握80%即可,就是常见的你得学会,怎么把握这个常见,看看面试题会问哪些,面试题上出现的你得搞懂!


总的来说,什么是系统化学习?主要就是“系统化”二字,就是尽量整体,而不是被分散,时间要尽可能是一整块大时间,学习要是集中学习某一块知识,整体,整体,整体,get到了吗?


教程式笔记

脱离了“教程式笔记”的“系统化学习”啥也不是!


我这里介绍的系统化学习和教程式笔记必须是相辅相成的,少了谁都不行,这是一个完整的学习方法,那什么是“教程式笔记”?


说到底还是笔记,但是绝不是最低级的那种笔记,什么是最低级的笔记:

从书中摘抄或者视频中截屏然后粘贴到文档保存

我把这种笔记称作最低级的笔记,我发现有大量的人是这样记笔记的,不能说没用,只能说作用微乎其微,其实最好的一种笔记方式就是写博客,这里面有个很重要的点就是,博客一定是这样的:


1、对应的知识自己学过一遍

2、有自己的理解和思考

3、相关代码示例自己实操过

4、用自己的话叙述整理

5、写出文章,不仅自己能看,别人也可以看


这才是一篇好的笔记,也是一篇合格的博客,那我这里的教程式笔记就是这样的很多个博客组成的教程,还记得之前说的系统化学习吧,在你进行系统化学习的时候,针对每一个知识点都要写一篇这样的博客,然后整理在一起,分本别类,形成非常系统化完整的一份笔记教程,就比如我学习Java写的这份30万字的教程式笔记:(后台回复“手册”获取)

还不懂什么是教程式笔记的就可以参考我这个来,你就看我这个笔记,是不是不仅仅是笔记啦,马上可以称为一本书了,非常的完整系统!


所以,系统化学习和教程式笔记是相辅相成的,必须在一起才能发挥作用!


小技巧

在你进行了系统化学习和教程式笔记之后,你就可以更好的去利用碎片化时间了,怎么办,就是我之前说的看文章,而且是看那些你系统化学习过的知识点,为啥,一句话说明白“温故而知新,可以为师矣”,咋样,get到了吧?


好啦,到了这里,本文的分享就结束啦,以上就是我这四年以来自学编程所有经验的精华总结了,不知道你读懂了多少,but,如果你觉得本文还不错的话,麻烦点个赞吧,原创不易,需要鼓励,在此谢过!


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词: 自学

技术专区

关闭