“授人与鱼不如授人以渔”那么我这个“渔”究竟是什么呢?大家做软件也有不少年了对自己擅长的一门或多门技术都有自己的经验和心得,但总的来说可以分为向内和向外以及扩展三个方面(这里只针对
.NET平台)
一)向外:
会使用ASP.NETWinFormASP.NETMVCWPFSilverlightWFWCF等技术,用这些技术做项目的同时
积累了较丰富的经验,那么大家就可以形成自己的一套开发
知识库,知道这些技术怎么能快速搭建企业所需要的应用、知道这些技术在使用中会出现
什么样的问题以及如何解决。那么在这个时候你就可能已经在团队中起到比较核心的作用,如果
项目经理给你一个任务,也可以很轻松且高效的胜任,同时在项目当中由于你也比较清楚业务逻辑,所以当机会来临的时候,很快会成为团队的骨干,逐渐你就会带几个初级一点的工程师一起做项目;如果你不喜欢带团队,就会成为资深的高级开发或者
架构师。那么在向外方面我个人认为最重要的积累经验,对常见的应用要比较熟悉且有自己总结的一套开发库—比如对普通的网站、电子商务系统、ERPOA 客户端应用等等有比较丰富的经验。
二)向内:
前面你使用了这些技术开发项目之后,会遇到很多问题,为了解决这些问题,会逐渐
研究一些比较底层次的东西。比如对于ASP.NET会逐渐的去深入
理解ASP.NET整个处置过程、页面的生命周期、
自定义控件的开发等等,由于自己最初是由CC++Java这样过渡到.NET所以对一些细节总喜欢钻牛角尖,这也浪费了不少时间,但同时也得到很多意外之喜。
对于C#语言上,也会逐渐去刨根问底,想看看这些语法糖背后到底隐藏着什么秘密,很多对.NET技术比较痴迷的人都会选择对C#1.0语言通过IL代码来深层次认识,然后对C#2.0C#3.0C#4.0都编译为C#1.0来学习,这样他就能认识到语言的内部到底是怎么执行的正所谓知道的同时也知道其所以然。
对于WF不只要知道各 Activiti使用,也得知道其内部的原理,比方WF内部就是依靠依赖属性来在工作流中的各 Activiti间传送属性值的如果你细心,还原WF依赖属性源码,会
发现它和WPFSilverlight中的依赖属性大同小异,原理基本一样、只是针对特定技术进行了适当的调整。
对于数据底层操作也一样,不论你用的拼接SQL存储过程、IBA TIS.NETNhibernActiveRecordLinqtosqlEntitiframework还是自己开发的ORM组件,得明白它内部的原理,要知道这些开源的代码还是很值得研究的经验是先熟练使用这些功能,然后再剖析它源码,然后自己写一套自己的框架,现在也在精简自己的ORM框架,因为之前把重点放在实现尽可能多的功能,所以对性能等细节没有做过多优化,后面也会向大家慢慢学习。
对WPF和Silverlight一样,不只要知道怎么用这些技术,要知道它原理,比如对依赖属性,知道它内部原理,就可以对平时出现的诸如我设置的值怎么没有起作用、Bind元素怎么没有出现等等问题;对路由事件,也会经常遇到事件怎么没有执行、
自定义控件事件怎么处置不对、路由传送怎么没有起作用等等,这个时候你如果深入理解了路由事件的内部处置,这些问题就迎刃而解了对WPF和Silverlight新多出来的命令特性,大家很多时候也是比较疑惑,也会遇到命令失效等等问题,其实如果你深入的解了原理,就会知道,其实在内部也是事件,只不过微软在里面做了很多封装而已;对Bind就更是如此,也不想在这篇文章谈开去,终究在下面的几篇文章会详细的对这些技术进行涉及。
三)扩展:
通过前面的向内和向外的修炼以后,接下来要做的就是不时实践,不时总结经验,这个过程中更重要的要懂得分享,有分享才会使自己和他人共同提高,有分享才干让自己解脱狂妄的井底之蛙思想,还记得自己刚做技术的一两年里,天天喜欢提及大型架构、大型数据处置、操作系统底层代码如何如何,甚至把AOPIOCSSHOO及
设计模式、SOA 等词语时常挂在嘴边,生怕他人不知道自己不懂。但随着自己技术实质上的提高以及经验的积累,自己也就逐渐幼稚起来,对这些技术逐渐深入理解且理解了其内部实现原理,这样反而自己变得谦虚起来了对之前的那些思想感到无比的羞愧。同时也明白自己在慢慢生长了现在都
习惯戏称自己为打杂工,其实更多时候用打字员会
合理一些,所以希望大家能多多指教,这样我才干更快地解脱打字员的生活。这里也对扩展做一点小的总结:
记录学习:这是学习很重要的一步,不一定要写技术博客,也可以做一些
例子来记录,也可以在学习之后写一个总结,终究人的精力十分有限,很多时候,并不能像
硬盘一样存储起来就不会丢失,更多的时候它更像一块
内存。
同道交流:这一层里我觉得最重要的就是和一些技术较好的人成为朋友,和他经常探讨一些技术,这样可以缩短学习的周期,同时也能快速的解决问题,终究人的精力十分有限,没有遇到过的问题,说不定其他人遇到过。这方面自己也体会颇深,也很感谢之前几个公司及现在公司的同事、社区朋友以及一些志同道合之士,感谢你指点,没有你指点,也不可能从小鸟进化成逐鹿顺序界的菜鸟,也为自己能成为一只老菜鸟感到自豪!
少考证、多务实扩展的这一层里,要谨记不要为了考证而去考证,那样是没有任何实际作用的对MVP也一样,一切顺其自然为好,记得大学时候身边就有人连续四次荣获MVP称号,这叫我当时是相当的佩服,佩服之余我要切记务实,没有务实的东西都是很虚拟飘渺的还记得自己当初在大学里面受到考证风气的影响,神经兮兮的去考过了什么国家计算机四级和MCP等一大堆证件,后来到公司面试兴高采烈拿着20多张证书,才知道那些东西根本就没有什么价值,反而让自己去学习了最不喜欢的技术,同时也给自己挂上了考证族的名号。所以后来总结就是劳民伤财、徒添伤悲!
技术分享自己公司及其他公司进行一些技术
培训或者讨论,其实重要的不是什么荣誉,而是把这个培训看成是一些技术交流和分享,因为在这个过程中,可能会重新认识你所掌握的技术、可能会遇到一些志同道合的人、可能会在分享过程中纠正以前的
错误认识、可能会在各方面得到提高从而完善自己的知识体系,但是最重要的要认真对待每一次培训,知之为知之不知为不知,不要不能教导他人反而误导了人。记得有一次在公司培训OO与设计模式,知道这个专题想在一下午的时间把它讲清楚是非常困难的这个不像之后培训的WPFWCF和Silverlight那么单纯,并且每个人的基础都不一样,当中有还没有毕业的实习生、刚毕业不久的毕业生、工作了数年的工程师及技术大牛们所以如何把这些知识很好的拔出到每个人的知识树上面成了考虑的重点。同时我心里也比较矛盾,一方面希望参与培训的同事多一些,另一方面希望人越少越好。前者则是依照常理来考虑的终究培训者都希望自己培训,越受欢迎越好,这样才干使自己的思想得到更多人的认可,自己也能实现分享知识的目的后者则是担心怕讲不好,少一点人就少一点罪过。可是恰巧这一次是历次培训中
最多的一次,来参加培训的同事有一百多人,不过幸好由于会议室坐不下,才分成了两批,这样就可以让我具备了更充分的时间和更好的心态。总之培训是向内和向外的提炼与升华,正所谓“自己理解的知识未必能使人家理解”这不仅考验的技术,还考验了一个人的综合能力。
http://baid.us/neGt