那些年考的那些认证

架构师的信仰系列文章,主要介绍我对系统架构的理解,从我的视角描述各种软件应用系统的架构设计思想和实现思路。

从程序员开始,到架构师一路走来,经历过太多的系统和应用。做过手机游戏,写过编程工具;做过大型Web应用系统,写过公司内部CRM;做过SOA的系统集成,写过基于Hadoop的大数据工具;做过外包,做过电商,做过团购,做过支付,做过SNS,也做过移动SNS。以前只用Java,然后学了PHP,现在用R和Javascript。最后跳出IT圈,进入金融圈,研发量化交易软件。

架构设计就是定义一套完整的程序规范,坚持架构师的信仰,做自己想做的东西。

关于作者:

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/architect-certification/

architect-cert

前言

回忆当年在学校的生活,真是幸福,毫无生活压力;时不常逃逃课,学习自己追求的技术,享受编程乐趣。那些年考过了不少有价值的认证,都不知道自己是怎么坚持下来的,5年时间一共完成了10的认证。

回过头来,我自己都不知道当时哪里来的动力,几乎是一件不可能完成的事情。一头走来跌跌撞撞,但最终找到了自己的职业方向。

目录

  1. SCJP
  2. SCWCD
  3. XML-141
  4. Websphere-285 & websphere-286
  5. DB2-700 & DB2-701
  6. SCBCD
  7. SCDJWS
  8. SCMAD

1. SCJP

我记得学Java是从大二开始的,对于专业课完全没有兴趣,同时又觉得C的代码很丑,觉得JSP做网页很牛的样子,就开始了我的Java生涯。自己学了半年,看着书按照例子,可以写一个小程序,但总觉得摸不着门,于是假期回到北京报了一个新东方的SCJP培训班,3天课程,800元。老师很负责把Java基础整个讲了一篇,我听的特别过瘾,(当时真应该留下老师的电话,特别感谢!)。

上完课后,剩下的25天的假期,我完全就在家中对着电脑度过的。从那一刻起,我终于开始对Java入门了。在假期的倒数第二天,我去考了SCJP1.4的考试。2个半小时考试,紧张的不得了,第一次用电脑考试,全英文的试题,硬着头皮一点一点读。题目都是选择题,单选和不定项选择题,对于不定项选择题ABCDEFGH 8个选择项给你,猜对的可能性很小,不过能让参加考试的有思路上的方向。考试过程中有摄像头一直监控,考试的屋子很小,一排5个台式机,每个人有一个小格子,一张草稿纸,外面是嘈杂的市场叫卖声音,坐满了2个半小时,检查了3篇,我最后是82分考过的。

从那时起,我终于开始对自己有信心了,并坚信自己找到自己的方向。

2. SCWCD

考完SCJP,对Java的基础核心有所了解了,但还是不知道Java能干什么。想做Web开发,又要学JSP和Servlet,当时甚至都不知道,JSP与ASP,PHP的区别。按照SCWCD的考试大纲,自己准备复习。虽然,还有补习班可以去学,但动辄4000-5000元的价格,已经不是一个学生可以承担了。

通过Google,在互联网上找到一切可以学习的教程,几乎看了几百份的教程,去相关的论坛天天逛逛。10年前我逛学习网站coderanch,竟然还在: http://www.coderanch.com/forums

当时看着网站上,老外各种晒着自己的认证,真是羡慕嫉妒恨啊!我就憋着,什么时候,我也能晒出我的认证,让别人也羡慕嫉妒一下。嘿嘿。

一咬牙一跺脚用了一个学期,就在屋里把所有的SCWCD认证的相关知识都学透了。这里不得不提一句,当时我认为写的最好的参考书:“SCWCD 认证专家应考指南”。

8821265-1_w

我吃透里面每一句话,完成所有的代码实例。就这样,我在第二个假期回到北京,又考过了SCWCD的认证。

