一:学会选择
 
为了就业,不少同学参加各种各样的培训。
决心做软件的,大多数人选的是java,或是.net,
也有一些选择了手机、嵌入式、游戏、3G、测试等。
  
那么究竟应该选择什么方向呢?
我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),
当你要走向社会的时候,就不要再把自己当成学生,
不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界。 
 
每个培训机构都会宣传自己的好处,并不能说明大的趋势。
一些新闻文章很有可能是枪手写的,不必太过相信。
国外背景的教师和课程,未必适合你。
那么怎么才能确定自己将来的方向?
如何才能从纷繁复杂、或真或假的数据世界中挖出一条路? 
 
我讲一个通过招聘网站的观察方法。
可以到各种招聘的网站上查询信息(可以到google上查询招聘的网站),
例如:
http://www.51job.com  
http://www.chinahr.com  
http://www.zhaopin.com  
以及csdn的招聘频道等
还有一个网站也不错,http://www.jobui.com,综合了各大招聘网站的数据。
  
这些数据都是最真实不掺假的原始数据,你可以每隔一段时间搜索一次,一些规律就会被总结出来了。
比如说我在http://www.jobui.com中搜索java,全国大概提供了3万个职位。
然后要多翻几页,这样不仅能够看清楚大概有多少是有效的职位,
而且还可以看清楚用人单位最关心的技能是什么,这个很重要,决定着你将来要花多少时间和精力在特定的知识点上,
比如说swing,搜了一下,全国只有700个左右的职位,
仔细读一下,也并非全是有效的职位,花太多时间和精力在这个上面就不值得了,
当然自己感兴趣或者为了研究的话另当别论。
不过如果是为了快速的就业,把太多时间和精力花在很多职业生涯的前一、二年用不到的知识上就太可惜了。 
 
同时,并非某一个行业的职位数目少,就不能当作一个方向进行选择,
比如.NET,我搜索到的职位数是1.6万左右,比java少,是不是就选java了呢?
不一定,因为java职位虽然多,但是可能竞争者可能也多,
有些方向虽然职位数不多,但是和你竞争这些职位的人数量也少,不见得就不能选择。
不过,如果某一个方向的职位数目过少,你可就要小心了,选择这样的方向风险会非常大,如J2ME。

 

我个人觉得java/J2EE、.net、嵌入式开发是不错的三个方向。
如果非要在java和.net中选择的话,我个人是推荐java的,
原因:
1:Java能够开发linux、unix服务器上的程序
2:JavaEE和.NET在企业应用方面的关注点是差不多的,但是学习了java如果将来想转到.net上会比较简单,
几天的学习然后上手开发应该是问题不大的,但是反之就不行了。 
当然如果有了些经验之后,你就会发现语言或者平台不再是技术上的阻碍,
一些原理性的东西学到手,然后再加上项目经验,使用什么平台,反而不是最重要的。
不过如果非要用一种平台进入企业开发的领域,至少在目前,2007年9月,我推荐java。

完全可以不同意我的观点,
但是无庸置疑,如果是为了就业,多到招聘网站阅读阅读职位的信息,对你将来的方向和学习是大有益处的。
选择是最痛苦的,看看《天生购物狂》中的刘×××就知道了,不过既然无法逃避,就作出自己的选择吧。
每个人都会受到别人的影响,在作出决定之前,要想尽各种办法让自己理性一些。
这样,你的选择会离正确的方向更近一些。
 
二:JAVA自学路线图

有不少的同学发信给我,和我探讨java的自学过程应该是什么样的,
毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。  
这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。
这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,
可以参考后面的JAVA自学之路 七:《路线图明细》。

首先要学JavaSE,这是无庸置疑的。
与此同时,是的,与此同时,和JavaSE的学习同步,建议大家研究一下数据结构与算法。
在这儿之后,你可以选择向J2ME、或者Java GUI、Socket编程等方向努力,
但是通过第一篇的办法,你可以很容易就将这方向过滤掉,
(永远不要忘了我们是为了就业)好吧,暂时和它们诀别,还是向着J2EE的方向前进吧。
在JavaSE完成之后,可以试着完成一些小项目,同时关注一下设计模式的内容,
不必强求自己能够完全掌握各种细节,往前走吧。
掌握一种编程工具,比如说Eclipse。
数据库,可以选择使用Oracle或者MySQL开始。
JDBC,用Java连接数据库。
可以选择在这个地方切入Hibernate,也可以选择在Struts之后。  
HTML CSS javascript,这些东西是做web项目必需的内容。
Servlet JSP,服务器端必需。
XML AJAX,新的流行趋势不能不了解。  
作一些小项目吧。比如BBS、留言系统、学籍管理、商城等等,
随便着一些业务逻辑比较简单的来做一做。
Struts,MVC的典型应用
Hibernate,OR Mapping的典范之作。
Spring IOC + AOP, 面向对象 + 面向切面,完善的旅程。
把以前自己的小项目加入Struts、Spring、Hibernate的元素吧。
去研究各种商业项目的业务逻辑吧,才能在你的简历中加入浓重的一笔。
EJB3.0,java在走了很多弯路后的回归之作,值得研究。
SOA,业界铁定的未来趋势,要紧紧跟随。
在后面,我会告诉你每一步的学习方法和学习重点。

 三:要动手

无论如何,请坚持不懈的动手实验!
学习Java要动手,仅仅是看和听是不能够学好编程的。
总有同学来信问我们这样的问题,说:"老师我看了视频了,可是怎么一动手就没有任何思路呢?"
对此,我一般都会说不要着急,
如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,
这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗。
作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?
至少也是照猫画虎画了一段时间之后吧,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。
就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,
自己模仿着写一些,逐渐的经验积累,才能形成自己的思路。
学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。
所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,
再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。
如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。
而这种质变的确发生过不少次。
提醒一句,要理解代码思路之后再跟着敲 ,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就不再是程序员了,成了打字员了。

纸上得来终觉浅,所以:  
别问那么多,别想那么多,动手写吧。