`
freeheron
  • 浏览: 67466 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

工作八年总结

 
阅读更多

    工作这么多年了。突然想总结一下。 

    知识和经验是需要积累的,当知识和经验都积累到一定的程度,或许就能产生质变的效果。这是我近八年的IT职业经历的感受。

     本科毕业时去找工作,当时真的很迷茫,觉得自己好像什么也做不了似的,甚至觉得自己找不了工作。尽管本科时,用过C语言来写过不少代码。但到毕业时,感觉都忘了似的。这还是用得不深、理解不够的结果。毕业作品用VB来做了一个台球游戏。至少看起来也挺象样的。但是感觉对VB的很多东西都不懂。总之,对自己的知识,脑子里就是一盘散沙。本科的学习对什么都是一个大概。根本没有办法或不懂得把学到的东西应用上去。这或许就是知识与经验的最原始的积累阶段,只能说是一个量变过程的开始,离质变还远着呢。

     没办法,上个研究生吧。

     硕士期间,可以说经历一个很大的量变过程。两年半的时间中,差不多一年半的时间是在不停的学习各种知识,准确的说是重新温习和加强了一下本科时学习的知识,诸如,体系结构,操作系统,网络,数据库等等。还有意识的选择的一门语言来重点学习。这样《Java编程思想》的第一版救被我够入了。或许我还是中国大地上读完这边本书前100个中的一个。开始都这本书时,感觉真是天书。当我都到第三遍时,感觉终于开窍了点。书上留下了很多自己笔记。很遗憾的是,后来这本书借给某个同学,让他弄丢了。特别可惜。

     经过一年多的知识学习,当时感觉自己有了质变了(现在看来,只能是个小质变),可以出去显伸手了。很幸运,第一份工作就是一个Java方面的工作。但工作之后才发现,尽管《Java编程思想》看了三遍,但是还是没法很好的工作。为什么呢?没办法,工作的内容是写Jsp和Servlet,《编程思想》中有j2ee的内容本来就很少。那是才突然感觉到,java的内容很多,自己只是知道一个皮毛。自己其实并没有掌握其中的精髓。两个月后,jsp和Servlet也知道了个大概了。为了毕业论文,先不干了。

     写毕业论文的过程,又是一个知识积累的过程,为了能在论文中把东西说得圆满,再次去翻阅了大量的书籍,虽然没有深入学习,但都很多知识都有了大概的印象。这对以后的深入学习很重要。

     论文写得差不多了,还有半年才毕业呢。又找了份工作。这次重新拿起了本科时用过的VB。可能是有过一次小质变,这下用起来就顺手多了。也很幸运到了一个大公司,那时有时间了,兼职跟全职一样,跟正式员工做同样的工作。(收入也差不离多少~) 这算是有了一次真正锻炼的机会,也为以后的工作经验和学习积累做了充分的预演。但是后来,证明这里的工作还是有点单一,或者说单调,只是用VB写代码而已。

    终于毕业了,工作了。 Java相关的工作当然是我最想要的工作。 开始工作了,问题也开始出现了:ant以前看过,不是很熟,以前都是用JBuilder(当时流行这个);struts从来没有听说过;Linux,装过,没深入用过;JVM调优,真不懂; Oracle数据库,装过,也算用过,但是在Linux下真不会使了,当然更不了解其内部的东西;JMS,JMX知道,不熟,并发编程更是不懂了;还有操作系统,网络通讯的底层的东西等等等等,很多东西,感觉自己不熟悉的东西太多了。

    一年过去了,ant很熟了,所有项目工程的编译打包脚本都是我写的,真的很辛苦的~。Linux的很多命令也会用了。

   两年过去了,struts差不多专了。可以自己原创新产品的图形界面框架了。已经用Bash Shell来写了很多脚本了,也开始逐步更深入的去了解Linux了。能解决一些Oracle的问题了。EJB,JMS,JMX之类的东西,因为都有了差不多固定的应用模式,用起来也不难了。也开始去接触性能方面的东西了。

   工作三年了,开始遇到问题了:性能问题。因为以前做的东西对这方面的要求不高了,现在要遇到了。首先是多线程编程和IO编程的问题。多线程方面的编程,虽然可以从书上学到一些内容,还可以参照别人的代码。但是当应用程序大规模的应用起来时,问题就出来了。没有并发编程方面的理论知识,要写出高质量的代码,真的很难,操作系统的知识也很重要。还有EJB、JMS、CORBA中出现的一些棘手问题,自己真的解决不了,因为对它们的理解都是表面的,并没有深入理解。但是也没有办法,没有那么多时间去系统学习了,只能是出现问题的时候去Google学习来解决问题了,但是为什么那样解决,很多东西自己真不知道。这可能工作中的必然阶段。但是这也是经验积累的重要阶段。

    就在不断加班中,度过了职业生涯的头四年。因为工作的需要,诸如ant,hibernate,struts,spring,webwork等等之类的开源工具,用起来基本差不多了;EJB,RMI,JMS,JMX,CORBA,SNMP等等之类也写了不少代码了;当然tomcat, jboss之类当然也熟得很了;MySQL,Oracle对开发工作也不会有多大的阻碍了;Linux,shell编程之类更是用得够多了。这时也开始发现,工作变得越来越容易了。这时因为经验和知识的积累,让很多问题都变得容易解决了。而且很多代码都成形了。用起来也方便多了。但这时候,开始发现自己的进步变慢了。这是必然了,因为很多时候都是在使用自己以前积累的知识和经验。但是自己并没有觉得自己是专家或者高手。就是自己并没有质变。这时特别想去做一些新的东西。但是这种愿望一般都很难实现。因为在一个大公司中,创新往往也是冒险的。

    这时感觉真的出现了瓶颈。现在很多IT技术和工具不断出现,觉得自己去了解它很容易。但同时又觉得这样下去,自己只是在知识面越来越广,越来越是只知道表面功夫,很肤浅。因为工作中并不需要这么多这些新东西。怎么办?现在工作变得容易了,时间也多了。自己必须做些什么了。

     先去解决工作以来自己面临的一些不爽的东西吧。首先当然是并行编程的问题。尽管在工作中做了不少并发编程的工作了。但是基本都是先依样画葫芦,然后出现问题再企图去解决的工作方式。自己并不能完全吃透。很感谢JDK5中的concurrent包和它的实现者,仔细研读了几遍作者的书,加上工作中的应用,感觉自己突然比同事们都高了一个档次,特别是加上掌握了NIO、JVM故障和调优方面的经验之后。至少让自己感觉到,要成为高水平的JAVA开发人员,并发编程、IO和调优这方面的能力是相当重要的。

    来到了职业生涯的第六个年头。突然有个机会需要自己去进一步掌握Oracle。这么多年来,自己除了java开发之外,还多工作都是在Linux和MySQL、Oracle数据库方面,Linux的知识得到了比较全面的了解,而MySQL的内容相对较少(至少那时比较深的书籍不多,只有MySQL本身的文档),也很容易有了一定的了解。Oracle一直都是我比较尊敬的产品,因为它本身的文档就让我尊敬(应该是害怕~)。当年上学时,李开复还在微软,去听了他的一次演讲,他当时就说Oracle是让他很尊重的做大软件的公司。确实像Oracle这样的大数据库软件,也是微软自己所做不出来的。就像自己现在特别想去了解Google的后台的基础平台的实现一样,当时也特别想深入了解Oracle。这样自己真正开始了对Oracle的深入学习的过程。非常感谢Oracle大师们的那基本OracleXXX艺术的书籍。全面学习Oracle的过程其实也就是一个对操作系统、数据库理论知识、网络知识等知识的汇合学习的过程。我对Oracle的学习并不想自己去成为一个DBA(尽管没有考证,我想我比很多有OCP的人强~),但是这个学习过程确实受益非浅。当自己去深入掌握了Oralce某些知识之后,突然感觉自己在其他方面的知识也豁然开朗了。甚至Oracle的一些技术也可以被自己应用到自己的编程实现中,比如就曾经参照Oracle的检查点技术来解决问题。

    工作这么多年了,现在深深的觉得理论知识、基础知识相当的重要。细细体味一下,大学时学习过的汇编、编译原理、体系结构、操作系统、数据库原理和网络等理论知识是多么的重要。如果这些知识都有很好的基础,很多其他知识的学习都可以信手拈来了。可惜毕业的时候这些都大部分还给老师了(当然,也可以说在中国现有的教授模式下,很多这些知识我们并没有被真正授予)。当自己慢慢的去拾起这些知识之后,工作中的很多东西突然被领悟。有一段时间没有去写EJB、RMI、CORBA、JMS之类的代码了,甚至那些API都忘了,但是常常当同事在这些方面遇到棘手的问题时,自己时常能帮助解决、或者至少能根据自己的知识给出解释去指导得到解决的方法。这也许就是基础知识和知识积累的力量。

    当然,基础知识是至关重要,但是只是一味的去读那基本书籍,可能就成了书呆子了,甚至根本没有领悟那些知识,大多得在应用环境中体会。所以很多现在的中国大学教育根本没法真正达到传授知识的目的。所以也很感谢这么多年的工作经历和公司提供的机会。但是基础知识并不一定能带来技术技巧。技巧或许需要更多更广的经验和知识面。基础知识能让自己更容易理解和分析问题,而新技术和经验技巧却能提供更多更好的方法来解决问题。编程语言也许并不重要。但是有时也很重要。当掌握的编程语言多了,找到解决问题的手段也就多了。同样,知识面广了,新技术和技巧的掌握得多了,工作就轻松了~。这也是知识积累的力量。

    这么多年了,自己还是没法预料将来会是怎么的职业生涯,因为计划赶不上变化。但如果知识掌握的扎实,不管将来怎样变化,都一样可以应付。不是知识和技术没有用,得看掌握到什么程度。继续努力吧!

    计划赶不上变化,也许再过八年之后。我又是另一番感受了。

81
23
分享到:
评论
55 楼 tyyh08t1003 2011-09-02  
以扎实的基础应对一切。
54 楼 courage207 2011-09-02  
一条路走到黑
53 楼 suppercall 2011-09-02  
有点感同身受,工作时间长了,进步越来越慢了
52 楼 去你姑 2011-09-01  
哦         
51 楼 moving1023 2011-09-01  
前辈的经验,受教了,还在本科中,也许我想我也可以向着这些去发展。
50 楼 tan4836128 2011-09-01  
LZ的知识面、学习力威武!
49 楼 onedaykoo 2011-09-01  
LZ看来是打算一路走到黑了啊
48 楼 linshuyu 2011-09-01  

读了楼主的文章,首先你的主动学习和自学能力,让我很感动!
47 楼 jearo 2011-09-01  
我想我知道该怎么做了~!谢谢LZ
46 楼 wst0350 2011-09-01  
5年了,累积太少了,被工作所累
45 楼 86asm 2011-09-01  
八年,不容易啊!
在最后lz谈到基础知识重要,我深有同感,但我还是那句话“基础知识的牢固必须建立在高级知识上”。
膜拜LZ,祝工作顺利。

44 楼 hewei0212 2011-08-31  
很有同感,我工作3年,目前好像也遇到技术瓶颈,很希望接下来在多线程编程,网络编程,JVM性能调优,高并发高性能方面下工夫,但目前项目却不需要用到这方面的内容,目前也只能看看这方面的书,但总觉得没有项目来实践这些内容,单纯的看这方面的书籍效果不是很好,请问大侠没有实际的项目可以结合该如何来学这些java高级的课题呢?
43 楼 flyoversky 2011-08-31  
对自己阶段性的审视有助于进一步提高
42 楼 vishare 2011-08-31  
基础知识是至关重要,但是只是一味的去读那基本书籍,可能就成了书呆子了,甚至根本没有领悟那些知识,大多得在应用环境中体会。所以很多现在的中国大学教育根本没法真正达到传授知识的目的。所以也很感谢这么多年的工作经历和公司提供的机会。但是基础知识并不一定能带来技术技巧。技巧或许需要更多更广的经验和知识面。基础知识能让自己更容易理解和分析问题,而新技术和经验技巧却能提供更多更好的方法来解决问题。编程语言也许并不重要。但是有时也很重要。当掌握的编程语言多了,找到解决问题的手段也就多了。同样,知识面广了,新技术和技巧的掌握得多了,工作就轻松了~。这也是知识积累的力量。

写得真好:)
41 楼 Hibernate9 2011-08-31  
从事java行业一年了,大学学的不是计算机相关专业,而在这一行工作中,才发现自己缺乏的知识太多了,计算机网络应用、操作系统、C语言、数据结构等等都没有弄清楚。都得重新去学习,很迷茫.不知道该从那一块入手。
40 楼 wqwqwqwq8992 2011-08-31  
很好,我才刚工作也感觉到学校该学的太多,自己太多东西没去主动学习,工作了才知道该学什么,我会好好学下去的
39 楼 流年似水^Q 2011-08-31  
看到lz的经历,感觉自己有点急功近利了
38 楼 youjianbo_han_87 2011-08-31  
8年还在学这些...........
37 楼 pxs623 2011-08-31  
其实很多大学老师都只会书本上那点东西,没啥实际应用能力。本科生把知识还给老师或多或少是老师没有结合实际项目让学生体会知识,或者书本本身编写的就不够好。
36 楼 TonyLee0329 2011-08-30  
趁着还没毕业,打好基础了。。。谢谢分享经验!

相关推荐

Global site tag (gtag.js) - Google Analytics