寒假结束了,年也过完了,提前回来一天就开始着手补上这迟到的年终总结,写了一个多星期还觉得有些东西没有写出来,无奈,点到为止吧:)。2012年的后半年经历了很多,收获了很多,感触了很多,各种很多……还是按照咱们的老规矩:以时间为主线,以事件为标志,请听我把这半年的事娓娓道来。
看了一下上次总结的时间(2012-09-11),当时正在研究中间件的理论知识,期间接触到了EJB。现在自己对EJB技术的定位是这样的:说白了EJB仅仅是实现中间件(或者说企业级开发)的一种方式而已。因为中间件的主要作用就是屏蔽下层的异构,为上层开发做基础性的工作,所以必然需要分布式,而EJB当中的RMI、JMS等服务就能满足其需要,所以EJB便成为实现中间件的主要手段之一(请注意是“之一”)。还有一些别的手段,比如基于WebService,基于CORBAR规范等等都可以用来实现中间件。
对于EJB的学习这里主要说的是EJB3,因为根据网上资料所说,当年就是因为EJB2的笨重所以才导致轻量级企业框架(SSH)的出现。后来的EJB3虽然减轻了使用EJB的负担,但是经典需要检验,流行需要时间,从“臭名昭著”到被人认可还需要一些时日。相对于EJB3来说EJB2是笨重了一些,但也不能说EJB2毫无学习的价值,毕竟公司当中一些老的项目是用EJB2开发的。还是由于时间的原因吧,最终的最终自己还是找了个软柿子捏(EJB3)。
EJB3的学习持续了将近一个半月,主要的学习内容就是EJB3 in Action那本英文书。最大的感触有两点,
第一:没有实践的学习是空中楼阁,没有总结的学习是狗熊掰棒子。
因为时间的缘故吧,仅仅是把这本书看完了,了解了EJB的大体轮廓,期间没有实现代码,也没有文字性的总结。而这直接导致现在回想起EJB来仅仅知道EJB的大致内容,但是具体的实现还是比较生疏的。
第二:看英文书籍其实并不难
EJB3的中文资料网上虽然有,但是大部分还是英文的,本着不断提高的目的自己尝试的读了一下英文书。700多页的英文书读下来最终的感觉就是只要塌下心来,英文书籍其实并不难。个人觉得这才是EJB3学习给我最大的收获,技术上的收获也有,但是与学习方式方法的收获比起来就不免相形见绌了。
在学习EJB的时候穿插着看了一下鹏哥的SSH2视频,这个过程一直持续到去北京入职(下文详细介绍)。之所以决定学习SSH2是因为之前看的SSH是基于Struts1的,而且相隔的时间也比较长了,于是就开始拿起鹏哥的SSH2视频看起来。吸取了EJB学习的教训(吸取一部分吧)开始一边看视频一边自己动手实现代码,效果还是很不错的。
鹏哥的视频还是非常犀利的,所以整个SSH2的学习过程比较顺利。特别值得说的是在鹏哥的视频关于eclipse的使用以及使用PD建模部分对自己的启发较大,一言以蔽之----工欲善其事,必先利其器(论语)。
工作期间接触到了一个新的基于MVC的框架Dinamica。用了一段时间之后发现这个框架比SSH使用起来要轻松的多,比较遗憾的地方就是资料较少、不开源(这个框架起初还是开源的,后来就商业化了),所以对于其原理的理解还是比较困难的。整个学习、使用的过程也仅仅处于浅尝辄止的阶段,做了一个Demo知道大概的原理之后就转向其他的学习内容了。
刚开始学习的时候带着抵触的情绪,总感觉一个不流行的框架不应该浪费时间去学习。后来老师一句话点醒梦中人:不流行的框架更要去研究,要研究其为什么不流行。因为我们的目标是做框架,而不单单是去使用别人做好的框架,所以不能仅仅从使用者的角度来看待一个框架,还要从开发者的角度细细揣摩。
还有一点还有要说的,公司有一个现成的基于Dinamica框架的平台,这个平台是非常值得我们学习与借鉴的。这个平台最主要的特点就是快速,各种快速。一个页面无需写后台代码只需简单的配置以及JS控制样式就可以搞定。当然这个平台也有自身的缺点,不用说高并发就是对与用户稍微多一些都不能非常稳定的运行。学习这个平台的宗旨就是:则其善者而从之,其不善者而改之。
大型项目中用到的技术(比如EJB)重要,但是绝大多数项目还是中小型的,打个苍蝇没必要用原子弹,类似的做一个MIS没必要用EJB。帮助用户快速实现,在可控范围内保证运行速度和灵活性就足够了。运行速度和灵活性本身就是一个矛盾,到底谁是主要的,这需要具体问题具体分析,不可一概而论。
OA的学习是在入职的时候就开始了,当时进行是OA的前期阶段,重点是了解业务,并没有太多的实现代码。在OA中关于软件开发上有很多地方和当时所在公司做的项目有相似之处。那个阶段自己也思考了很多,也写了一些自己的想法。前前后后写了大概不到十篇博客,思考企业开发过程中的种种问题,以及目前仍然不解的一些疑惑。(可以参考前面的博客)比如:做软件什么最重要的问题?无可厚非,技术不是最重要的(虽然没有技术不行),业务为王,没有业务费了半天劲也只能是徒劳(业务之谜)。
外包回来之后还是继续学习OA,后面的学习就是围绕技术展开了,接触到了很多新知识,ant、dwr、xdoclet等等吧,老师通常把这些叫做小技术。个人所理解的所谓小技术就是学习曲线比较陡峭的技术,反之就是大技术。明显的小技术只需要有限次数的重复即可达到希望的水平,而大技术则需要很长时间的积淀。
在OA的最后部分涉及到了工作流的知识,考虑到工作流还是比较重要的,于是计划集中时间学习工作流(JBPM)。所以当时并没有把这部分理解透彻,只是囫囵吞枣的看了一遍,代码大致能跑通就将OA结束了。
就像上面说的,JBPM学习严格的说起来是从OA那里开始的,只不过OA当中以及李腾飞的视频当中讲的是JBPM3,而自己目前正在学习的是JBPM4。无论是从网上还是从官方文档中获得信息都是JBPM每个大版本号之间的区别还是很大的,所以现在的主线是从网上找JBPM4的资料进行实例Demo的实现。之前守宏已经有一个大致的原型了,只不过具体到业务流转方面还欠缺一些,然后再实现一下在BS的基础上绘制流程(难度还是比较大的),可以说这个Demo就距离老师所构想的教务平台不远了。
以上就是主线的学习,在这之中还穿插了一些补充的基础知识,大多数是以看书为主,具体的数目大家可以查看文章最后所列的书单。
按照老规矩附图一张聊表心意
关于计算机的学习这已经是第四个年头了(就像网上调侃的那样一入IT深似海啊:D),在学习方式方法上逐渐有了自己的一套路数。
从刚开始的看视频,照着视频敲代码,到囫囵吞枣的看视频自己实现代码,再到主要以看中文书为主(因为没有视频可以看了),再到看英文的书(因为没有中文书可以看了),再到看官方的英文文档(因为连英文的书都没有了),整个过程回顾起来还是挺有意思的,有时候自己也在感叹,靠!我居然在看官方的英文文档,这在以前是不敢想象的(可能是我之前太山炮了,大牛勿喷)。也许这就是我在提高班学习到的最宝贵的东西:持久学习的恒心,遇到困难不放弃的决心,能战胜困难的信心(“我要是做不出来就没人能做出来。”----坤哥)。
还有就是看书的速度也比以前快了很多,过年回家带了一本书回去,(其实也就是在车站等车的时候翻了翻)基本上快翻完了。需要说的是把书看一遍并不等于消化了,学习是要反复的,学习是要实践的,看一遍仅仅是一个开始。想想自己以前的学习方法真的很不得当。话又说回来,没有之前的不得当,就没有现在的相对得当:D。
学习的前期应该像中国文化那样意思意思点到为止就可以了,后期应该像西方思想一样准确无误分毫不差(其实也是相对的准确,“误差无处不在,真实值永远不可能达到”----初中物理课本)。
学习必有法,学无定法,找到适合自己的学习方法才是硬道理。
经过将近两年的英语学习终于可以开口说了,效果还是很不错的,尽管我们现在还停留在日常交际用于上,但这和我们之前的哑巴英语比起来已经好很多了。相信在不久的将来我们可以从“说”切入,最终可以轻松的“读”,轻松的“写”。
从北京离职回来之后对英语的重要程度认识的更清晰了,因为在北京工作的时候所在的是一个外企,所以英语便成了决定职位的重要因素之一,很明显的一点就是项目经理对上级的邮件一律是英文的,助理之所以成为助理的最大因素不是因为技术多么高超(其实助理不懂技术)是因为英语好,仅此而已。
这也算后半年的一件大事吧,从7月份的报名审核,到10底的考试,再到1月中旬的复试,前前后后持续了半年的时间。最大的收获就是对战略的认识,最集中的体现是关于GCT的考试。
GCT考察四门课程:语文,数学,英语,逻辑。当然比较变态的是四门课程一起考,这就决定了这四门课程之间肯定是要有取舍的。把握自己擅长的部分将自己的优势发挥到最大;在自己不擅长的领域将损失减小到最少。人生也是如此,不可能面面俱到,要有全局观,将自己的优势放大,将自己的弱势的损失减小到最小就是成功。
在GCT的学习当中免不了和考试报名、资格审查、调档案这些事情打交道,感触最大的就是步入社会不比在学校,在学校你是学生有老师帮你,步入社会人和人之间是平等的,没有任何人有责任给你做什么,你需要勉强别人,需要去求别人,需要去……办法很多,手段很多,要学习的还有很多。想起了网上流行的一个段子(猫吃辣子)讲述了手段的重要性,我们需要学习的太多了,做技术和做人做事比起来真的太小儿科了。
从北京离职回来学习的过程中穿插了一些提高班的事情,比如为了方便管理我们开始使用今目标(后面详细说),刚开始的时候还是挺不习惯的,因为每个人有每个人的学习方式,无论是计划还是总结,突然让大家统一学习的习惯还是需要磨合期的,好在现在大家大部分已经习惯了。
认识到一个道理,每个下属多做一点儿事情领导者就轻松很多,效率提高很多。借助信息化才是提高生产力的王道,有了信息化便可以无限的扩大自己的能力,因为信息化是一个让别人帮助自己最方便、最快捷的方式。
还有一点就是老生常谈的:看帮助文档是学习的第一步,学习今目标的使用也是如此。就像上面说学技术一样,刚开始的时候是看视频,后来是看中文的书,再后来是看英文的书,再后来就是看帮助文档了(User Guide)、研究源码了,最后的这个才是学习原汁原味的技术。前面的那些只能说是吃别人咀嚼过的馒头,虽然可以直接消化,但是不能可持续发展必须靠他人的喂养,少了些许狼的精神。之前只是说帮助的重要性,要是从“原生态”的角度去看待帮助文档就是另一番滋味了。
之前一直习惯说去北京外包,现在想想这个定位就是有问题的!从根本上抛弃外包的观念才能端正态度好好工作。其实根本没有外包,生活就是战斗,人生没有演习。怀着外包的心态去工作肯定不能热情高涨,肯定不能全力以赴。所以能力自然不能百分之百的表现出来。好在这次已经认识到了这个错误,外包人员不能拿自己当作外包。外包也应该踏踏实实的做东西,尽管可能乙方要求可能不高,尽管可以将就将就……但是学到的东西是自己的,能力是自己的,经验是自己的,(“出来混迟早是要还的”----无间道)。从这个角度出发外包和非外包是没有区别的。做一个有思想的人,就算做外包也要做一个有思想的外包人员,不要当一天和尚撞一天钟,那样没有意义。
这次去北京入职期间收获很多,技术上的上文已经详细阐述了。更重要的是为人处世,交流沟通方面。
入职的前期不做底层是不可能的,怎么做底层,怎么高效的提高自身的技术与沟通能力是非常值得思考的问题。看看坤哥我们也许找到了一些答案,想要取得骄人的成绩,如果单单靠的是卖命苦干是远远不够的,交流沟通,与朋友、同事的互帮互助是必不可少的,毕竟软件开发早已不是个人英雄主义时代的时候了。
提高班一如既往的向前走着,一期比一期的人多,一期比一期影响力大,当然了每增加一期我们遇到的问题也就多一些。新生的问题、老生的问题,各种问题。好在我们不怕问题,“办法总比困难多”是老师的口头禅,米老师曾经调侃自己的性格就是咬住了觉不撒嘴,我觉得这比狼的精神更加可贵,这俨然就是和困难耗到底啊!有了这种劲头还有什么事干不成,也许这种劲头导致的结果就是一辈子只做一件事,但是想想一辈子真的做好一件事已经很是不容易了。
按照提高班的学制到今年的六月份我们差不多就该去工作了,百般滋味在心头啊。我们就要毕业了?真的要毕业了?一方面家里给的压力使得自己不得不去毕业,一方面感觉东西越学越多,多的恨不得一天一学会本书(注意这里说的是学会,不是学完)。现在真切的体会到做软件行业的技术人员“拼到最后拼的是加速度而不是初速度”这句话的含义了。也就是说入职的时候你懂的再多也比不上工作之后每天都进步的人。不断的接受新知识才是取胜的王道。学习是一辈子的事情,在提高班学到的技术固然重要,但是更重要的是带着一颗永远学习的心去工作,还是那句老话----活到老学到老(无论是学技术还是学做人做事)。
屈指一算我也不小了,双手双脚已经算不过来了(我是严肃的,不要笑),仿佛昨天还在大学这个象牙塔里过着优哉游哉的日子,忽然之间就长大了。走在昔日的校园里面对在校的大学生不仅羡慕起来,羡慕他们无忧无虑的生活,羡慕他们正在度过人生最美好的时光。人总是这样,回味着过去美好的生活,憧憬着未来生活的美好,抱怨着当下生活的无味。殊不知今天就是昨天的未来;今天就是明天的过去,只有今天才是最好的,最值得把握的,也是最可以把握的。
长大了就是该考虑大人的事情的时候了,最明显的标志就是大伙聚到一起不再谈论NBA,不再谈论游戏取而的代之的是工作,是房子,是结婚,是娃娃……(请注意这几件事的顺序)。常常拿已经毕业的师哥师姐当作自己的明天,常常在想两三年后的自己距离今天定下的目标还有多远(兵哥,我们的五年之约啊~)。
我们是幸运的,起码不用太为工作而发愁。上面所说的四件事中最棘手的还是买房,本来觉得距离我们很遥远的这个让整个社会都敏感的话题,我们现在也不得不考虑了,虽然类似郎咸平的文章读了不少,每次读完之后都觉得买房子太亏,但拿着经济学的东西去和丈母娘说事多少有些不合适,也不现实。
想起了陈奕迅的《因为爱情》“因为爱情,简单的生长,依然随时可以为芳疯狂……”
但是就像上面说的“只有今天才是最好的,最值得把握的,也是最可以把握的”,所以目前的瞎想、瞎说无用,做好今天该做的那么距离自己的目标自然就近了一些。
关于已经过去的半年以及现在的学习情况,其实并不是十分理想。可能是因为入职,因为快毕业,因为家中的压力等等吧(总觉得自己找理由的能力已经超过写代码的能力了),用老师的话说就是两个字“浮躁”。
踏下心来,好好再学半年(真正工作了,心态就更不一样了)。这半年是技术质变的半年,从时间的角度来说是以一当五当十的半年,是提高最快的半年。因为我们已经谙熟内功心法,精通外功招式,对如何学习已经有了一套自己的经验,所以学习知识已经不再是困难,进步也只是朝夕时间的事情。
期待最后几个月的学习,加油吧,兄弟!
《JS权威指南》:俗称犀牛书,介绍了JS的方方面面,不要奢望一次性搞定这本书,当作手册常用常翻就好。
《Jquary实战》:强大的选择器让众多开发者爱不释手。
《Java疯狂讲义》:Java的基础,把一本书看完远比细细的看重要。
《深入浅出Struts2》:鹏哥是不是看完这本书讲的视频呢?很多一样的地方哦。
《Hibernate基础教程》:从面向数据库到面向对象,还是需要一个过程的,时刻和之前没用框架做对比。
《Springin Action(第一版)》:依赖注入,动态代理,然后就是各种配置,也就是那么回事
《JBPM4工作流应用开发指南》:大致的看了一遍,基本概念了解后开始实现代码。
《Linux+Unix设计思想》:一个开源的系统能走这么远,走的这么精彩,必定有他的道理。
《重构改善既有代码的设计》:过年回家看的,最大的感触就是任何事情都是两方面的,抓主要矛盾就好。
《开发者突击:精通AOP》:介绍了三种框架实现AOP,道理是一样的,具体配置有所不同。
《MySql核心内幕》:题目有些大,实际内容并不是太核心,只能算是源码的导读而已。
《只有偏执狂才能生存》:老罗在演讲中推荐的,看了一部分,并没有想象中的那么好(莫非是自己的水平不够?who knows?)
《找对英语学习方法的第一本书》:强调的还是语言的获得而不是学习,注意是一种自然获得。
《怪诞行为学》:很有意思的一本书,生活处处有趣味,只要去细细琢磨。
《人月神话》:很早之前就听过,也读过一部分,各种事情耽搁了吧,这次读完了觉得我们正处于软件的开发的形成阶段,所谓乱世出英雄,现在就是乱世啊,兄弟!
《卓有成效的程序员》:每个希望提高自己效率的人都应该读一读,重要的是这种提高效率的意识,有了意识,那就无招生有招了。
《EJB3 in Action》:可以说是第一本完整看完的英文书籍,用了大概一个多月啃完了,收获最大的不是技术(技术可以忽略)而是读英文书籍的感觉与自信。
《疯狂的程序员》:一本写程序员成长的小说,大致的浏览了一遍对于开阔眼界还是挺有用的。
《Java程序员,上班那点儿事》:从Java的角度阐述相关的各个技术性,能够增长一些见识。
《程序员面试宝典》:面试很重要,基础技能更重要,不要舍本求末,切忌以始为始。
还有一些书正在读,这里就不列举了。