我的朋友,其实计划写一篇文章给你已经很久了。
每次收到你的微信消息,我都很想多与你聊下。只是近来工作生活有些繁忙,再者,手机上聊天实在效率太低,我不确定能传达出我的真实想法。
坦白说,每次你给我说“理解有困难”,“像听天书一样”……我是十分能体会你的心情的,因为你现在所处的阶段我曾经也经历过,你现在正面临的困难我也遇到过。
也许你没有想到我会采用写文章的方式,但是,我认为也只有这样,才够清晰准确和效率,比打一个电话或是吃一顿饭来得实在多了。
你知道吗,比起学历、天分这些起步条件,事实上大部分时候我们更缺乏的是前行的信心和耐力。所以,这篇文章除了我一点粗浅的经验分享,更多的可能是我对于学习这件事的体会,希望能真正对你有用。
1
学习是一辈子的事情
我记得我们是在去年五月份认识的,因为一个兼职,有一段短暂的共事,那时候你了解到我的本职工作,谈到想要学习编程的想法,我以为是开玩笑的呢。
但是大概半年之前,你再次说起,想要自学java,想要转行,我不知道又过去的这半年你经历了什么,或许自学路上崎岖坎坷,或许彷徨无助过,或许经济来源给你带来不少束缚,不管怎样,你最终还是做出了决定,放下暂时的谋生手段,全身心投入到学习中来。
这让我感到有些意外——你比我想象的要努力。
我的朋友,其实,付费学习正是捡便宜,因为在学校你才有最新的学习资料和专业的老师,还有,一个良好的学习氛围。在一个靠谱的培训学校,你的学习才是高效的,是有及时反馈的,是能获取外界帮助的。
那些高速成长的牛人,都是擅长把钱用在投资自己的学习上的人,这才是所谓的会花钱。
从决定转行到现在,你进入学习也有一个月了吧,这段时间你断断续续也联系过我好几次,也开始问我学习上的具体问题了。
我大概也对你有了一些了解,有缘分认识,并且接触这么久,能感受到你内心那种对改变现状的渴望。
你知道自己的现状绝不是自己想要的,你相信通过努力,别人能做到的事你也能做到,你是一个肯吃苦也敢于吃苦的人,这一点在我与你短暂的共事过程中能看的出来。
无论你学历高地,无论你是否有学习编程的天赋,请你相信,那些都不是最重要的。要知道,职业生涯也好,人生也好,都是一场长跑,耐心和坚韧最重要;要知道,以普通人努力程度之低,根本轮不到拼天分。
我认为,学历只代表了一个人从幼年到成年这个阶段的一个总体结果呈现,而步入社会后,成年人的世界最本质的竞争在于他改变命运的决心和坚持不懈的耐力,不少名校毕业生起点很高,但没能意识到终身学习的重要性,反而在人生这场长跑中逐渐落后了。我们这代人注定是要在不断的学习中度过这一生的,前路漫漫,这样的学习和转行也不过是一个微不足道的起点罢了。
以我的亲身经历来讲,你现在的学习,虽然充满了困惑,甚至有时消化困难,但那都是由于你还处在入门这个初级阶段,等到有了更多的学习和代码量,回过头去重新理解一遍当初不解的知识点,就会豁然开朗。真相是,比起你现在感受到的困难,等到你正式开始用这个技能谋生时,真正的学习才刚刚开始。
2
保持耐心很重要
在这半年的学习中,一开始也许你会时常感到吃力甚至跟不上学习的进度,也许身边有一些基础好的或是科班毕业的学生,似乎学的很轻松,这或许就是你这半年的学习过程需要去接受的事实,但千万不要因此而气馁,更不要怀疑自己的学习能力。
我们要有信心,但同时也要客观认识到自己的短板,由于种种原因,比起那些基础好,学习能力又强的同学,过往的经历没有让我们养成像他们一样特别强的学习能力,这是事实,落后了就要加倍努力来补偿。
但同时我们也要明白,与别人比较实际也是一个坑,因为每个人的成长轨迹不尽相同,每个人所擅长的学习方式也不同,有的人一开始接受新的知识很快,可是把问题想的过于简单了,到后面反而没了耐心,有的人开始可能慢一些,但思考问题很深入,基础打得很扎实,越到后面越得心应手。有的人喜欢学的广而全,有的人更喜欢深入一个具体的领域。
所以,要与自己比,每天都在进步,这真真切切是最重要的。
3
“反人性”才是生存的秘诀
这当然不是仅仅靠着几句“鸡血”的话就能轻易做好的事,听着热血沸腾的口号,然后头脑发热,感觉充满了力量。结果第二天起床,又忘得九霄云外了,那可不行。
很大程度上,学习就是一件很反人性的事情,而且我要告诉你,编码是一项十分孤独的工作,代码的世界从来没有感情二字,你除了能new一个实例“对象”,就再也没有别的任何有生之物可以陪伴你的了,它需要的是严谨,逻辑,一丝不苟,更多时候,是冷酷和枯燥,甚至有时你会感到乏味,可是这些都是你要忍受的,直到有一天,你开始从中发现乐趣。。。
在刚开始接触它时,你不够了解它,因为它完全是你之前的学习工作中从未深入接触的事物,相对于现实世界来说,计算机的世界是抽象的,是构建在纯逻辑之上的虚拟世界。而这个世界,又是在互联网迅猛发展了几十年后演变出来的一个全新世界,它已经凝聚了多少天才程序员的天才思想和智慧,并且它还正在以更快的速度迭代着,进化着。所以,一个初学者,一下子接触那么多成熟的编程思想,很容易消化不良的。
你要做的不是一下子就理解透彻,甚至都没必要理解很到位,只要能先让代码跑起来,做出一个功能就好。
至于那些听起来高大上的编程思想和概念,也不是没有办法去领悟。因为,这个世界的底层逻辑和做事方法都是相通的。
也就是说在IT领域,大多数解决问题的办法,其实都能在实际生活中找到相似的例子,它们背后的本质道理是一样的,所以,老师授课过程中会举大量生活例子,通过打比方来帮助理解,这是一个很好的学习方法。
此外,对于同一个概念,初次的认识和后面逐渐的加深理解都是不一样的,一开始为了便于理解我们可以掌握的粗略一些,随着学习工作的深入,我们对同一个概念的认识就需要逐渐加深,甚至很可能与一开始有很大的不同。
所以,持续的学习和总结就显得尤为重要。如果只是完成工作,不去想尽办法挤时间学习,那就容易沦为工业社会的一颗螺丝钉,牺牲掉自己宝贵的青春时光。那些能在艰难的职场打拼中,在无情的岁月摧残后,脱颖而出的人,无一例外都是在工作之余还能保持学习节奏的狠角色。
4
下面我罗列一些对你这个阶段来说,可能更“干货”的东西。
这部分内容你可能当下觉得更有用处。
Java基础一定要打好,这是最重要的,很多工作了多年的程序员工作很熟练,但不见得基础扎实,但那所谓的熟练其实是在低水平重复,稍微有些棘手的bug就束手无策了。当然,java语言本身可也没那么简单,工作后也是要不断学习的。java作为典型的面向对象语言,类和对象的相关知识要重点掌握,可能一开始对于面相对象,面相接口这些概念的理解很模糊,也没关系,能把老师的代码背着写出来也算ok了。jvm是java技术栈中的重难点,学好了对于面试有很大的帮助。
JavaEE阶段,tomcat和数据库相关的知识,要花时间理解清楚,因为这是web项目的基础。同时,在这个阶段,可以开始学习linux系统的使用,要自己动手在linux环境搭建tomcat和数据库(mysql和oracle都可以),因为企业一般都不会用windows操作系统去部署服务器的。
sql的编写要多些多练,因为这在工作中会用的非常之多。另外,不少有些公司面试会在笔试环节专门考察sql的编写能力。
框架阶段,也就是经典的SSM架构(SSH用的非常少),要把重点放在spring和springmvc上,特别是前者,因为spring在江湖的地位实在不一般,甚至夸张点,对于java来说都已经成为了必不可少的组件了。
学完框架基本就可以胜任一般企业的大部分日常工作了,剩下的无非就是一些工作辅助软件的使用,比如版本管理svn和git,数据库可视化工具navicat,sql server,plsql等,持续集成工具Jenkins……
这些工具会使用就好,在有限的时间内没必要花大功夫。
然后就是更高阶一些的知识,对于找工作面试是很好的加分项。比如,分布式架构的知识,多线程高并发的掌握程度,消息队列(面试问的很多),数据库缓存redis的熟悉程度,非关系型数据库的了解,数据库的设计,分库分表等。
最后,如果能在学习的后两个月把对linux的使用熟悉起来,一定就是个很大的面试加分项,最好能学会写shell脚本。
以上就是我认为比较重点的知识和技能,也许你现阶段对于好多名词还很陌生,没关系,等你学到那时,再回过头来看这篇文章,多少能给你一些方向性的指导。我相当于提前把整体的攻略给你,这样你能少走很多弯路。
现在面试官问的知识范围很广,几个月的时间不可能学的面面俱到,要做到有重点学习和练习,然后尽可能多了解些技术名词,至于如何面试,那部分内容也挺多的,篇幅有限,本次就不展开了。
5
最后我总结一下,对于学习,特别是入门一个新的领域,有时候我们就是需要不求甚解,先学会使用,然后再不断的更新对它的理解和认知。试想,有哪个人学骑自行车是一定要先把牛顿力学理解透彻了才能学会的呢?
所以你现在有的种种困惑再正常不过了,有时候实在跟不上老师的课,也许你唯一能做的就是坚持,不放弃。
因为,路漫漫长,真正考验人性的还在后头。
读到这里,相信你看出来了,写了这么多,我并没有给你讲太多知识上的细节和学习技巧,原因很简单,我并不觉得给你讲懂一个具体的知识点这事儿值得我去专门写这篇文章,很少有人明白的是,一个人能走多远,真正起决定作用的是他的底层操作系统——情绪,或者叫做心智模式,那些所谓的小聪明小技能只不过是其底层系统在经年累月后的一个暂时呈现罢了。
加油吧,朋友。
咱们并肩奋斗,协同前行。
能与你分享,能给你解答问题,也是我提升自己的机会,学习中遇到的问题尽管问我,但最好能一次性描述清楚些,这样便省去了很多沟通时间。
其实,这哪里仅仅是转一次行这么简单的事呢?一次的成功,也会成为一个人生命当中通过努力超越自己的绝好体验,从此人的内心会开始坚信,原来呀,咱也可以做到坚持不懈,也可以搞懂之前所恐惧的复杂知识,也可以做到短时间内学会一个全新的技能,然后不断重复这个自我预言,形成正循环,一次次地,人便会越发强大起来。
如此这般,才终究成为了曾经内心深处那个想做却不敢相信自己本可以做到的自己。
以此共勉,我的朋友。