其实学习是一件很私人的事情,每一个人都应该有一套本身的学习方式,而不是照搬照抄别人的。适合别人的不必定适合本身。css
因此,读这篇分享的时候,请以一种【这点是否是对我有帮助】的心态来阅读,而不是【原来我要这样才能学的好】的心态。html
若是你以为某一点对你有用,那就记在内心,若是你以为不太适合你,那么一笑而过就好。前端
我不是什么大牛,只是一个普通的本科生,有说的很差的地方,还望海涵。也由于我只是一个本科生,没有不少的工做经验,因此对于工做后的一些学习经验比较匮乏,因此文章里大部分说的都是大学时期的一些经验,很抱歉。java
这篇文章大致上会从如下几个部分展开:python
认清本身最关键的一点是【要知道本身到底想要什么】。这是第一步,也是最重要的一步。由于这关系到你可以够选对学习方向,可否沉下心来去学习。android
咱们都知道,作本身感兴趣的事情的时候,是能够事半功倍的,由于你愿意去作它,而不是出于某种缘由不得不去作。ios
常常会有人问我,如今前端找工做好找么?java 找工做好找么?我要不要学 android 呢?c++
这些问题的答案其实你们内心都明白:只要你足够优秀,学什么都可以找到一份好的工做。git
因此说,不要由于某一个方向火,而盲目的去追;也不要由于某一个方向可能不容易找工做而不去学。程序员
记得我有一次这么回答一个朋友的时候,他和我说:不少时候,选择远比努力重要,我选一个我不喜欢可是火的方向也许比我选一个我喜欢可是不火的方向赚的更多。
这种想法不少人应该都有,可是我以为,选择远比努力重要的前提是你这个选择得正确,可是可以作出正确的选择的人,他自己就已是一个优秀的人了。抛开这点不谈,在一个本身不喜欢的领域你能走的多深刻呢?
对一个搞技术的人来讲,年龄的增加其实不是那么可怕,可怕的是你没有匹配本身年龄的技术深度。当你的工做换一个刚毕业的学生都能作的时候,你很快就会被淘汰了。
因此,选方向必定要选本身感兴趣的方向,由于只有这样,你才有兴趣去往深刻了学,你才不会在将来被年轻人挤下去。
认清本身的第二点是【认识到人外有人】。自满,自大,自欺欺人是影响本身进步的绊脚石。
若是你以为,你如今已经很了不得了,你能作到这个程度已经很不错了,你就会停滞不前,而后浪费大把的时间。
这是我本身的亲身经历。个人学校是一个双非大学,计算机也不是学校很好的专业,消息也比较闭塞。在个人圈子里,我以为本身已经很不错了,我以前也一直这样认为。
可是,当我今年开始准备春招准备校招的时候,我发现我错了,和真正优秀的人比起来,我什么都不是。之前以为本身会的东西,出去一看,你们其实都会;
之前以为不少知识等工做了再去学也不迟,出去一看,发现早就有人学会了。
可是,如今认识到这些已经有点晚了,由于已经开始找工做了,没有时间再去让你从头开始学了。
因此说,永远不要自满,要知道人外有人。若是有一天,你以为周围没有人比你更厉害了,必定要记得,不是你走到巅峰了,而是你的圈子,应该扩大了。
只有你的周围,有不少更厉害的人,你才能意识到本身的不足。这也是我常挂在嘴边的:你想变成什么样的人,你就要去认识什么样的人,你的周围是什么样的人,你就会变成什么样的人。要知道,人以群分。
为何要学习呢?学习的目的,根本上是为了获取竞争优点,增长选择机会。你比别人懂得多,比别人学的深,你就更有竞争力。对于程序员来讲,不懂得学习是没有办法在这个行业混下去的。
技术的更新换代,技术的深刻掌握都须要去不断的学习,若是你不学,很快就会被淘汰了。
找工做的时候,有其余专业的朋友会羡慕的和我说:你这个专业真好,一毕业月薪就上万,我才3,4千。
其实我想说的是,若是很差好学习技术,搞技术的也会失业。大部分的人都只看到一部分计算机的应届生工资很高很羡慕,却忽略了他们这四年是怎么度过的。
天上是不会掉馅饼的,计算机专业的天天看剧打游戏,毕业同样找不到工做。但愿之后你不会是那群每天打游戏看剧最后抱怨本身工资低的那群人中的一个。
知道了本身的方向,知道了为何要学,那么咱们接下来谈一谈,怎么安排本身的时间,或者说,怎么制定一个计划。
不少人应该都有过这样的经历:我如今很无聊,不知道作什么好,学习吧,不知道学什么,打开电脑也不知道作什么,打开手机也不知道作什么。
而后只能选择看个直播,看个电视或者打个游戏来打发时间。当一天过去之后,忽然后悔,以为本身当时要是学习就行了。
为何会这样呢?是由于你本身没有一个计划,若是你天天都有一个按时间段安排的计划的话,你就不会迷茫了,你就会知道这个时间点本身应该作什么,而不是用看剧打游戏来打发时间。
关于时间的管理。首先,要有一个大一点的计划,好比年计划,月计划,周计划。这一年大致上要打到什么目标,这个月要学习哪些知识。
而后是精确到小时的日计划。每一天,哪一个时间段作什么都详细的列出来。
其次,不要太盲目自信。不少人其实历来没有完成过本身的计划。若是你真的可以完成你制定的每个计划,那如今的你必定已经很了不得了。
若是你几乎没有完成过本身的计划,那么你一开始制定日计划的时候,不要给本身太多的任务。由于若是你一旦完不成,就会影响本身的信心。
最好的方式是,一开始制定一些简单的计划,而后天天很容易就能作到,而后慢慢的去增长本身天天的任务量。
最后找到一个最适合本身的节奏。这个过程可能须要很长的时间,由于你要不断的去尝试,去改进。找到最适合本身的做息时间去休息,找到本身工做状态最好的时间去工做等等。
关于时间管理以及计划的制定,每一个人都应该有一套本身的计划,由于每一个人的状况不一样。
最后,不要把你的计划当摆设。虽然我上面说过,不少人其实历来没有完成过本身的计划。可是我仍是但愿你可以认真的去对待它,由于受益的有且只有你本身。
盲目的学习效果并很差。之前看书的时候,看完一遍再从头看,感受就像是在看一本新书,彻底没有印象。
看似本身学了很多,其实真正掌握到的并很少。学习不是你看得书越多,读过的文章越多你就学的越好,而是看你究竟掌握了多了。那么,怎么才能有效的去学习一门新的技术呢?我总结了如下几个步骤。
确认学习目标
首先,你须要确认你要学什么,切记不要三心二意。学习最好一个时间段专注的去研究一个知识点,不要今天学 python 明天又想学 java 了。作什么事都有有一个目标,否则容易成为无头苍蝇。
目标往大了说,能够是成为某一个领域的大牛,往小了说能够是今天的一个学习计划。
hr 面的时候,一个常见的问题是:你的职业规划是什么。一个优秀的人,必然会有一个属于本身的职业规划,知道本身在什么时期要作什么,知道本身每一个时期要完成什么样的目标。
学习也同样,当你有了一个清晰的目标的时候,你才不会迷茫,才不会不知道作什么好。
制定学习计划
上面也提到了这点,计划可能赶不上变化,也许今天正好有别的事情致使今天的计划没有完成,可是至少大方向是有的,你不会不知所措,不知道最近应该作什么,这才是计划的根本价值。
因此,不要担忧计划完不成,这是给你本身学,一天的计划完不成又能怎样呢?
本身找资料开始学习
请记住,不要当一个彻头彻尾的伸手党。由于轻易获得的东西你是不会珍惜的。而且,你不要祈祷你这一生全部学习须要的资料都有人会提供给你,本身找资料自己就是自学能力的一部分。
固然,我并非说不让你们去群里问,毕竟能问到也是一种本事,可是你必定要有本身的资料来源,不管是博客仍是书或者是官方资料。
脑图与流程图
学习历来都不是只看看书就能学会的,本身构建相关知识脑图和相关步骤的流程图是很是有必要而且很是有效果的。
好比你要学习java,你能够先从网上找一找别人画的脑图,对java有一个大体的了解,每学一个小的知识点,就本身绘制一个该知识点的脑图,学完以后,本身再画一个整个 java 体系的脑图,这样你会对 java 很是的熟悉。
好比你学 GC,光看书或者博客是很难记住那些流程的,这个时候,你本身画一个流程图,我保证你对这个过程会很清晰。记住:就算是有现成的图,你也应该本身画一个,本身画和看别人的是彻底不一样的两个层次。
编码
上面的那些,都是掌握理论知识的步骤,是骡子是马还得拉出来溜溜。编码才是重中之重,就算你能把一个知识点吹得天花乱坠,可是一句代码不会写依然没有什么用。
笔记
好记性不如烂笔头,学完的知识,而后记录下来,本身总结一遍,收获有多大大家试试就知道了。
回顾
若是你学的东西,好久都没用,忽然有一天你又要捡起它,你会发现,你以前作的努力,太特么值了,你有资料!有脑图!有流程图!还有笔记!分分钟就记起来了。
本身写一个有实际应用的 demo
若是有必要,能够写一个有趣的应用,不是简单的范例。
这个过程,实际上是很耗时的,学生建议按照这个流程来,由于学生的时间大把大把的,时间不多的就根据自身状况取舍吧。脑图和流程图我以为收益很高。
上面说到,有的时候看完一本书再从头看,感受像是在看一本新书。因此我后面看书的时候,也会作相应的笔记,看的时候会在书上勾勾画画,给一些重要的地方打上标记,看完以后,合上书,用记事本把本身刚刚学的的东西写一下(大纲就行),而后再和书上比对一下作一些修改。
当我看完一本书之后,对应的,我还会有一个笔记,之后我甚至彻底能够看本身的笔记而不须要再看书了。看 + 回忆 + 记录,可让你充分的掌握一本书的核心。
步骤大致上是这样,可是也千万别死板的都按照这个过程来,毕竟仍是很耗时的。下面分享一些获取资料的途径。
找资料的途径
一些工具
我以为 github 能够当作一个我的品牌来经营,因此最好只放一些很好的项目,一些可有可无的代码放在 coding 就行了,开源中国的码云也行。
记笔记的一些工具
比较推荐用markdown来作笔记,markdown经常使用的语法也就五六个,很好记,也很好用。
心态实际上是很关键的。咱们的周围总会发生一些事情,有的时候这些事情会影响到本身的情绪和心情。这个时候若是你本身调节能力比较差的话,就可能会什么都不想作,不想工做,不想学习。而后颓废好几天。
我想说的是,一个优秀的人必定得是一个乐观的人,不执着于得失,不轻易被影响,积极的去面对生活中所发生的一切。
我主要说的是手机。如今手机已经成为人生活中不可或缺的东西了,它带给咱们方便,可是同时,它也占据了咱们大量的时间。
我不知道你们平时会不会时不时的打开手机,大部分状况下它和以前毫无变化,可是你仍是忍不住的打开它瞅几眼;
或者有几个群在不停的闲聊,而后你也忍不住的参与进去,不知不觉时间就溜走了。
不要成为被手机支配的人,因此,当你工做或者学习的时候,把手机静音,放在一边,不去看它,这样你会节省出不少的时间。
除了手机,另外一个外物的影响周围的环境。若是你能在一个嘈杂的环境中学习,那就很棒了,若是不能,记得给本身找一个温馨的学习环境。
大学学计算机其实大部分时间仍是得看你本身,老师上课讲的东西很重要,可是那些都是基础中的基础,凭借这些并不可以让你找到一份满意的工做,因此你还须要本身去学不少不少的东西。
我简单的概括了一下大学几年要作的事,大家能够参考一下(假设你之后的方向是 java )。
【大一】
这个时候,刚刚接触计算机,你可能什么都不懂,听课也是一脸懵逼,什么for循环,if语句,恶心的不得了。这个时候你要作的不是抱怨,而是去努力的寻找乐趣。由于你已经入了这个坑了,除非你转专业,不然你是摆脱不了它的。
怎么寻找乐趣呢?我以为,编程最大的魅力,就是当你成功的时候的那种发自心里的成就感。不知道你们还记不记得第一次写 helloworld 的时候,各类出错———分号写成中文的了,大括号少了一个———可是最后终于成功的输出告终果的那种喜悦。
对于一个刚刚接触编程的人,我以为,写游戏是最容易得到成就感的。这里给你们推荐一个知乎专栏—- 作游戏,学编程(C语言)。
专栏的做者,经过让一些学生作游戏来学习c语言。我以为这个一个很好的学习方式,即有挑战性,又能够培养出成就感。
大学的入门语言差很少都是c或者c++吧。。若是不是,你也能够参考一下专栏里的小游戏,而后用你本身的语言试着写一下。
可是,我要重点说的是。写游戏实际上是一件颇有挑战性的事。有的人也许会在一开始就陷入困境,不知道如何继续下去。这个时候,若是你能坚持下去,多问问老师,学长,百度,google,把问题解决,那你之后确定会很优秀。
若是你放弃了,不要灰心,由于并非全部的人都适合经过游戏来培养兴趣,你也能够经过作一些 acm 的题来提升本身。每一个学校应该都有相关的网站吧。若是没有的话,能够去浙大的看看。
或者 leetcode 或者牛客网也能够 。作一些本身能力范围以内的题,也能够提升本身的兴趣。
固然,这些只是针对一部分同窗,毕竟不少人其实对代码无感。。根本耐不下性子去写代码。对于这部分同窗,我建议去学习 html 和 css。
由于它们入门超级简单,是用来写网页的。没有 c 语音那么复杂的逻辑,几个标签,几个css就能够设计出一个精美的网页,我想这也会颇有成就感吧。
大一的这一年,是打基础,培养兴趣的一年。不须要你有多么大的成就,写出多么厉害的程序。只要你可以培养出兴趣,而且愿意在编程这条路上走下去,那么你的任务就算完成了。
因此,这一年,你要作的,就是培养兴趣,让本身爱上编程(最基本的要求)。
【大二】
假设你如今已经喜欢上编程了。可是通常大一只会学一门语言(默认c/c++,不要问我为何,由于我就是这么学的。。)。
因此你可能只是写了几个小游戏,写了个小管理系统或者刷了一些题。你不知足于现状,你想作一些更有意思,更好的东西。同时,这个时候,学校应该也开了 java 课了。(假设你要学 java )。
写在前面:大二要作的,是拓宽你的广度!!!广度!!
首先,你要好好学 java。可能学校的进度是一个学期。可是我建议你们用一个月的时间学完。由于有了 c 和 c++ 的基础,java 其实很容易就学会了(入门级学会)。
更好的状况是,你在大一结束的那个暑假,就抽时间先搞定 java 基础。这样当开学的时候,别人还没接触 java,而你能够骄傲的和别人说,你都学完了。成就感满满的。
那么,怎么学 java 基础呢?个人建议是视频为主,入门书为辅,本身跟着写代码。
看书实际上是一件很枯燥的事情,若是你初学 java,只是看书的话可能配置一个环境变量就要搞很久,这会打击你的自信心。不要小看配置环境变量这个过程。我记得当时两天配很差环境变量最后让我帮忙的人可很多。
可是视频就好多了,由于老师会亲自演示给你看,你会少走不少弯路,而且也比书有趣多了。
书为辅,是由于老师不可能记得全部的知识,总会有疏漏的地方或者讲得不太好的地方,这个时候 书就能够派上用场了。
看完一节课的视频,而后关掉视频,本身写一遍相应的代码,出错了本身先试试能不能解决,是在不能的话,再看一遍视频,直到跑通。而后去看看书里对这部分知识的讲解,加深印象,查漏补缺。
这里的重点是,必定要本身写一遍代码。你看的时候以为本身会了,但是大部分时间,你一写全是错误。因此必定要本身写。
而且,在你初学的时候,不要使用集成开发环境(eclipse idea NetBeans等),就使用 notepad++ 这种类型的编辑器就能够。
这套流程最大的缺点就是耗时比较久,可是效果是很好的。java 里有不少都和 c/c++ 同样的,好比一些语句什么的,若是你已经掌握的很好了,直接忽略掉这些也是能够的,这就看你本身的状况了。
推荐一些学习资料。
一个月,干掉 java 基础!这是你大二首先要作的事。
前面说过,这一年,你要作的是拓宽本身的广度。什么意思呢?就是说,你要尽量的去多接触一些技术,多学一些知识,由于你之后很难再找到这么多你能够自由支配的时间了。
java 基础搞定。接下来,学习 java web。
你要知道,优秀的人永远都走在大部队的前面。不要学校安排什么你就学什么,学校不安排你就不学。事实上有的老师讲的不是很好,大学里真正有用的知识,都是本身学的。因此,接下来要作的是自学 java web。
依旧是视频+书+写代码。
java web 更重要的是实践。我当时学的时候的书就是学校的教材。。我是基本没看书的。就跟着视频一步一步来,有问题就 google。在大二上学期结束的时候,完成 javaweb 的学习。
由于须要和前台作一些交互,因此免不了要学一点前端的知识(html + css + js)。
这个过程当中,遇到的问题千奇百怪,我记得我当时一个小问题 google 了一天都没能解决,最后才知道是 jar 包版本的问题。。因此,遇到问题是很正常的,遇到很难解决的问题也是很正常的,只要你肯问,肯查总能解决。
好了,你如今已经有了本身写一个小网站的能力了(丑点无所谓)。接下来去参加比赛!进实验室!作项目!没有什么比作一个项目更能提升水平了。
因此,你大二下的任务就是尽量的去作项目,依次来巩固你学的技术。能够参加一些比赛,或者加入实验室,或者寻求老师的帮助。总之,你要作项目!
除此以外,你须要继续扩展你的视野。前端(不是你以前学的简单的html),python,android,ios,cocos。。。只要是你感兴趣的,就去接触一下,不须要你学的多厉害,也不须要你彻底掌握。只是为了让你的视野更加开阔,知道原来还有这么多技术,原来还能够这样。
大二的一年,你须要学会 java 和 javaweb,而且至少作一个拿得出手的项目。同时,尽量的提升你的视野。当你以为你一无所知,你仍是个菜鸟,这一年的任务就完成了。
【大三】
这是很关键的一年,由于这一年你将决定是否考研。考研的我就无论了。。接下来是针对准备一毕业就工做的同窗的。
写在前面:这一年,你要作的,是深度!
经过大二一年的努力,你的广度已经足够了。而且在这个过程当中,你应该也找到了本身最感兴趣的方向,若是没有,那就继续研究 java 吧,总比你不知道学什么好。不管怎样,这一年,你的重心都应该放在一条路上。以 java 为例。
首先,巩固基础!
这是最重要的。怎么作呢?进阶书籍+看博客+写总结+写开源项目。
这个阶段的视频不是不少,也没有必要了。直接看书+看博客+开源项目,最后再总结就够了。
我举个例子,好比,我如今要学设计模式,我买一本《head first 设计模式》而后一个模式一个模式的学,每学一个模式,看一遍书,而后 google 一下这个模式,看几篇高质量博客,结合书和博客本身写一个总结,甚至能够本身写一个博客专栏,让后来者也能享受到你的学习成果。
同时,能够好好整理一下本身学习过程当中的代码,放到 github 上,最好能够试着封装一下这个模式,让其余人更方便的使用这个模式。当你收获一个又一个的star时,你会很是有成就感的。
上面是学习的大体方式。学完了,怎么检查本身有没有学好呢?给你们提供一个网站牛客网,你打开就知道怎么用了。
基础都包括什么呢?
每一个知识点,不仅是要会用,更要能理解一下底层的原理,有必要的话能够看看 jdk 源码或者框架源码。
你要知道,bat 等大厂每一年会有两次招聘,一次春招,在每一年3-5月,一次秋招8-10月。
春招是招实习生的,秋招是招正式员工。因此,若是你想进这些公司,就要提早作好准备。至少,上面的那些基础你是必须得都掌握的。
大三这一年,要让你的深度足够,有能力的能够继续延伸本身的广度。这个阶段,最忌讳的是朝秦暮楚。
早上看 python,下午发现 go 颇有趣,看了一下午 go,晚上据说 R 很厉害,又去研究 R 了。
千万不要这样!不要成为各个领域的杂牌军,你如今要作的,是在一个方向有一些建树。
【大四】
去实习。
实习的话我能给的建议很少,虽然个人实习经历还蛮多的。可是毕竟不是混迹职场多年的人,就不乱说了。
找工做,待遇,环境挺重要的。可是我以为,这个公司的技术栈,行业背景也是很重要的。我实习的三家公司是三个不一样的行业,因此我知道,不一样的行业差距仍是很大的。有的公司招聘的时候会要求你在这个行业有过经验啥的。因此,行业背景仍是有必要注意一下的。同时,为了本身为了的前途,必定要问清楚公司的技术栈!
固然:做为一个有抱负的人,毕业设计必定要向着优秀发展!而且依旧要不断提升本身的水平。这个时候,学什么可能得根据公司的需求来了,可是,永远不要中止学习!
简而言之,这四年你应该这样过:
大一:培养兴趣
大二:横向发展,广度优先
大三:纵向发展,深度优先
大四:选好方向,不断提升本身
文章写得很匆忙,不少东西实际上是我之前写过的。个人学习经验也不是很丰富,工做经验也不是不少。因此不免有写得不对或者不到位的地方,一些细节也没有展开谈,但愿你们多多包涵。
若是看完这篇长篇大论对你有一点帮助,那么个人目的就达到了。若是没有什么帮助,我表示很遗憾,争取之后可以写出对你有帮助的文章。
我举得不少例子都是针对大学生和 java 的。一方面是由于我本身仍是个学生,方向是 java,对这个比较熟。
一方面是我知道参与此次分享的不少人都是个人朋友,他们也是学生,也在学习 java。对与一部分人,可能要说一声抱歉了。
不过,学习的方式是想通的,能够互相借鉴。
这篇文章就到这里了,若是有什么问题或者不一样的看法,能够在下面评论,后面的交流咱们再讨论。
本文来自做者 Mystery 在 GitChat 上分享「 程序员如何高效学习(以 Java 为例)」源:GitChat技术杂谈(GitChat_Club)