自学java的困惑

 最近学java 学的有点徬徨,做为一个在校学生,很难把java ee框架里的东西都学的很好,要么学的东西比较少,要么博而不纯,在学了六个月的时间里学了javase jsp/servlet struts hibernate mysql spring 后,准备学把原本没看完的ejb再看看,接着学oracle,weblogic,jboss……原本觉得 这样的路应该是正确的,可是看了几天的招聘信息,大多企业招javaee的都要二到五年的工作经验,不要工作经验的,看了看需要的是熟悉java 核心基础 最多多加一个jsp/servlet 我开始怀疑我学这么多的东西却连javase的东西都不敢说熟练是不是真的有必要? 转一贴,愿与我有同样困惑的人共勉。
以下为转贴:《我对java的看法》

   本人做软件开发大概有6年多了,从事JAVA开发大概4年多,一直在上海.现在我在网上总是看到大家在讨论什么架构比什么架构好,什么技术比什么技术强.对这个我想谈谈我的几点看法.
第一、我觉得谈架构是需要有资格的。如果你THINK JAVA或JAVA核心技术这两本书还有很多你不能理解 那么你最好先把其中的一本看个滚瓜烂熟,再去看其他技术。你SERVLET用得很熟练了么?如果没有,那么strust你应该先停下来。如果JDBC还不熟,(我的意思是至少你要知道它是总样工作,总样能提高对数据库操作的效率,不是只会调简单的调一ST对象,写一句简单的SQL)就没有必要去讨论Hibernate之类。当然你可能在工作时候正好用到我说的hibernate,strust。不过你还是不应该把时间放到这个上面,因为工作中用到它们的地方不是很多。还是应该先把基础打好。Hibernate,strust这样的东西能给你工作带来很大的方便,但是你去学习它的应该是他的原理和为什么要这么做,而不是简单的学习怎么用。我以前是SERVLETS程序员,三年前第一次拿到STRUST我好象马上就会用。那些标签库我估计我也能写出来 只不过可能考虑不到那么全。
  如果你是刚开始找工作的,我觉得你只需要简单的会一点STRUSTS就可以,把主要精力放到JAVA基础,JSP,SERVLET上 然后JDBC看点,没有公司会对一个新人有太高要求,因为它不会给你很高工资的。不同工资的人做不同事情的。如果公司要采用什么架构也不需要你来做的,有更高工资和更多经验的人会来做这个事情的。你要做的事情不会很多,而且只要你态度好,即使有什么不会也有人会教你的。而面试的时候问得多的也是JAVA基础 JSP SERVLET这些东西,其他的象SPRING,Hibernate你完全可以直接说你没有用过。不是每个公司全部采用这些的,关键还是基础。基础好学什么也容易。所以为什么说面试最关键的是你现在会什么,而是你要让人知道你以后会什么。
第二、我觉得你应该考虑你是为什么学习软件的。我比较俗气,我是为了更好的待遇才学习软件的。我以前是VB程序员,为什么要学习JAVA,我就因为当时认为JAVA有钱途(本人绝对没有说VB没有钱途的意思,只要你厉害是一样的,我的意思是平行对比,一个不怎么厉害的JAVA程序员就可以拿到够高的工资,前几年确实是这样的)本人现在在一家民营企业上班,待遇是10K/月实在惭愧的是工作了这么多年外语还是很烂,如果外语很好,我估计工资提高一半应该是没有问题的。
和我同时来上海 同时进同一个公司的的同事现在一般是年薪200K,他们的优势在于外语。在上海一般工作3年的JAVA程序员的待遇应该在6K/月,5年以上应该年薪100K是没有问题的,这个待遇不是只外语很好的人,也不是指特别厉害的人我说的只是大众化 正常化的(外语可以是日语和英语不要说学日语是汉*,这只能说明你浅薄)如果你现在的待遇还达不到我说的,那么你应该把时间放到找工作的技巧上。而不是在这里讨论没有意义的技术,只有工资上去了其他的才会上去,一个程序员是很难接触到系统分析和架构的,而一个系统分析员和系统架构师工资也很低的公司明显不是你要呆的地方。
  我可以很明确的说,我说的工资待遇不是乱说的,本人找10K/月的工作只需要一个星期就能搞定,而3年前找6K/月的也是如此。我就是在51JOB投的简历。(我记得我找工作是星期五投的简历,到下星期三的时候面试已经排到下下星期五了,一天安排两份面试,所以说找个工作绝对不难),而且我的水平也不好,现在还在看THINK JAVA。(说出来有点不好意思)我身边的程序员也基本能拿到我上面说的水平,而且这个水平在上海是中等偏低的。如果你找不到,那么就是你能力和找工作技巧有问题。
  第三、当你基础也很好,待遇也满意的时候,那么你就要考虑你自己的职业前景了,所以什么技术好,什么技术差对你不重要了。技术只是一部分,还有很多其他的东西也很重要。
  我现在研究SOA方面的东西,JAVA方面我可能更看重EJB一点,我用过SPRING一年多点,觉得也不错。不过我可能想进大的公司,所以更看重EJB一些。一般大公司面试不太会问SPRING,可是问EJB的可能性很大的。特别是事务处理方面的东西。
  我强烈建议做为一个程序员,无乱花多大的代价也应该把你的外语搞上去,我指的是可以直接和国外客户进行交流,如果你现在在做日本项目那么就把日语搞上去,如果你现在不是做日本项目,那么我觉得你应该直接把英语搞上去。外语好待遇高是一回事情,同样职业前景也会更好。以后做欧美的项目会越来越多的。我希望所有做JAVA的人都能找到一份好的工作,也希望你们的技术水平越来越高。
  本人只是谈谈自己的看法,如果你觉得和你的看法不同,就当作没有看过,不要口吐脏话。我的观点只代表我自己,没有要强加给其他人的意思。我们很多在上海程序员应该是从外地过来的,生活压力很大,我只是希望大家能生活得更好,活得更开心。

