从很久之前接触编程也陆陆续续过了六七年。但是在大学之前一直没有得到系统的去学习编程的机会。在这之前仅仅接触过一点点的Java和VB。原因无非很简单,想写个Minecraft的Mod,或者是做一个可视的小程序。最早接触的是易语言,当时想写外挂,2333。不过外挂其实用易语言做的外挂主要还是靠大佬的写好的库(这些库很可能是C/C++写的)去写,自己从0开始写起,要对整个系统的工作原理非常了解,包括汇编语言、Windows核心编程,然后去学习如何操纵内存。光会操纵内存也只能写出单机游戏挂,如果想要写出网游挂,那还得对TCP/IP的原理有了解。说着扯远了。其实学习的原因单纯就是想做出那种看起来很厉害的东西出来,虽然最后却歪到后端路线上去了吧233
进入大学之后,必然是一开始是要学C。毕竟之前有过一点点java基础,因此上手还是比较迅速的。随后很快去参加了西二的考核,然而因为对面向对象的理解几乎没有,所以在前几轮就寄了。然后到大二选择再来一次吧。这时候已经学过C++,理解面向对象大概是怎么运作的了,也开始接触数据结构了,就知道Java里那些List啊 Map啊到底是什么原理 怎么工作的了。从这时候开始才渐渐走上了正轨,后面就接触Spring之类的框架,还有maven之类的管理软件,git的使用等等基础知识,也开始了解后端常用的数据库啊、Linux的配置啊命令什么的。只能说学校那些课程的学习还是很重要的,如果之前就没接触过面向对象,一上来就要去写出一个像样的东西来,需要付出非常多倍的努力,也会走很多很多的弯路。说来也十分惭愧,尽管接触一些语言特别早,学习能力却不一定比得过后来开始学习的人。然后就是对算法的了解其实一直都不是很深刻,这点让我一直觉得很可惜。
培训班这种东西,其实还是挺好的吧。确实短时间内让我掌握了很多很实用的知识,因为他们写出来的,教给你的,都是直接能跑的,立竿见影看出效果的,也几乎是企业最常用的。反正开的最多的基本就是Java班啊什么的热门语言,这种语言上手比较快,一般新手也不会写出什么特别风险的东西出来(对比C和C++),因为很多细节实际上JVM什么的帮你做了。实话说,我很多Java的学习经验,都是跟着这些培训班的网课学习的。其实在学校里学有余力,跟着培训班学习也挺不错的。基础课程固然很重要, 比如我上面提到的数据结构的学习啊什么的,培训班基本不可能给你讲这个。包括什么TCP的原理啊什么的培训班一般也不会和你讲,可能会知其然,不知其所以然吧。但我觉得如果未来工作的话,如果只是普通的码农或者CRUD程序员什么的,那确实培训班教的基本就差不多了。可是如果要深入的话,不了解操作系统,不了解编译原理,不了解汇编,不了解数据结构,作深入的时候就非常难以理解,不能理解源代码为什么要这样写,不知道程序运行过程之中究竟发生了什么,内存的变化啊,堆栈的变化什么的可能就不太了解。那么就会非常被动就是了。还有就是不少企业面试造火箭,实际工作搬砖。造火箭的知识,往往就是校园教授的知识。也不能说这些知识没有用,毕竟未来如果升入更高的职位,这些知识是必要的,至少这些知识中蕴含的思想,举例来说,一些算法中涉及到的分治啊、贪心啊之类的思想,是对工作大有裨益的,这些是无形之中影响着代码的质量的。综合来说,建议学有余力的,可以看看这些培训班的课程,可以做出很多好玩的东西来,也对未来的工作啊学习挺有帮助的,但是学校的部分不能放,要不大学也没必要开设计算机专业了,以后大家都去培训班培训不就好了么?
未来嘛...也没什么好说的。考研这种东西,说实话挺难的,但是考的人也挺多,上岸的人也不少。不过我个人的意愿不是很强烈,因为我对自己的自制力还是比较清楚的,如果考研一年中没有全力以赴导致失败,也是一件比较可惜的事情。研究生之后,也难免会碰到一些不咋样的导师,导致三年生活就变得很难过。不过有能力还是尽量往上走,想深入这个领域的尖端,研究生是必经之路吧。
未来应该就是持续学习新的技术,像后端其实有很多技术,各种分布式的服务啊什么的,都大有学问。还有就是Python与人工智能的结合什么的。未来对前端也会开始了解,毕竟目前前端目前技术上暂时还是比较丰富,未来什么技术会脱颖而出还不好说,不像Java这边基本Spring一统天下。面对未来的各种挑战,应当还是提前做好应对的准备,努力做好自己未来的规划,学习既定的技术路线,参加各种实战丰富自己的经验吧。