文章的整体思路这篇文章大体上会从以下几个部分展开:
一、认清自己1.1认清自己最关键的一点是【要知道自己到底想要什么】。这是第一步,也是最重要的一步。因为这关系到你能够够选对学习方向,能否沉下心来去学习。 我们都知道,做自己感兴趣的事情的时候,是可以事半功倍的,因为你愿意去做它,而不是出于某种原因不得不去做。 经常会有人问我,现在前端找工作好找么?java 找工作好找么?我要不要学 android 呢?这些问题的答案其实大家心里都明白:只要你足够优秀,学什么都能够找到一份好的工作。 所以说,不要因为某一个方向火,而盲目的去追;也不要因为某一个方向可能不容易找工作而不去学。 记得我有一次这么回答一个朋友的时候,他和我说:很多时候,选择远比努力重要,我选一个我不喜欢但是火的方向也许比我选一个我喜欢但是不火的方向赚的更多。这种想法很多人应该都有,但是我觉得,选择远比努力重要的前提是你这个选择得正确,但是能够做出正确的选择的人,他本身就已经是一个优秀的人了。抛开这点不谈,在一个自己不喜欢的领域你能走的多深入呢? 对一个搞技术的人来说,年龄的增长其实不是那么可怕,可怕的是你没有匹配自己年龄的技术深度。当你的工作换一个刚毕业的学生都能做的时候,你很快就会被淘汰了。所以,选方向一定要选自己感兴趣的方向,因为只有这样,你才有兴趣去往深入了学,你才不会在未来被年轻人挤下去。 1.2认清自己的第二点是【认识到人外有人】。自满,自大,自欺欺人是影响自己进步的绊脚石。如果你觉得,你现在已经很了不起了,你能做到这个程度已经很不错了,你就会停滞不前,然后浪费大把的时间。 这是我自己的亲身经历。我的学校是一个双非大学,计算机也不是学校很好的专业,消息也比较闭塞。在我的圈子里,我觉得自己已经很不错了,我之前也一直这样认为。但是,当我今年开始准备春招准备校招的时候,我发现我错了,和真正优秀的人比起来,我什么都不是。以前觉得自己会的东西,出去一看,大家其实都会;以前觉得很多知识等工作了再去学也不迟,出去一看,发现早就有人学会了。但是,现在认识到这些已经有点晚了,因为已经开始找工作了,没有时间再去让你从头开始学了。 所以说,永远不要自满,要知道人外有人。如果有一天,你觉得周围没有人比你更厉害了,一定要记得,不是你走到巅峰了,而是你的圈子,应该扩大了。只有你的周围,有很多更厉害的人,你才能意识到自己的不足。这也是我常挂在嘴边的:你想变成什么样的人,你就要去认识什么样的人,你的周围是什么样的人,你就会变成什么样的人。要知道,人以群分。 二、学习的目的为什么要学习呢?学习的目的,根本上是为了获取竞争优势,增加选择机会。你比别人懂得多,比别人学的深,你就更有竞争力。对于程序员来说,不懂得学习是没有办法在这个行业混下去的。技术的更新换代,技术的深入掌握都需要去不断的学习,如果你不学,很快就会被淘汰了。 找工作的时候,有其他专业的朋友会羡慕的和我说:你这个专业真好,一毕业月薪就上万,我才3,4千。其实我想说的是,如果不好好学习技术,搞技术的也会失业。大部分的人都只看到一部分计算机的应届生工资很高很羡慕,却忽略了他们这四年是怎么度过的。天上是不会掉馅饼的,计算机专业的每天看剧打游戏,毕业一样找不到工作。希望以后你不会是那群天天打游戏看剧最后抱怨自己工资低的那群人中的一个。 三、时间管理知道了自己的方向,知道了为什么要学,那么我们接下来谈一谈,怎么安排自己的时间,或者说,怎么制定一个计划。 很多人应该都有过这样的经历:我现在很无聊,不知道做什么好,学习吧,不知道学什么,打开电脑也不知道做什么,打开手机也不知道做什么,然后只能选择看个直播,看个电视或者打个游戏来打发时间。当一天过去以后,突然后悔,觉得自己当时要是学习就好了。 为什么会这样呢?是因为你自己没有一个计划,如果你每天都有一个按时间段安排的计划的话,你就不会迷茫了,你就会知道这个时间点自己应该做什么,而不是用看剧打游戏来打发时间。 关于时间的管理。首先,要有一个大一点的计划,比如年计划,月计划,周计划。这一年大体上要打到什么目标,这个月要学习哪些知识。然后是精确到小时的日计划。每一天,哪个时间段做什么都详细的列出来。 其次,不要太盲目自信。很多人其实从来没有完成过自己的计划。如果你真的能够完成你制定的每一个计划,那现在的你一定已经很了不起了。如果你几乎没有完成过自己的计划,那么你一开始制定日计划的时候,不要给自己太多的任务。因为如果你一旦完不成,就会影响自己的信心。最好的方式是,一开始制定一些简单的计划,然后每天很容易就能做到,然后慢慢的去增加自己每天的任务量。最后找到一个最适合自己的节奏。这个过程可能需要很长的时间,因为你要不断的去尝试,去改进。找到最适合自己的作息时间去休息,找到自己工作状态最好的时间去工作等等。
最后,不要把你的计划当摆设。虽然我上面说过,很多人其实从来没有完成过自己的计划。但是我还是希望你能够认真的去对待它,因为受益的有且只有你自己。 四、学习方法盲目的学习效果并不好。以前看书的时候,看完一遍再从头看,感觉就像是在看一本新书,完全没有印象。看似自己学了不少,其实真正掌握到的并不多。学习不是你看得书越多,读过的文章越多你就学的越好,而是看你究竟掌握了多了。那么,怎么才能有效的去学习一门新的技术呢?我总结了以下几个步骤。 4.1 学习的步骤确认学习目标 首先,你需要确认你要学什么,切记不要三心二意。学习最好一个时间段专一的去研究一个知识点,不要今天学 python 明天又想学 java 了。做什么事都有有一个目标,不然容易成为无头苍蝇。目标往大了说,可以是成为某一个领域的大牛,往小了说可以是今天的一个学习计划。 hr 面的时候,一个常见的问题是:你的职业规划是什么。一个优秀的人,必然会有一个属于自己的职业规划,知道自己在什么时期要做什么,知道自己每个时期要完成什么样的目标。学习也一样,当你有了一个清晰的目标的时候,你才不会迷茫,才不会不知道做什么好。 制定学习计划 上面也提到了这点,计划可能赶不上变化,也许今天正好有别的事情导致今天的计划没有完成,但是至少大方向是有的,你不会不知所措,不知道最近应该做什么,这才是计划的根本价值。所以,不要担心计划完不成,这是给你自己学,一天的计划完不成又能怎样呢? 自己找资料开始学习 请记住,不要当一个彻头彻尾的伸手党。因为轻易得到的东西你是不会珍惜的。并且,你不要祈祷你这一辈子所有学习需要的资料都有人会提供给你,自己找资料本身就是自学能力的一部分。当然,我并不是说不让大家去群里问,毕竟能问到也是一种本事,但是你一定要有自己的资料来源,无论是博客还是书或者是官方资料。 脑图与流程图 学习从来都不是只看看书就能学会的,自己构建相关知识脑图和相关步骤的流程图是非常有必要并且非常有效果的。比如你要学习java,你可以先从网上找一找别人画的脑图,对java有一个大致的了解,每学一个小的知识点,就自己绘制一个该知识点的脑图,学完之后,自己再画一个整个java体系的脑图,这样你会对java非常的熟悉。比如你学GC,光看书或者博客是很难记住那些流程的,这个时候,你自己画一个流程图,我保证你对这个过程会很清晰。记住:就算是有现成的图,你也应该自己画一个,自己画和看别人的是完全不同的两个层次。 编码 上面的那些,都是掌握理论知识的步骤,是骡子是马还得拉出来溜溜。编码才是重中之重,就算你能把一个知识点吹得天花乱坠,但是一句代码不会写依然没有什么用。 笔记 好记性不如烂笔头,学完的知识,然后记录下来,自己总结一遍,收获有多大你们试试就知道了。 回顾 如果你学的东西,很久都没用,突然有一天你又要捡起它,你会发现,你之前做的努力,太特么值了,你有资料!有脑图!有流程图!还有笔记!分分钟就记起来了。 自己写一个有实际应用的demo 如果有必要,可以写一个有趣的应用,不是简单的范例。
步骤大体上是这样,但是也千万别死板的都按照这个过程来,毕竟还是很耗时的。下面分享一些获取资料的途径。 4.2 获取资料的途径和一些工具。找资料的途径
一些工具
记笔记的一些工具
五、影响学习的几个因素5.1 自己的心态心态其实是很关键的。我们的周围总会发生一些事情,有的时候这些事情会影响到自己的情绪和心情。这个时候如果你自己调节能力比较差的话,就可能会什么都不想做,不想工作,不想学习。然后颓废好几天。 我想说的是,一个优秀的人一定得是一个乐观的人,不执着于得失,不轻易被影响,积极的去面对生活中所发生的一切。 5.2 外物的影响我主要说的是手机。现在手机已经成为人生活中不可或缺的东西了,它带给我们方便,但是同时,它也占据了我们大量的时间。我不知道大家平时会不会时不时的打开手机,大部分情况下它和之前毫无变化,但是你还是忍不住的打开它瞅几眼;或者有几个群在不停的闲聊,然后你也忍不住的参与进去,不知不觉时间就溜走了。 不要成为被手机支配的人,所以,当你工作或者学习的时候,把手机静音,放在一边,不去看它,这样你会节省出很多的时间。 除了手机,另一个外物的影响周围的环境。如果你能在一个嘈杂的环境中学习,那就很棒了,如果不能,记得给自己找一个舒适的学习环境。 六、其他想说的6.1 关于大学生的学习我知道,预定了这次分享的大部分其实都是学生,还有一些刚刚入学的新生。我想说的是,玩可以,但是一定要记得,你来上学是为了学习知识的,千万不要本末倒置了。我现在最后悔的一件事就是大一的时候没有好好得去学习,不要变成下一个我, 大学学计算机其实大部分时间还是得看你自己,老师上课讲的东西很重要,但是那些都是基础中的基础,凭借这些并不能够让你找到一份满意的工作,所以你还需要自己去学很多很多的东西。我简单的归纳了一下大学几年要做的事,你们可以参考一下(假设你以后的方向是 java )。 大一 这个时候,刚刚接触计算机,你可能什么都不懂,听课也是一脸懵逼,什么for循环,if语句,恶心的不得了。这个时候你要做的不是抱怨,而是去努力的寻找乐趣。因为你已经入了这个坑了,除非你转专业,否则你是摆脱不了它的。 怎么寻找乐趣呢?我觉得,编程最大的魅力,就是当你成功的时候的那种发自内心的成就感。不知道大家还记不记得第一次写 helloworld 的时候,各种出错------分号写成中文的了,大括号少了一个------但是最后终于成功的输出了结果的那种喜悦。 对于一个刚刚接触编程的人,我觉得,写游戏是最容易获得成就感的。这里给大家推荐一个之乎专栏--- 做游戏,学编程(C语言)。专栏的作者,通过让一些学生做游戏来学习c语言。我觉得这个一个很好的学习方式,即有挑战性,又可以培养出成就感。
但是,我要重点说的是。写游戏其实是一件很有挑战性的事。有的人也许会在一开始就陷入困境,不知道如何继续下去。这个时候,如果你能坚持下去,多问问老师,学长,百度,google,把问题解决,那你以后肯定会很优秀。如果你放弃了,不要灰心,因为并不是所有的人都适合通过游戏来培养兴趣,你也可以通过做一些acm的题来提高自己。每个学校应该都有相关的网站吧。如果没有的话,可以去浙大的看看。或者 leetcode 或者牛客网也可以 。做一些自己能力范围之内的题,也可以提高自己的兴趣。 当然,这些只是针对一部分同学,毕竟很多人其实对代码无感。。根本耐不下性子去写代码。对于这部分同学,我建议去学习html 和 css。因为它们入门超级简单,是用来写网页的。没有 c 语音那么复杂的逻辑,几个标签,几个css就可以设计出一个精美的网页,我想这也会很有成就感吧。 大一的这一年,是打基础,培养兴趣的一年。不需要你有多么大的成就,写出多么厉害的程序。只要你能够培养出兴趣,并且愿意在编程这条路上走下去,那么你的任务就算完成了。 所以,这一年,你要做的,就是培养兴趣,让自己爱上编程(最基本的要求)。 大二
写在前面:大二要做的,是拓宽你的广度!!!广度!! 首先,你要好好学 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 了。千万不要这样!不要成为各个领域的杂牌军,你现在要做的,是在一个方向有一些建树。 大四 去实习。 实习的话我能给的建议不多,虽然我的实习经历还蛮多的。但是毕竟不是混迹职场多年的人,就不乱说了。 找工作,待遇,环境挺重要的。但是我觉得,这个公司的技术栈,行业背景也是很重要的。我实习的三家公司是三个不同的行业,所以我知道,不同的行业差距还是很大的。有的公司招聘的时候会要求你在这个行业有过经验啥的。所以,行业背景还是有必要注意一下的。同时,为了自己为了的前途,一定要问清楚公司的技术栈! 当然:作为一个有抱负的人,毕业设计一定要向着优秀发展!并且依旧要不断提高自己的水平。这个时候,学什么可能得根据公司的需求来了,但是,永远不要停止学习!
6.2 一点感悟
|
|