一个菜鸟的迷茫
自学了四个月的java,觉得基础都掌握了,可是写一个贪吃蛇的小游戏还是不行(倒是可以读懂的),觉得自己挺笨的,我和对别人说我完全自学没有去什么培训学校学习过,他们有的说自学是在浪费时间,下一步要学什么,怎么学,我真的迷茫了,感觉就像是遇到了一个瓶颈,我该怎么办呢?我大三了,学的是化学,和编程完全不沾边,所以基础不好,还有一年多的时间,我真的不知道自己的选择对不对,但是我真的喜欢干这个。现在我应怎么学?怎么才能进一步的提高自己???求各位已经过来的大侠们给点建议。。。。。。
[解决办法]
楼主安好?稍稍纠正一下你的错误?你没有一年多的时间,一年多是你毕业的时间,但不是你找工作的时间,因为你在大四上学期的时候就要去找工作,很多宣讲会招聘会嘛,所以给你留下的时间不多了,抓紧时间吧!
其实我也是非计算机专业的,但有些特殊,和计算机稍稍沾一些边,所以有些基础课,正是这些基础课让我学写了初级知识。现在大四在实习,和你分享一下我的个人经历吧。
大三时我学习最刻苦最勤奋的一年,在这一年里我真的学习到了很多。首先不知道楼主的水平如何,我在大三寒假之前也不咋地,因为大三上学期开了java选修课,我得了99分,真的很开心,并且也因此也让我知道了我的能力。在上学期,因为学习了数据库,计算机网络,所以在寒假之前我自己做了一个简易的Swing学生信息管理系统,数据库一直在用MySQL,也没什么,真的很简单,这个时候我的数据结构都没啥长进。这就是我大三上学期的情况。
在大三下学期,我学习更加疯狂了,根据老师的建议,我开始学习SSH,JSP、Servlet啥的真的很简单,没什么好说的,随便看看就行了,重点是SSH,那个时候没人指导,所以啊就是到图书馆去借书看,渐渐地了解到Java世界的复杂,它的体系太庞大了!它有很多的应用方向,WebService有好多框架,MVC有好多框架,DB有好多框架,太多的应用了,但是那个时候太着迷了,真的一本一本的去看,当然做个J2EE,还得去学JS的框架,如jQuery、Ext等,我选择的是Ext,在大三学习结束的时候我用SSH + Ext又做了个学生信息管理系统,不要问我为什么做这个,说实话表就一个,没啥复杂的逻辑,简单嘛。学习结束之前还投了个简历,面试的时候被华丽丽的鄙视了。。。
大三的课程是结束了,但是我的重头戏却还没有开始,我真正进步是在大三的暑假,我在学校呆了整整一个暑假,和考研的同学们在一起学习,想想,真的很充实,挺开心的。因为有大量的时间,我开始对软件工程(不单纯是Java了)进行深入的学习,从名著《重构-改善既有代码的质量》,这本书真的很棒!如果你之前代码够多的话,你看了这本书有种超脱的感觉,强烈推荐!《代码整洁之道》、《Design Pattern》(这本书超有趣),设计模式真的不是一朝一夕就会的,还是要大量的代码积累,另外还看了了单元测试的两本书,一本的Kent Beck的,另外一本是不记得了,反正看完之后对测试有了一个完全崭新的认识,同时也学习了几个测试的框架,如jMock、EasyMock,真的很不错的!当然Ant + JUnit就更好了。数据结构也是很是踏实的学习了一个礼拜,用的是一本外国教材,挺不错的,我就跟着书本的介绍一个一个的学习,并且亲自敲到了电脑里,所以学习完之后对数据结构真的是很熟悉了。当然这其中还有些常用算法。最暑假结束之前,我还是用SSH + Ext做了一个任务管理系统,并且昨晚之后完完整整的重构了一下,总代码大概3万行,这个时候我觉得自己真的不一样了,焕然一新!
大四开学,也没闲着继续学习,只不过学习的更加深入了,对以前没有在意的方面进行深入的学习。首先是数据结构,前面说过我根据教材自学了数据结构,这个时候我就直接看java.util包下的java源代码了,从ArrayList到HashMap,一行一行的看,并且做记录,看了一个礼拜,有些累5000行的代码,一天都看不完一个,尼玛!然后是Java的并发编程,以前不知道,Java的并发真的很赞!其次是socket,也就是网络编程了,其实网络编程还是挺有趣的,我学习完之后做了一个ftp资源管理工具,发现apache的commons包里有ftp工具类,之前学的socket没啥用了,哈哈。当然学了Spring之后还是对Spring非常敬仰的,所以又花了一段时间去看Spring的核心源代码,是跟着书本看的,啊,看Spring源代码是在比较前了,所以看的时候那叫一个生不如死啊,但是还是硬着头皮看完了那本书,虽然不敢说学到了什么高科技,但对Spring的原理有了一个比较深入的认识,对Web MVC和数据库框架都有了比较深入的认识了,总体来行。
大四了嘛,该找工作了,其实我找工作也很简单,前前后后就三家,因为我的基础知识很扎实,所以一面和笔试全部通过了。也分享一下我的找工作经历吧。10月之后宣讲会全面展开,第一家是他们的一个项目组长之类的人面试我的,它完全是问我简历里面写的,但是也算我说该,自己不行吧,很多知识毕竟没基础到,最印象深刻的是他问我ArrayList的初始容量是多少,增容策略是什么?那一刻我蒙了,“精通数据结构”成了屁话。回去之后也是蹲了三个礼拜吧,做的工作也就是我上面一段说的。接下来就到了11月份,很幸运,我和HR聊的很开心,那个技术面问我的也是一些基础的知识,尤其是测试方面的知识,11月中旬也是拿到了那个offer,并且签了。拿到offer之后信心暴增,又拿了一个offer,不要问我为什么还去面试,干技术的拿一个offer能拿得出手么?拿到offer之后清闲的过来一个月享受大学生涯,现在在实习,公司的环境很好,做虚拟化和性能监控方面的,SSH完全用不着,反而我另外学的并发、socket用的更多了,所以啊,多学点吧,总会用的着的。
一直以来一直没有总结,现在就总结一下吧,干技术的技术一定要过关,要是不会的话就赶紧去学吧,有一段压力大的时候晚上2点多睡觉,用12点到2点这段时间学了Lucenue。第二我觉得如果你觉得还没有准备好的话就不要轻易亮剑,毕竟面试不过的话会很伤自信心的。第三要大力提升自己的学习能力和外语水平。为了找工作我是考了计算机四级网工,软考,ACM也去拿个奖(校级),简历里面也好看嘛,最主要的综合测评还能加分,正是凭借着这些证书啥的,我也是如愿以偿的拿到了奖学金。往事历历在目,犹如昨天一样,我算是成功的进入了这个行业,虽然不知道你如何,祝你好运,能找到一个自己喜欢满意的工作!