你应该把时间放在基础与思想上,有了好的基础说明你的硬功夫不错,学习其它的东东就不成问题了.有了好的思想(包阔oo思想,design pattern,DDD,哲学等)说明你的大局关不错,就可以在全局上考虑问题了.还是把有限的时间放在有创造力的地方吧,比较好,反正我是这么学的,你什么都学的话,你的精力也不够.不能把精力集中!只是我的个人关点啊!
ps:java我也是在大四学的!

程序不是学出来的,是写出来的.理解OO、设计、分层的重要性也不是看书就能理解的,有条件的话去找一个结构糟糕的应用,例如使用Struts,大部分Action的代码超过了一页的时候。你会发现维护它还不如自己重写一个,那时候你就会明白OO、设计、分层的重要性。

先感谢楼上两位。
本来还准备把没看了一半的 精通ejb3.0 看完,现在我决定先放一放,因为我觉得可能真的当我还没有经验的时候,公司应该不会让我去做一个ejb开发的
决定把以前学的东西整理一下,并看点设计模式之类的,然后就去找单位先实习了,呵,希望能找的到。

个人认为,计算机基础和思想最重要。计算机基础指的是数据机构、算法;而思想就是设计模式得思想。lz不要看到现在流行什么学什么,切忌浮躁。如果对Java感兴趣,J2SE的基础和API必须很熟练。至于现在流行的框架,如何用并不难,关键是理解其核心思想(为什么和怎么实现)。

个人比较赞同wusuosuo的观点,学习也要从大局把握。我们要学的是怎么做软件,而java只是一种做软件所使用的语言工具,所以我们要学的是做软件的思想,如oo思想,设计模式等,只有在这样的大背景下来学习java才有目的性,这样就不会跟风学各种各样的新技术了,这些技术有些是我们做软件用不着的。

思想才是相对持久的东西,而工具是在不断地更新的,工具的使用要有思想的支配才能取得很好的效果。

我个人觉得学习做软件的基本方法应该是入门--寻道--登岸。现在有很多《精通XXX》,《XXX从入门到精通》等书,而这个XXX往往是一种具体的工具,很多人都就这样迷失在里面,看完之后还是不懂该怎么做软件。

以上是个人观点,仅供参考!

我觉得做软件就像建造大楼,数据结构算法是地基,框架技术是施工,模式思想是图纸,都很重要
我今年大四 ,还有两个多月所有的课就基本结束了,始终感觉自己的时间不多了,找工作的压力随之而来,这几天看到banq和很多人的重设计轻算法的思想后,觉得从分工的角度来看,说的也蛮有道理,可是我我刚毕业公司是不可能叫我去做图纸的,只会给砖头给我,让我来砌呀
所以我才不知道最后的几个月重心应该放在什么地方,才能更好的适应找工作的需要?
所以想请教一下,我现在该利用剩下的时间学模式呢,还是应该把java se与jsp的api拿过来再反复的记忆?亦或两者必须兼而有之?
再次感谢 !!

>> 我觉得做软件就像建造大楼,数据结构算法是地基,框架技术是施工,模式思想是图纸,都很重要 我今年大四 ,还有两个多月所有的课就基本结束了,始终感觉自己的时间不多了,找工作的压力随之而来,这几天看到banq和很多人的重设计轻算法的思想后,觉得从分工的角度来看,说的也蛮有道理,可是我我刚毕业公司是不可能叫我去做图纸的,只会给砖头给我,让我来砌呀 所以我才不知道最后的几个月重心应该放在什么地方,才能更好的适应找工作的需要? 所以想请教一下,我现在该利用剩下的时间学模式呢,还是应该把java se与jsp的api拿过来再反复的记忆?亦或两者必须兼而有之? 再次感谢 !!

大多数的公司对新毕业的学生都是比较宽容的,java se和api等不需要熟记,你只要知道有这一类的API就可以了,具体的可以到用的时候再查。另外,没有实践的情况下学模式的用处不大,因为你很难理解你自己面临的问题是什么,给你一个解决方案有什么用呢。

如果你真的有时间呢,可以在外面找一些兼职工作,就是打杂也比你在学校里闷头学习效果要好的多。

万丈高楼平地起, 基础牢了,吸收新的东西就快, 英语也很重要,java这东西是外国人出的, 最新东西不肯能有中文的,所以你想看到最新东西,还好好学习英语吧!