此时,开发一个网站,对于我来说已经很简单了。不仅可以做网站,还可以利用Web容器的机制,实现各种复杂的功能,比如认证和授权,定时器,JNDI等。

3. XML-141

连续考了2个SUN的认证,几乎让我破产了,都是1200元一次大本投入,好在都通过了,不然真的要哭死了。

大三的时候,学校成立了IBM俱乐部,我就报名参加了,加入俱乐部的好处是考IBM的认证从原价1000元一次,变成学生价150元一次。简单一算,考一次SUN的认证可以考8次IBM的认证,接下我的重点马上转向IBM认证。我当时应该所有人中是最大的受益者了。

XML-141,这个认证是对我计算机软件基础知识形成最大支持的一个认证,让我认识到了计算机可以变成世界,也是我所有考过的认证中最难的一个。

这个认证的难点,主要在于知识面非常广,并与现实应用结合,所以对于当时我来说特别的困难。我将近花了1个月时间,从互联网上找到所有关于XML的资料,并每天晚上偷偷跑去旁听计算机研究生的XML课程,长期泡图书馆每天都盯着一本书 XML高级编程(第2版),这是一本看上去就不可能读完的书,16开1051页。伴着有点发霉的味道,第一遍读就花了3个月。对照着上面的例子,运行了所有程序。

507302-1_w

在这个学期结束的时候,我报名了参考XML-141的考试,虽然我认为我已准备的足够充分了,但是我还是高估了自己的基础知识,好像是48分没有通过。这个打击对于我来说是巨大的,我花了一学期的时间,几乎每天是每天12小时在学习,半年的努力竟然不能给自己划一个逗号。可能当时真的是自己没有企业应用的经验,很多案例题的解决方案都出了差错。痛定思痛,从图书馆借走了,“XML高级编程(第2版)” 背着回家了继续苦读。艰苦的又过了一个假期,我把 “XML高级编程(第2版)” 这本书一共看了3遍,而且把里面很多简单介绍的框架和程序包,都去对应的官网下载并运行。这1个月的补习,让我更加了解 为什么需要XML?XML能做什么?XML可以对原来方案有什么改进?JavaEE的Web容器中的以web.xml做为配置文件的意义!

再次开学的时候,我是带来卷土重来的决心回来的。开学的第三周,我又一次去考了XML-141这个认证,并且是90分的成绩通过了。这次考试的通过,我可能就已经具备了架构师的思考方式,并且很深刻地影响了我很多年的程序设计理念。

4. Websphere-285 & websphere-286

同是这个学期,我又完成参加了 Websphere-285和websphere-286的考试。对我来说,这两个考试基本上已经难度不大了,我是在一个下午,连续考了两门了,就像高考连考一样。最后很幸运的都通过了,并且没有给自己太大的压力。

Websphere-285,主要是考Websphere的家族产品,安装和使用。而Websphere-286,有点像SCJP和XML的结合,主要考如何用Websphere家族产品,设计基于JAVA的企业级解决方案。Websphere-286的证书,又依赖于SCJP的认证,考过了以后,Websphere-285很快就寄到了,Websphere-286还需要我先把SCJP的证书传真发给美国的IBM考试中心(就两张纸花了好几十块),这样就获得了这两个证书。

5. DB2-700 & DB2-701

DB2的认证,完全是无意所获得的。大三下学期,IBM的俱乐部开始推广IBM的数据库产品DB2,我也申请到了学生用的正版软件,然后就在自己的电脑上开始了各种倒腾。之前的专业课,学过MS-SQL-Server,对数据库有所了解。不过对于DB2来说,原来的基础知识是远远不够的。在DB2创建数据库,竟然要10行左右的命令,而不是像MS-SQL-Server点一个按钮就完成了的。

建库,建缓冲区,建表空间,定义分区大小,分离表空间和索引空间,再建Schema,建用户,分配权限,完成上面的整个过程,才能开始创建表,然后建视图,定义触发器和存储过程,性能监控,SQL执行计划,再通过JDBC与Java连接。。。一大串东西走下来,内容是丰富的,过程是复杂的,还需要细心整理各种命令脚本。不过对我来说,DB2已经没有特别难度了,只要一步一步仔细地操作一下来,就可以完成了。

