最近有粉丝私信我,想要问问我是如何学习的,还有在学习中遇到的一些问题,我自己也想了想,学习了这么几年,走过了不少的路,踩过了不少的坑,总算是对这个行业有了一定的了解,想要通过此文帮助一下在技术学习中迷茫的各位朋友,以下言论均代表我本人的立场,仅供参考。
对于很多人都有疑惑的一大问题,我到底要不要去培训班学习?对于这个问题,我觉得需要分为以下几个阶段,看你处在哪一个阶段,根据阶段再来考虑:
(1)阶段一:对于专科生的建议,如果你正处于大一到大二期间,我个人建议自学技术或者专接本,如果你到了要实习的大三,自我感觉,在学校这两年学到的知识包括自学不能达到就业水平,这个时候,我觉得培训班对你很有帮助。
(2)阶段二:对于本科生的建议,如果你正处于大一到大三期间,我个人建议自学技术或者本考研,如果你到了要实习的大四,自我感觉,在学校这三年学到的知识包括自学不能达到就业水平,这个时候,我觉得培训班对你很有帮助。
(3)阶段三:对于跨专业的朋友,我说的这种情况,一般就是对于毕业以后的大学生,自己本专业找工作不是很顺畅,而又看中了计算机行业的高薪和好找工作,我的优先建议就是去培训班学习,可能对你会有很大的帮助。
在这里不对专接本、本考研做过多的评价,自学技术的前提是,你还是要正常学习学校的课程,利用课余时间来自学,对于专科的同学,可能你们学校所学的更多的就是一些框架技术,实操部分会多一些;对于本科的同学,可能你们学校所学的更多的就是一些底层原理,理论部分会更多一些;无论是实操还是理论,希望大家都要好好学习,如果老师讲的你学不明白,你就应该提早打算,选一门网课,面向哔哩哔哩,开始这门课程的自学了。
如果你打算去培训班,我个人建议你选择一些比较知名的大机构去培训,比较有保证。在学习的早期,我也是跟着某马就业班的课程一点一点自学的,可以这么说,早期我的知识体系,完完全全就是跟着培训班走的。
现在,哔哩哔哩上面有很多热心的网友,还有一些培训机构会把自己的培训视频上传上去,完全足够你自学用的了,如果你把握好在学校的这几年,利用课余时间,课余时间应该还是很多的,相信你,会有一定的成就的。
不仅如此,像某马,某谷,在自己的官网都有成体系的学习视频可以免费领取,但是那些视频就是放在那,又有多少人能够真正看完的,如果你能坚持看完,别的不说,就业肯定是没有问题的,下边就是各个培训机构的视频下载地址,如果你不能忍受百度云的下载速度慢,你还可以面向哔哩哔哩学习。
说到这里,我相信大家也有了一点感觉,培训班的视频,网上都有,更新很快,如果你纯粹是为了自我安慰,说是去上一个培训班,心里就能好受,那我也没得说的,到了培训班你要学习的还是那些东西,有免费的不用,非要掏钱去求个心理安慰,到底值不值,只有自己心里知道。
我不是说上培训班不好,有的同学,自制力可能会有点差,对于学习技术的热情不是很持续,但是,毕业以后还是想要从事本专业的工作,我觉得培训班是你的不二之选,因为到了培训班,老师都是从零开始教学,对你来说,可能又是一次重获新生的机会,如果你能把握住,相信未来还是可期的。
总结:能够自学的一定要自学,技术不扎实、自制力又差的、还想从事本专业的,去上培训班可能是你最好的选择。
那么,对于一门技术,我该怎么学习才能够算是学会、学懂、学通?
我先说说的经历,我记得当初我学习某马的基础班+就业班,一共100多个G的视频资料,我都看完了,当然了,学习的时间也是很长的,陆陆续续看了一年多,当时我学习的那一套,还在学SSH,SSM都属于新的技术,我当时的学习方式就是看视频学习,不仅如此,还喜欢开着倍速看,看完视频以后,就照着老师的代码敲,不想敲的就直接复制粘贴老师的代码,整体学下来,我有一个什么感觉,就是整体要学习的东西我都知道是什么了,能做出来点东西吗?还真能,忘了就去看以前的代码,但是,我很慌,没错,就是慌,我发现我好像什么也不会,我相信很多人都会有这种感觉,明明自己学了一门技术,但是发现好像自己什么也没记住,这就是我那一阶段的一个心理状态。这种心态带来的最大的问题就是,你又开始从头开始学习,按照之前的学习方式,又学了一遍,可到头来,好像跟之前没什么区别,好像还是啥也不会,我把这种学习方式总结为:一种自我性欺骗性的学习,纯粹是为了让自己感觉到我学过,至于有没有真正学到知识,鬼知道。
在那个阶段,我还非常信奉培训班的学习视频就是技术的最前沿,就是最好的,甚至最可笑的是,学了一门技术,我连这门技术的官网都没见到过。那我从什么时候开始转变的,在平时的学校生活中,因为老师上课讲的知识,我很多都自学过,所以,那些没学过上课又没听懂的同学就来问我,我就帮他们解答,可是渐渐的,我发现,同一个问题7、8个人来问,我就得回答7、8遍,我也扛不住啊,慢慢的,我就开始再给第一个人讲课的时候录制下来,其他人要是同样的问题,我就给他发视频,有时候,快最后考试的时候,我也会给大家录制一些备考视频,在准备的过程中,我就逐渐发现,一个知识或者一门技术的学习,都是有因果关系的,他一定是要解决一个问题才诞生的,而你要将这门技术讲给别人,你就得知道前因后果,你为什么要学习这门技术,学了这门技术能解决什么问题,要学习这门技术都需要哪些基础知识等等,涉及到的东西很多,我也记不住啊,那咋办?
我就开始尝试写笔记,准备讲课大纲,自己以老师的角度思考问题,如果我是老师,我要教给同学知识,我应该怎么给他讲他才能学会,应该先从哪里开始讲,为什么要从这里开始讲,以前,我只是听别人讲,别人怎么说,我就怎么做,我没有很深入的去了解过这个事情,现在,我开始亲身经历讲课这个事情,我才发现,老师上课讲的一句话,可能背地里,他需要很多知识的支撑,但是这些东西,老师是不可能都讲给你的,需要你自己来学习,我想,这可能就是师傅领进门,修行靠个人吧。
通过这种教学式的学习,我也开始接触各种技术的官网,参考官网文档,我逐渐的明白了,培训班讲的那些东西,往往都是把你领进门,讲的都不深入,都不全面,演变到现在,我的一种学习方式就是,集百家之所长,结合该技术的官方文档,自己以老师的角度,写出一份对该技术理解的笔记,如果你真能做到,相信技术学习对你来说不再是问题,而且,随着技术知识的积累,你就会发现,很多东西都是相通的,这个学会了,可能另外一个也就会了。
往往技术的官网才是一手资料,如果你还没有阅读技术官网的能力,我建议你,先看视频学习,对该技术有了一定的认识,再结合官网学习,相信才能事半功倍。
总结:不要一昧的看视频,也不要一昧的按下头敲代码,实操只能加深你对这个知识的熟练程度,但是,给不了你知识的深度,要善于思考,转变学习的角色,由我是学生转变为我是老师,代码是你的最终成品,而不是你的思考过程,你的思考过程应该由笔记记录下来,忘了可以随时翻阅,避免陷入自我欺骗性学习的死循环中。
我是从SSH那个时代过来的,经历了SSM、分布式、微服务,短短数十年,互联网技术发展如此迅速,各种技术框架层出不穷,知识体系的迭代也越来越快,框架高度智能化的发展,让我一度怀疑程序员会不会在有一天也能被程序所替代掉。由此,就会产生一个问题,那些老旧的技术,我们到底还学不学?
我觉得这个问题也应该分为不同的情况,对于那些确实已经过时的技术,就没必要学了,比如:Struts2,即使是老项目,那用的也很少,而且对你以后的技术发展也起不到什么帮助性的作用;如果你今后学习的技术是在以前的技术上发展出来的,我觉得还是很有必要学的,比如:原生JDBC编程,这个应该可以说算是必备的,即使你不学习直接学习JdbcTemplate,也不影响你什么,但是你学了原生Jdbc编程对你今后学JdbcTemplate在理解上会很有帮助,这种你就要学;还有一种,你不说,我不问,大家默认都知道的行业共识,比如:Jquery,现在出去面试,谁去面你Jquery,就那前端三大框架就够你受的了,但是,在面试官眼里,这就跟小学的1+1一样,不说,你也应该会的,所以,聪明的你懂了吗。
总结:不是所有旧的技术就不用学,要看你学完这个旧的技术,对你今后学习新的技术到底有没有帮助,有帮助就学,没有帮助就不用学,大家默认都会的东西,不说你也应该懂。
现在技术,越发展,越好用,程序员所写的代码就越少,可是无论怎么发展,核心是不变的,天下代码一大抄,就看你会抄不会抄,同样的,框架也是如此,你借鉴我,我借鉴你,你出来个新东西,我看着挺好,整合,他出来个新东西,我看着挺好,整好,这种框架的典型就是Spring
,啥好东西都整合,可是他的核心没有变过,你只有真正掌握了他的核心,无论他在整合啥,随便,不就那回事。说白了,学习源码就是帮你减轻学习负担,你要是不学,可就不好说了。
另外,我再举个例子,在团队开发过程中,往往是需要多人合作开发的,今天你的代码正常能跑通,明天一觉起来,发现代码再跑怎么也跑不起来了,可是你都没动他,他咋挂了呢,就这个问题,就会给你整的怀疑人生,一天过去了,两天过去了,…,一周过去了,都解决不了,百思不得其解,最终从入行到跑路,实际上,可能造成这个问题的原因可能就是你同事的一段配置或者一个注解,影响了代码的运行,如果你不懂源码或者运行机制,可能你一辈子都找不出问题所在,对于那些经验丰富的老程序员可能一眼就看到了问题的本质,这就是学习源码的重要性,现在总说,企业面试造火箭,工作拧螺丝,可真的不进行源码理论的面试,直接让你去火箭上拧螺丝,你真的敢拧吗?
我们再退一步来说,现在企业总是讲什么私人定制,框架的最大好处就是使用简单,什么都给你封装好了,你看那些框架开发的应用都长一个样,要是来个需求,让你改一个样式,你改都不知道怎么改的。我们都知道CAS
单点登录,默认有登录退出的界面,而且,他不像Spring Security
有那么多的配置可以选择,你要是想要定制登录退出页面也得需要知道他的底层流程才能改,要不然,可真就两眼一摸黑了。
总结:新手不建议一上来就手撕源码,可能会打击学习兴趣,先把工具或者框架用熟练,然后在啃下框架源码这根大骨头。