转自:http://blog.csdn.net/qq_23377055/article/details/51051286
作者:千里孤狼
高考毕业填报志愿,自己一个人独自就决定了接下来大学四年要读的专业-----软件专业。
大一,在学院的教学安排下,以C++语言为起点,开始了编程。没有传说中的梦见神仙后的一路开挂,也没有一塌糊涂,只是很平淡,比白开水还淡。可能是那个黑框框实在激不起我的斗志吧,没什么玩的。当时想做个有界面的东西,想做个小游戏,发现C++真麻烦,一点也不适合。曾听高年级的学生和一些老师说,C++只是用来入门的,学院不打算教授很深的知识,这门语言差不多是编程语言的鼻祖了,上古时代的神话存在。这下好了,又找到了可以偷懒的理由了,就更加对自己放松了要求。这个门当时还不知道进没进去呢,老天爷可能知道吧。
大二,开始学习如日中天的java。老师说java是面向对象的编程语言,面向对象是个什么鬼。还在当初学习C++学习了点面向对象的皮毛知识,当时也是费了我九牛二虎之力才弄懂了一点点,可能还真不是这块料啊。管他这么多,来都来了,不认真一把,怎么知道不行呢?就开始了学习java的基本类型、IO、集合、线程、UI,学了一年这些东西都涉及到了,不过好像不是很懂啊。老师说java是开源的,开源又是个什么玩意,真心不懂啊。说实话,我是慢慢领悟接触琢磨,到了大三才搞懂了开源的真正意思。java开源就是我按住Ctrl键+鼠标左键点击Arrays类,就可以进去看看这些java大牛的黑盒子到底装的是什么玩意。这个时候还没接触java web,就用java玩玩有趣一点的UI程序,界面真丑啊。结合迪杰斯特拉的最短路径算法,写了个找出最短路径的小程序。这个时候,java真好用啊,API真丰富,想要的基础功能基本都有,比如排序、集合等,用起来还是很爽的。之前老是听说某某在大学写了几万行代码很牛,嘿嘿,看我用java吊打你。这个时候开始建立起了软件工程的意识,编码需要严谨,程序设计要合理,组织不会混乱。游玩于各大编程网站论坛,也不知道有没有用,反正就是看,先塞到大脑再说。慢慢发现,尼玛的,java原来是做web程序的,那之前搞的界面程序不是浪费精力么? 既然是工程,学院就开始教授软件工程领域的工程流程:需求分析、系统设计、编码实现、软件测试,还有操作系统、计算机网络、计算机组成原理、算法和数据结构。课程挺多的,每天基本都满课。说实话,我也没怎么认真学,学了个大概,断断续续的。出来混,总是要还的。
大三,java web来了。这下总算激起了我的兴趣了,开始认真学了。先从jsp、servlet入手,html、java杂乱其中,真心乱,不忍写啊。spring、struts、hibernate来了,好了,不用太费劲,就可以搭起一个小网站了。有自信了,就开始认真去研究以前java不太懂的地方,追本溯源,更喜欢去看源码深层次解读其内在原理,这个感觉爽啊,犹如在黑屋子待久了终于看见了阳光。万事开头难,源码也挺不容易看懂。义无反顾,一步步看下去,总会有开悟的时候。java web的知识点太多了,我只能先好好用了,原理性的东西只能等后头慢慢研究了。框架就是节省时间的,屏蔽了底层细节,又是一个需要我去研究的盒子。
大四,没课。该出去了,到企业经历真实的java商业开发。人家不用ssh,而是ssm。好了,自学吧。有些公司说hibernate不好,太死了,mybatis很灵活好用,管理方便。struts太老了,很久都更新的,还不如用springmvc好,与spring天然集成无冲突。maven来了,发觉以前下载jar的包到工程很low有木有,给个maven依赖描述,人家自己给你下载好了导入了classpath。回不去了,爱上ssm+maven+git的项目架构,开发很方便。在工作中慢慢发觉自己的不足,原理性、底层的知识掌握欠缺,解决问题不能深入底层内部。于是开始了学习,谁说大学读完了就不用学的。java和很多Java框架都是开源的,给刨根问底提供了可能。遇到问题多看看控制台、日志的打印记录,英语要学好,各种编程术语要掌握。疑惑之处多看源码,大牛为什么这么解决呢。java是在jvm之上才能运行的,jvm不可不了解。java程序编译为字节码后,jvm是怎么解释执行的?做了哪些优化?内存是如何分配的?把《深入理解java虚拟机》看了一遍,大呼过瘾,真爽啊,好像现在又快忘了,看来又要看一遍。一直都是在用mysql数据库,可是居然不知道怎么做简单的sql调优。看了下《高性能MySQL》,学习了一些sql优化技巧、创建数据库的小窍门,就酱紫了,日后还是需要深入学习啊。 真诚推荐一款java IDE的Intellij IDEA,java编程的利器,用了它你就不会想用eclipse、myeclipse了。它有很多优秀的插件,把第三方工具集成在里面了,比如maven、git,纯黑背景对程序员的眼睛很好。
工作时,遇到很多不懂问题、技术,会很认真、高效去解决问题和学习新技术知识,而平时在学校没有压力,时间宽裕,反倒学习效率低,在学校需要一个月才能掌握的知识换作在工作时一个星期就足够了。我还是一个比较喜欢在高度压力下工作的人,促使自己必须尽快高效去解决面对的问题和学习未知的知识,这种感觉很爽啊。大学学了不少东西,前段时期迷茫不知目标,后期认识清醒找准方向。个人比较喜欢新鲜事物,在做项目喜欢采用新技术、新框架,追求开发效率的提高、项目满满逼格的自豪。追逐太多了封装底层的框架,忘记了去探寻其实现的原理性东西。所以现在在慢慢冷静下来,耐心研究底层基础原理。编码注意质量控制、细节把控,力求写出高质量的代码。早点明白就好了,BAT拒之于门外,怪我喽
编码是一门艺术,不仅仅是糊口养家的工作,是需要匠心的。