“工欲善其事,必先利其器”,坚持学习是每个程序员必不可少的品格。在学习之前制定学习计划,能够提升学习效率,达到事半功倍的效果。
一、为什么制定这个计划
我是一名刚毕业的本科生,虽然大学学的专业偏文,但是也有计算机专业的课程,也正是大学的课程使我走上了Java这条路。大学所学的计算机课程少而且不系统,虽然参加过实习但是只需要实现功能,因此忽略了基础知识,在参加校园招聘的时候才发现自己的知识体系并不完善。为了让自己的技术更上一层楼,向自己的理想更进一步,我必须打好基础,一步步完善自己的知识体系。
作为拖延症晚期患者,我的计划总是赶不上变(lan )化(duo)。虽然我有计划,但是不知道怎么实现,往往有了具体的操作步骤但是中途而废,因为我没有一步步完善计划,而且还有遇到难关就懈怠的缺点。计划死板和容易倦怠将我的计划一步步推向深渊,往往是无疾而终。因此,写这个博客能让我的计划有一个书面展示,既能在我执行计划的时候有所遵循,也能在此基础上一步步完善,所以这篇是(一),接下来可能还有(二)(三)(四)......
即将参加工作了,工作之后时间就变得零碎了,为了能在参加工作后不断进步,我需要挤出时间学习,将效率最大化。制定计划能让我知道自己该做什么,该怎么做,否则像个无头苍蝇,到头来都不知道自己做了什么(这是以前的我,希望这个计划能让我有所改善)。
二、学什么
在参加校园招聘的时候,我对所要掌握的基础知识做了总结,这也是我目前需要恶补的知识,因此我画出了思维导图:
针对上述知识点,我准备了一些书单:
1、Java
Java基础:《Java编程思想》、《Effective Java》
JVM:《深入理解Java虚拟机》
并发:《Java高并发程序设计》、《Java并发编程的艺术》
框架:《Spring in Action》、《Spring技术内幕》
网络:《Netty权威指南》、《Tomcat内核设计剖析》
Java8:《Java8实战》
设计模式:《设计模式之禅》
框架推荐看官方文档入门,边学习边操作;设计模式可以看博客快速入门,推荐:23种设计模式汇总整理。
2、数据库
SQL:《MySQL技术内幕》、《高性能MySQL》
NoSQL:《Redis实战》、《Redis设计与实现》
3、计算机网络
计算机网络层次结构:《计算机网络》 谢希仁版
TCP/IP:《TCP/IP协议详解卷一:协议》
HTTP:《HTTP权威指南》
4、操作系统
操作系统原理:《深入理解计算机系统》
Linux:《深入理解Linux内核》、《Linux内核设计的艺术》、《鸟哥的Linux私房菜》
5、数据结构
《算法导论》、《算法(第4版)》、《数据结构与算法经典问题解析》
6、架构
《亿级流量网站架构核心技术》
以上是我准备阅读的一些相关书籍,除了阅读书籍外还有很多学习途径,比如看视频、看博客等。对于操作系统原理,个人觉得看书比较枯燥乏味难懂,因此看视频是一种不错的学习途径,清华大学的慕课课程比较通俗易懂,适合入门。
三、怎么学
1、时间安排
工作日:早上7点起床就能挤出将近半个小时,上班途中可以看看技术类公众号,上班的时候如果有空闲的时间也可以挤出时间看一下技术类博客。中午两小时休息时间可以挤出一小时学习,按照正常下班时间是晚上五点半,下班后可以待在公司学到晚上九点半,偶尔可以学到十点后甚至直接在公司通宵(伤身体,不推荐,时间紧的时候可以这样做),一般是周四晚上,因为只需要上一天班就周末了,可以趁周末好好休息。这样一天就能挤出至少五个小时的学习时间了。
周末:周末时如果不加班,整天都可以学习。早上七点按时早起,除去午休、吃饭、散步等时间,周末每天都可以学到晚上十点,这样一天就能挤出4+2+2=8小时的学习时间了。
娱乐:当然,人生也不只有学习,劳逸结合取得的效果更明显。为了拥有强健的体魄,我计划每周至少锻炼两次(跑步、健身、打球等形式不限)。除此之外,我周末也要抽时间出去徒步放松,目前打算是一个月两次。
2、学习途径
2.1、看技术文章
网上有不少大神的博客写得非常好,目前我比较喜欢的有开涛的博客、ImportNew、占小狼的博客等。阅读博客,往往掌握的知识比较零散,当然也可以针对专门的知识点或者技术阅读博客。无论学习什么知识,我们都要有目的地学习,不能只是为了阅读而阅读,阅读完后我们至少要知道这篇文章讲了什么,有什么知识点,遇到不懂的技术、名词马上简单了解一下,不能先放一边,因为这样不仅会读得糊里糊涂,而且知识会越积越多,错过了学习的最佳时机。
要理解透一篇博客,仅仅是看有时候并不能达到效果,我们还需要动手操作,一步步思考,将所学的知识以及自己的理解记录在本子上,举一反三,特别是遇到难理解的博客更需要如此,必要时还要阅读相关文章加深理解。读完一篇文章需要作总结,了解文章的结构并能复述出文章的主要内容。
技术文章,包含但不仅限于博客,公众号、技术社区也有不少高质量的技术文章。我对阅读技术文章的理解有两个,一个是了解一项技术,第二是专门学习研究一项技术。第一个只是零散的阅读,比如在公众号、博客上非专题的文章,起到了解或者加深理解的作用。第二是针对专门的知识点搜索阅读,这类文章往往有一个专题,顺着整个专题读下来往往能系统地学习一项技术。
2.2、看书
一般情况下,我们看书是为了对技术有深入系统的认识,当然也可以将书籍当做工具书去查阅。学习某项技术不建议一开始就看书,一般是先阅读相关博客和官方文档,对技术有一定的了解之后才看书加深理解。
对于看书,我建议先了解清楚为什么读这本书,读这本书要收获什么或者有什么好处,也就是明确读这本书的目的,再往下阅读。看书时,我会先看目录,对书本的内容有大概了解。这一步往往要阅读章节介绍,缕清每一章的内容以及不同章节之间的关联。阅读正文的时候,我们要先看章节内的小标题,大概清楚这一章有什么内容。遇到不懂的知识及时查阅,带着思考去阅读,必要时在本地IDE调试书中代码,争取做到举一反三。读完一遍后要根据小标题回顾整一章,了解整章的内容和知识点之间的关联,画思维导图。读完一本书后要对每个章节做一个全书总结。整本书连续读下来后,往往很难记住之前已经看过的内容,首次阅读一般是对书中的知识有一个整体的理解,因此我们要多读几遍才能通读全书。
通过上述方法看书主要是为了加深巩固某一知识,我们有时候也可以将书籍当做工具书去查阅,这样子往往更有针对性一些,一般可以圈定某几个相关章节去阅读。
2.3、看视频
网上的学习视频多如牛毛,质量也稂莠不齐,高质量的视频往往在知识的深度和广度方面都做得比较好。看视频不能作为学习新技术的唯一途径,但是可以作为加深理解的方法,因为视频中的讲解往往更容易让人理解,因此视频可以作为技术入门或者增强时的学习方式。观看教学视频有优点也有缺点,缺点是看起来慢,而且有时候讲解得并不是很深入。
看视频时我们也可以记录课程脉络,动手调试代码,最好能弄到课件,这样子复习的时候能通过课件复习,而不是重复看视频,能节省不少时间。
2.4、总结学习
通过上文,我们可以看到学习途径有博客、看书、视频,除此以外还有很多学习途径,这几个途径是我目前主要沿用的方法。
在学习一门技术之前,我们要先明确这门技术能解决什么问题,有什么特性以及优点,也就是明确学习目的,这样子可以有目的地学习某项技术。学习时可以通过博客入门,然后再阅读官方文档一步步操作,接下来可以继续通过阅读博客、源码等学习相关实现原理。
同一时间的学习途径并不是单一的,各种方式应当相互配合,以达到最好的效果,比如我看书遇到不懂的时候可以查找相关博客。
3、学习节奏
学习一门知识,如果没有把握学习节奏,过松或者过紧都容易导致效率低下,甚至半途而废。因此我给自己制定了一个相对宽松的学习节奏。
我计划每个月详细阅读两本技术书籍,学习一门新技术(可以和书本有关也可以无关)。如果不能达到目标,将计划延长一个月,归入下个月的计划中,因为我宁可少学点技术也要高质量地完成。如果我提前完成了计划,那么我会给自己分配新的任务,同时给自己小小的奖励,比如买想买的东西、出去玩放松放松等。
以上只是主任务。如果突然对某项技术感兴趣,或者想研究某项技术,可以将该项技术的学习列为副任务。除了技术性的知识外,我还要学习非技术知识。阅读自己喜欢的书籍,学习自己喜欢的知识。
四、总结
本文从三个方面讲述了我的学习计划,开篇明确了指定计划的原因,接下来阐述这项学习计划所要学习的知识,最后通过时间安排、学习途径、学习节奏三个方面讲述具体的计划。
“乘风破浪会有时,直挂云帆济沧海”,愿我们每个人都能在新时代中自由驰骋,通过努力实现自己的梦想。