是我不明白,是这世界变化快,编程语言换了一代又一代,到底我该学哪代?
经常听到将要和正在学习计算机的朋友发出这样的疑问,我有些切身经历,希望能够对朋友们有所借鉴。
发现自己的特点读高中时,校友为母校捐赠了一批苹果电脑,读理科的我马上喜欢上了它们,遗憾的是上大学时却没能选择计算机专业。毕业以后,参加工作,经历了很多事情,我才觉得自己还是适合从事技术类的工作,而富有挑战性的计算机立即成为我的首选。选择它并不是因为计算机专业很热门,而是基于自己的爱好和特点。而很多学计算机专业的女孩子,等到了大三、大四时才发现自己并不适合这个专业。
那该从何入手呢?上培训学校还是到大学读计算机专业?我采纳了一个读博士的同学的建议:编程语言当属Java,数据库当属Oracle。他告诉我Java是目前国际上最流行的开发语言,而Oracle是目前最广泛使用的大型数据库。
拿下SCJP虽然平时喜欢上网,但总是似是而非,既然现在决定进入计算机领域,我便报名参加了国家软件水平考试中网络设计师的考试和培训。首先因为它很便宜,其次自己比较熟悉,另外,既然已经决心做好这件事情,就要从高标准入手。培训听起来很吃力,却让我领略了网络世界的神奇,并让我第一次接触到了网络编程的利器Java语言。而最后网络设计师考试的败北也在意料之中,因为在听完这个培训之后不到一个月,我就又上了SCJP(Sun认证Java程序员)的培训班。
SCJP培训花掉了我2600元,其中含考试和培训及英文教材的费用。我选择了一家Sun公司认证的培训机构,一共听了两遍。听第一遍宛如云中漫步,老师建议我自己先学SL110的课程(SCJP的培训课程是SL275,SL110是其先修课程)。于是我白天听天书,晚上死抠SL110的课程,一边看书,一边做实验。因为以前的英文底子很寒酸,所以现在只能找中文的教材对照看。听完第二遍时,我已经将两本书的教材和实验都过了三遍,心里有了一点底气,弄清了面向对象的基本思想和Java的基本语法。然后开始做模拟题,网上可搜索到的题目很多,我只选择有答案和讲解的题目做。基本上做完三套题目再看一遍SL275的教材,并把每次做错或有疑虑的题目全部上机测试,并且汇集起来以便下次重做。从一个门外汉到通过SCJP的考试,花了我整整三个月的时间。
彷徨SCJD通过了SCJP的考试并没有兴奋多久。看着Sun公司签发的证书和徽章,我问自己:现在我能编写一个小小的程序了吗?为什么Java语言写的程序跟以前学的Basic、Fortran语言完全不同?书上讲的内存分配、栈机制到底是怎么回事?种种疑问促使我开始查看计算机理论方面的书籍,后来我就干脆报名参加了国家软件水平考试的高级程序员(又叫系统设计师)的培训和考试。
高级程序员的学习自然是更加痛苦的:它涵盖了一个计算机专业本科生的绝大多数的专业主干课程。硬着头皮也要上,这是我的一贯作风。这个过程的收获,是让我在很短的时间将高级程序员涉及的全部内容都过了一遍。这时让我感受最深刻的是,要做好一个程序员,数据结构和算法的知识是非常重要的,面向对象的软件工程在Java的程序设计中是必不可少的。后来高级程序员的考试可惜未通过,因为后来我的学习重心又转到了SCJD(Sun认证Java开发员)和J2EE(Java2平台企业版)上了,当然拿到证书决不是我的最终目的。
还在学SCJP的课程时,我就曾经看过SCJD(其相应培训课程为SL285)的教材和实验内容。此时的计划是:看完三本书,即《Java数据结构和算法》、《Thinking in Java》、《Design Pattern》,做SL285的实验,然后争取通过SCJD的两个考试。这次我没有预备参加培训,原因之一是SL285的培训费用较贵(通常培训+英文教材+考试2共需3600元,考试1还需2100元),其次是本地SCJD的培训班次较少。更主要的是我觉得可以通过自学来解决。但刚看完一遍之后的一次招聘会,改变了我的计划。
很多人说,想要通过SCJD的考试,应该有实际的工作经验,于是我也想拉出去遛遛。一家招聘Java程序员的软件公司安排的面试题目是:编写一个连接数据库的jsp网页,配置Web服务器,在客户端执行查询和修改。两个小时之后,我回家向一个朋友求助,在他的讥讽和指点下,我用了一天一夜的时间才全部完成任务。这件事情促使我对自己的计划产生了深刻的反思:现在要么免费实习,要么继续深入学习。在这个跳槽时代,中小企业一般不会培养新手;而因为户口的关系,大企业只招应届毕业生。那我的前途在哪里呢?
瞄准SCJA看一看自己的年龄,我的Java之路前途暗淡但也不应该有退路。仔细回想后,我发现通过SCJP让我了解了Java的基本概念和技术,达到SCJD只是奠定了使用Java技术的基础,真正的应用还在于各门技术的综合使用。于是我的读书计划里又增加了一串长长的清单,包括JSP、EJB、JBuilder、Java Web服务、Java TCP IP、XML、BEA Weblogic、UML等等。
我相信厚积薄发的道理,于是参加了某闻名大学的在职研究生学习,这样既可以和名师交流,又学制灵活。我未来的目标是成为一名真正的SCJA(Sun认证基于J2EE的企业设计师)。当然今年我还会参加软件水平考试之系统分析员的学习,更会参加尽可能多的项目实习。路漫漫其修远兮,吾将上下而求索。
感悟Java认证我没有资格为自己立传,也没有具体讲述哪一门的学习方法。只希望自己的亲身经历能为考证大军们有所借鉴。以下是我的一点建议:
1、当你预备去考某一项证书时,一定要弄清楚它是否适合自己,从长、中、短期分析它对自己有什么影响。学习编程需要一定的逻辑思维能力和慎密思考的习惯,尤其是更换专业、学习计算机更是一件非常痛苦的事情。假如仅仅是为了一张证书,那还不如多花点工夫在自己喜欢的领域。况且企业不会仅凭证书去判定一个人的水平。
2、实习永远是最重要的一环。利用各种机会进行实践,在实战锻炼中提高得最快。没有机会可以自己假想一个和已有的产品类似的题目,看自己能否完成。
3、假如条件答应,可以参加正式机构的培训,但别指望通过一个培训就把握全部内容。就Java而言,Sun公司认证的培训机构和讲师都可以在网上查到,找到一个良师益友就会事半功倍。