DB2-700如同Websphere-285一样,主要是考DB2的家族产品,产品线,安装和使用。而DB2-701就考到了,从建库到存储过程,再到SQL优化,和最后的数据库案例设计。

一个学期又完成了2个认证,到大三结束的时候,我已经有了7个认证。

6. SCDJWS

这些认证意味什么?我开始的时候,很迷茫。当初的想法,是很天真很幼稚的,以为有了认证就可以去找到一份不错的工作;以为有了认证就可以直接去做架构师。但当你去找工作的时候,亮出认证的那一刻,你会发现,招聘的考官仅仅是有点的好奇,拿着各种认证证书,简单扫一遍,然后就是放到旁边,就跟认证不存在一样,继续问着他们那些应届毕业生在课堂中应该学到的那些问题。

我坦率的讲,我不是学计算机的,并且当时的确不了解 教课书里的算法,不会用时间复杂度和空间复杂度去解决数据结构中树或图的问题,我也不懂C和C++。回想我学的Java的所有知识体系中,都没讲要特别地要用Java去实现这些算法,JDK中的各种基础包已经封装好了这些算法。虽然当时各不理解,也几乎没有获得大公司的offer,不过我还是相信自己选的路,因为我知道我能做什么出来。

毕业了,回到北京。通过社会招聘,投简历,很容易的就找到了一份工作。几乎是回到北京的第二天投的简历,第三天就去面试,第四天就上班了。看着别人应聘的辛苦,我的这种上班速度还是有点小快呢。

从之前的面试经历,考认证已经不再是为了找工作了。我遇到的99%考官都不知道,认证是个啥玩意,有个别人的会说,我们这里招过获得SCJP认证的人也挺一般的。所以,我觉得中国和美国在教育上的差距真的是不可逾越的鸿沟。

看到coderanch上那些晒认证的美国人,无一不是通过认证获得了与自己付出相对应的工作,而在中国知识确是无法量化的。在我大三的时候,有个印度的朋友,获得SCJP后,向我请教如何学习Websphere, DB2, SCWCD,并想继续考认证,而且目标很明确的告诉我,有了认证就可以申请去美国的读书了。再一次的心理落差,让我感觉到中国教育的落后,中国人比印度人的出路都少。

从这以后,我考认证就不以找工作为目的了,而变成了为了丰富自己的知识结构而参加的考试,从而给自己的阶段性学习划上句号。

在XML成为标准以后,WebService和SOA成为后来的大火大紫的技术热点。为了明白底层的原理,我又开始准备SCDJWS的认证考试。很庆幸的是,有了XML的基础,在学习WebService的基础的架构的时候,没让我走太多的弯路,像DOM,SAX, SOAP, WSDL, UDDI, JAXB, JAXP, XSTL, XPath, XPointor等的各种技术规范,我都快速熟练地掌握了,对于SOA的框架层次理解地更清晰。虽然工作中难以用到这些,但很多时候别人的问题我已经能通过原理做解释了。我自己已经开始构思自己未来的系统了。

就算基础很好,学习SCDJWS也花了我半年的时间,白天上班晚上学习,拿到这个认证也是不容易的。

7. SCBCD

说起EJB,曾经是Java程序员都希望追求的技术,不是因为EJB有多牛,而EJB足够复杂。在Spring出现之前,Java社区的开发都是来自于SUN, IBM, Oracle的声音,他们在尝试用Java构建整个的软件生态系统,其中EJB就是SUN的企业级应用开发规范中必须的作为核心的一部分,分为Session Bean, Entity Bean, Message Bean。当然这个方案的实体Bean部分的设计比较复杂,比今天的Hibernate的复杂度要高好几个量级。BEA公司基于EJB做的宠物商店的demo,动辄就是上万行代码,让Java程序员感觉这才“高大上”的程序开发。

