工作几年后对学习的一点体会
多谢领导的器重,工作两年多来,一直都在未知的领域探索。从Spring,Struts,NHibernate,Castle等等到LINQ,WCF,SCA 每一次的探索都是一次自己全方面升华的过程。看得多了,也有一些自己的体会。
自学的路很艰难,有时候一个好的资料,一个熟手(我觉得工程化软件没有高手,只有熟手)的指点,能够让你少走很多的弯路。就像在黑暗的道路上磕磕碰碰前行,有一丝的亮光,哪怕如立刻消逝的照明弹一样,能给予极大的帮助。但是如何去借助资料呢?
1、新技术的作用。学习一个新的技术,一定要搞清楚新技术有什么作用,在没有这个新东东的时候人们是怎么做的,有什么不足,新的技术在什么地方有优点。所谓先看整体先看大概,再了解细节,不然就跟盲人摸象一样。
高中学数据库,那本资料上来就教怎么用SQL语言去查询表,搞得我云里来雾里去的,想得最多的就是“这么搞是不是吃饱了没事干啊”。很久以后才明白,抽象的划分,软件可以分为指令的执行与数据的存储,数据库是为了更加方便的管理数据用的。SQL是用来更好的从数据库中存取用的。如果早有人跟我说这些,我相信当时学习数据库也不会那么排斥。
刚工作那会儿看NHinernate,当时这个词都不知道什么意思(查字典也没有),于是百度,结果查到的几乎全部上来就教你如何写映射文件,倘若如果有人告诉我,NHinernate其实就是人家写SQL写烦了,搞了一个SQL自动生成的工具,然后再细节讲解使用Nhibernate的使用注意要点,我也不至于头晕脑胀一整天。
2、找到好的入门资料,再照着写代码。
INTERNET越来越壮大,搜索引擎越来越强大,资料自然越来越多,但是适合自己的资料确实少之又少。很多名家的文章确实写得很好,但是未必适合自己。不同经历不同层次不同背景的人吸收新的知识的理解都不一样。大家都按照自己的方式自己的语言思维习惯来写文章,自然就有不同的受众。对于同一样东西,仁者见仁,智者见智,看法都不一样。虽然最后都殊途同归,但是要让你用别扭的方式去实现最后的目的,你会觉得很痛苦。
所有的资料整体可以分为三类:入门的资料,整体的资料,字典似的资料。
入门的资料最贴近,整体的资料最全,字典似的资料最细。最好三种都齐全。
其中入门的资料最好在语言、风格甚至思维习惯上适合自己。
我刚工作的时候在一家外企接触.NET,老同事说看技术一定要看英文原版的,因为中文翻译的都是翻译得变了样,并举出“Socket”被翻译成晦涩的“套接字”的例子来说明。我一时心潮澎湃,买了一本《.NET 组件程序设计》的英文原版。时至今日,这本书还是新的。后来我买了本中文版本,很快就理解了书的内容。再之后很多经历告诉我,如果你不是一个行业带头人,如果你不是每天盯着各大公司的公告追求者从测试版本到发布版本,资料一定不要看英文的!又不是学英文!又不是英文比中文还顺畅了!牛顿都说,要站在巨人的肩膀上。貌似老人都喜欢把问题复杂化来愚弄新人。
整体的资料很少,难找。一般都是PDF文档。另外有热心的大牛在博客写了很多新技术的整套介绍资料。并且加入了自己的体会,我觉得是了解整体之后的细节的工具。
很多新技术都带有自己白皮书和自己的DOC,这些第一手的资料是很重要的,但是最好不要先看,最好先从其他前辈那里了解一下再说。白皮书里面说大话吹牛的成分很多。软件行业是充满泡沫的行业,每一家公司都把自己的东西吹得不行了,很多老手都把自己会的技术吹得上了天,但当你熟悉之后,会发现就那么回事。
字典似的资料最少,但是也好找。一般技术提供商都会提供,比如JDK。JDK虽好,在我电脑里面存了几年,但利用率很低,毕竟遇到问题还是习惯依赖搜索引擎。如果遇到不认识的字,我们还是习惯去问身边的人,最后才是查字典。
三、从HelloWorld开始
HelloWorld这个名字取得真好,Baby出世,向世界道一声HelloWorld。
学习新东西也一样。先把例子跑起来,把例子搞明白,再围着例子去扩展。
拿前段时间搞得的WCF来说,我算是有分布式计算和SOA等技术的基础了,但是下载的几十个PDF文档都让我头晕,别的不说,不知道哪家公司还是个人出的号称WCF入门的资料,先是把WCF吹了一通怎么牛叉怎么牛叉,然后就介绍binging(绑定),Endpoints(终结点),Contrac(契约),还告诉我“Endpoint 由三部分组成:Address,Binding,Contract。”……
天哪,这是教人学习还是跟山丘之王一样来晕人啊。要不是看着人家辛辛苦苦半夜写文章来指导后人学习的份上,真恨不得学周星星说一句:“都几十岁人了,还这么不懂事”
为什么不告诉我,直接在VS2008里面点新建WCF项目,就自动生成了WCF的HelloWorld,再解释一下HelloWorld里面的各项呢?如果能够说,WCF和WebService的发布调用方式很类似,但是有很多改进,或许更方便理解一点。站在现有的基础上再去看新的问题才能理解更深。
四、求教
记得刚学WebService的时候,特别纳闷,为什么我一按F5,就有自动出来的页面呢,ASPX的代码我都没有写啊……
这个问题当时还困扰我了很久……看来,微软的东西太人性化了也有缺点啊……后来就想,为什么没有人把这个问题解释给我听一下呢?
求教是一门艺术。过来人的经验和教训是笔财富,就看你怎么去挖掘。书面上的话和口头语的差别还真不小。就像大腕里面王小柱在JJYY了半天英语后,偷偷的说“其实都TMD废话”。关于如何求教,问问题是个技术活,这点我也比较零碎,暂且不谈。
我自认脾气很不错了,公司的新人找我帮忙,有些新人不懂礼貌的端坐在座位上,让我弓着腰去帮他敲代码,总弄得我心底升起无名怒火,解决问题的时候就敷衍了事,草草的就事论事整整。
起码说明,生活的技术比工作的技术多得多。