9037541-1_w

后来Spring框架出现了,expert one-on-one J2EE Development without EJB 一书动摇了大型软件厂商对企业级应用的定义。越来越多的复杂应用,开始像Spring的IOC模式迁移,Java开始变得更轻更自由了,Apache中的很多项目也开始基于Spring去重新构建,或者提供或Spring集成的接口了。后来,我们常用的SSH (Struts+Spring+Hibernate) 变形成了Java的Web开始的MVC铁三角组合。

当Hibernate在持久化层获得市场上的巨大成功以后,SUN开始重新定义EJB的规定,设计EJB3.0来轻量化EJB2.x,减少开发人员的准入门槛。

此时我依然是SUN的忠实粉丝,期待着EJB3.0的改进,我又完成了SCBCD的认证考试。而讽刺的是,完成考试后,我决定了放弃所有的ORM映射的框架,用iBatis的提供的原生SQL来实现持久层调用,同时自己写了一套基于MyBatis(iBatis)的持久层工具,更快速和轻量的构建我自己的Java系统。

8. SCMAD

SCMAD 这个认证是针对 JavaME手机移动的应用开发,考这个认证就有点奇葩了。当时,只是为了丰富自己的知识,虽然做半年过手机游戏,但没有理解很深,以后也不知道有没有机会再做手机相关的应用,为了完善自己的知识结构,从而考的SCMAD。

这个认证考试的时候,已经是我工作的第三年了,我已经没有太多的时间学习了,而且会很容易被身边的其他的事情所影响。复习过程中,虽然整体内容不太多,而且自己也有了一定的实际经验,但是拖的时间很长,花了将近一年的时间复习和准备。最后,也是考试券快过期之前完成的。

从2003年底大二开始到2008年初,5年时间我一共完成了10的认证。回过头来,我自己都不知道,当时哪里来的学习动力,几乎是一件不可能完成的事情。如果没有这些认证所学的基础知识,我现在又何去何从?

一篇博客,记录自己以前的学习经历。告诫后人珍惜时间,未来的成就,都是之前的积累,爆发就在未来的某个瞬间。

转载请注明出处:
http://blog.fens.me/architect-certification/

打赏作者

This entry was posted in IT相关知识, JAVA语言实践

  • 让人想起某句话 “考而不死是为神” 丹神威武!!!

    • 过奖!雁平足迹广阔啊,今天刚写的文章,就被你发现了。

      • 这不是来你博客学习的嘛

        • 你想学的内容,还没动手写呢;应该这两天就会动手的,其他的章节,基本都整理好了!

  • leizhou

    真是大神了,给跪了。。。

  • walt you

    看了这个,真心觉得前面的路还有很远很远,要继续努力,希望能多多向你学习看齐!

  • yisuoyanyu111

    好吧,神了,关键是坚持啊。现在又是一个技术爆发的时代

  • Kongnuan Zhao

    偶像不是计算机专业的呀~

    • 计算机是自学的,:-)

      • Kongnuan Zhao

        那是什么专业的呢~有这么多课余时间去学习这些,佩服!

        • 课余时间总是有的,比如 逃几节吹水的课,有节制的打打游戏或看电影,少点社会活动。大学生时的日子,还是挺轻松的。

  • 龙猫宝贝

    现在想想大学时间真的浪费了好多……

  • 伟 戴

    张丹老师,我有点java的基础,在学hadoop,可是最近想学点Web的开发了,不知道是选择JSP比较好,还是PHP比较好啊,求教

    • 开始不要学太杂了,找一点花时间突破。JSP,PHP各有利弊。

  • bingo

    从昨天寻找websocket 看到你的博客,挺震惊的。现在我大四,从一个小公司实习回来。也是学java的,也非计算机专业,但和计算机相关专业。基础比较薄弱,一直在补。看到老师对技术的热爱,让人佩服。

    • 边做边学,慢慢补充基础知识。