CSDN:写在2010年最后一晚,我这两年的工作总结

在这将近两年的工作里,发生了太多的事情,有了太多的收获和惊喜。一直想将他们付诸笔下却没有这个动力或者时间来实现,今天选择在

2010年的最后一个夜晚。北京的冬天外面挂着凛冽的寒风,而屋内,一瓶啤酒,坐在电脑旁,我决定静下心来好好的记录和分享在这两年中的收获和喜悦。

Ok,废话少说,let's talk.

1.走上工作
08年底,那时我大四,在国内一所一流的大学读计算机。和大多普通的大四学生一样,我选择了考研,只是因为觉得从心底里没有做好工作的准备,我热爱游戏,热爱自己所谓的音乐,热爱和兄弟们整天宅在宿舍的感觉,热爱能自由支配的时间。说实话,大学四年我几乎没学到什么,我从小学开始学习编程,我初中高中参加过信息学OI,所以有相对比较扎实的编程功底。大学中,我混迹校园,后来沉溺游戏,学业上没有取得过任何值得骄傲的东西(只有一门程序实践课曾经打过满分),游戏上取得的成绩就大多了,呵呵,这里说这个了。走过来之后,会发现所谓的电子竞技信仰,那都是小孩们编织给自己的梦想,活在自己世界里的英雄,不是真正的英雄。

临近考研,我觉得自己这样下去很没有意义,即时考上了也不开心,当时我想改考北大,所以我甚至想再复习一年,来年再考。所以,考研理所当然的没过,不调剂,于是开始无聊找实习。当时托一个在网上认识的北理弹吉他的朋友(现在已经成了我的非常好的哥们)内推到现在的公司实习。

于是乎准备简历+面试了N轮(为什么实习生也有N轮面试,这个我当时很费解,后来才知道是为了确定把我放到哪个岗位),通知我来上班。

说实话,我的专业应用水平当时在年级中算不错的,对语言层面的掌握(当时C、C++、JAVA、C#、PASCAL、汇编什么都小懂)和数据结构(常年做ACM类在线题库)都不错,所以面试笔试什么的基本不成问题。

2.实习
2009年3月,我入职开始实习。我被分配在一个部门叫做“终端产品事业部”,主要做一个嵌入式的中间件研发。走进工作,才知道原来正规的工程项目研发和学校写的代码是天壤之别,逼迫我不断进步、学习,我当时对很多面向对象的概念都还很模糊,因为在学校做算法或者数据结构题的话,基本都还是用面向过程(在学校时即使是用C++,也只是偶尔用到一些STL特性而已,很少用到面向对象)。

我觉得这段时间我过的异常“痛苦”且“快乐”。痛苦的是:我发现自己是一个软件研发的门外汉,“虚函数”和“纯虚函数”我甚至都不知道是干什么的,更别说什么“回调函数”,以及后来的软件上的所谓“集成”、“移植”等概念了。快乐的是:同事们非常友好,我在每个人身上都能挖掘到无穷无尽的宝藏,学到很多宝贵的知识,这种知识不是对课本的再复述,而是结合了实际经验和各人的理解消化之后的知识。

我迫切的热爱上了与人沟通,正因为这样,也使得我很快的成长起来。

我这时发现一个自己的很大问题,就是我想表达一个自己的思想,却总是无法找到最贴切的软件用词。后来我总结,这是软件研发新手必须走过的一关,就是了解团队沟通术语。每个团队都有自己的表述习惯,可能是起源于/标准化于团队的一个或若干个技术能手,总之,这种标准化沟通用语在工作中能起到莫大的作用。(包括后来了解的广义上的“设计模式”,其一堆看上去很牛X的模式名,也只是总结出来的团队沟通用语)

由于我在工作中的出色表现,我的实习工资被从1500/月 提高到硕士生标准2000/月。

不过实习嘛,后来也基本处于各种项目周边打酱油的阶段,不可能给你核心项目研发任务的,公司也不敢冒这个险。之后我回学校做毕业设计,就基本又断断续续请了2个月假。

3.毕业入职
09年7月毕业,经过和兄弟们狂喝滥灌的日子后,收拾精神参加工作。大家都知道,09年毕业生就业情况特别差,很艰难,特别是计算机专业,我的一些同学直到现在,也没有找到理想的工作。当时公司给我的offer相对来说不错,4500/月 + 北京户口。

对于本科生,解决户口是一件不太容易的事,所以我就珍惜了下来,决定到这家公司干。

正式入职,继续做 中间件研发。这时我开始参与核心项目,刚开始还是应用的研发与移植。随着对业务、开发流程的熟悉,我有了很多自己的想法,从以接口、框架的应用层面开始向引擎方面进发。后来技术总监对我比较欣赏,再加上一个老员工的离职,一下子让我从外围的开发工作投入到核心研发。

在这期间,我做过一个快速项目的项目经理(技术竞标,不过这个项目本来就没希望)。做过一个架构重构的实施负责人(领导3人团队,并且有来自各个team的技术支持)。做过一个系统最核心模块的代码重写。做过一个省级项目的应用层开发。做过一个N个厂家技术移植的白盒测试和技术支持(这里出丑了,对外邮件中用词各种不专业,哈哈)。

4.工作之余的思考
工作总是很繁忙,伴随着加班、辛酸。有时候甚至加班到晚上3点回家,我也没有任何怨言,反而有一种解决问题了的喜悦。

但是在工作之余,不免很多想法冒上心头。

 1)作为乙方,我有时觉得我们做的事情很没有地位。“摇尾乞怜”可能太过分了,研发的地位比商务低,整天需要修改代码来适应商务或者甲方的要求。让我很没有自豪感,在我心中,程序员、软件工程师应该是一个高傲的职位,是一个知识分子,知识分子都有一种独特的清高,为了五斗米折腰摇尾乞怜,真窝囊。(请原谅刚毕业的我内心的躁动,其实程序符合需求这是软件研发的基本原则,只是当时我太年轻,哈哈)

 2)我越来越不喜欢自己的工作内容,整天应付繁杂的BUG,这些BUG有时是来自底层的,你需要找负责底层的TEAM做支持,而在应用之下、硬件之上封装了3层!由于是跨平台的,可能同时还有N个操作系统平台和软件平台,C/C++开发跨平台这方面本来就很有问题,再加上中间层开发者

水平良莠不齐,或者中间层没有经过严格的接口测试,或者porting部分没有经过严格的移植测试,问题就来了……找BUG原因会找到会让你崩溃的。

 3)我对嵌入式一点兴趣都没有,没有成就感。

这时我对游戏开发产生了浓厚的兴趣,于是开始业余时间自己研究游戏开发的一些技术和原理。当时也啥都不懂,就组织了一帮子志同道合的朋友开始弄,自己做系统设计、项目组织。写了半年差不多整了几万行代码(做一个框架开发),当时我们还饶有兴致的自己实现了一个脚本解释器、一个封装HGE的2D渲染库、一个回合制游戏核心框架和一个牛B的游戏剧本半成品,后来由于时间和技术因素,暂时搁浅。但是我一直认为这段时间业余时间(几乎所有业余时间)做这个游戏框架是对我水平的一个极大的飞跃。后来我还研究了silverlight、WPF等“时髦”技术,这都是后话。

5.重拾信心
在工作中,身边的同事们对于我来说都是大牛,感觉从他们那儿知识总是取之不尽。于是我一直以一种很谦卑的态度在工作、生活。认识我的人都知道,可能我是一个比较傲的人,谈起对技术的理解,绝对不会认耸。后来想起来,也就只是能在不懂的人面前吹吹牛逼罢了,在真正的高手面前,你什么都不是。

时间一晃到了2009年10月。这时,有一个全公司范围内的技术级别考评。公司很多研发人员都参加了。不可思议的是!

我在笔试中取得了全公司最高分。(当然,很多大牛没参加)要知道,这是一个在美国上市的中国技术公司,人才济济,我从未想过能脱颖而出。这让我顿时对自己有了新的定位,我仔细整理了一下自己的思路:通过半年的工作,我在业务上已经有了大致的了解。包括我们的产品定位,技术选型。同时在技术上我有了飞速的进展,对如何构建工程级项目从完全不懂已经入了门。在我和我的一般同事们比较中,可能欠缺的就是对产品的细化理解以及对业务的理解了,而并非能力本身的差距。我从小到大,从来不怀疑自己的智商。而实践证明,我确实也能以较“惊人”的学习速度快速达到学习目的。所以我一扫工作中的阴霾,重新树立了自己的绝对自信,原来这半年我在工作中的稚嫩只是因为业务确实太复杂,而不是我水平低人一等。这让我有信心去学习任何复杂的软件研发技术和业务。

6.换部门
到了2009年年底,突然有消息,基于三网融合的思想,公司决定迈向互联网方向。马上要组建相关部门,选了我作为第一批员工。

我一万个愿意,我早就想摒弃嵌入式这块(硬件不是我的长项)而投入互联网的怀抱了。而且新的业务很快速被定为到以搜索业务、数据挖掘业务为核心的产品上。部门组建初期,甚至长期一段时间,我们只有3个研发人员。另外两位都是经验极其丰富的,一位有近10年工作经验后来担任部门技术总监,一位是清华毕业工作20多年的破解专家。只有我一个新人,而当时老大对我的任务就是,不断的学习新知识。

我擦,这个任务我太爱了。从此畅游在各种互联网技术中,在这段时间中,我整个从搭建、维护到调优过LAMP,我做过silverlight甚至flash,我甚至写过css/js/html,业务上还接触到ajax以及其长连接推送应用comet,这些技术从调研到最后应用于产品全都是经我之手。

值得一提的是,部门后来马上转入一位DB专家,他是一个非常热爱交流的人,我通过整天的和他交流,了解了在工程项目中数据库设计的流程和一些基本理念。

工资的话,这时我主动通过人事(人事MM和我很熟~,因为我在公司玩乐队,所以认识了来自各个部门的好朋友。)和老大提了一下,给我涨到了6000/月

7.JAVA团队
2010年6月左右,部门在一个项目上决定整体技术转型JAVA,于是招聘了一位JAVA架构师。我也开始投入JAVA的怀抱,由于有了工程型构建的底子加上面向对象,我在很短时间内就熟悉了J2EE的一些常见概念。比如IOC、AOP、ORM的概念和深入理解,同时熟悉了spring、hibernate、

lucene等JAVA模块。同时参与到项目的具体编码,我也是负责最核心的算法组织模块。

后来由于设计问题,需要进行大规模重构。我临危受命,负责组织重构,加班加点出色的完成了任务。后来就负责整个项目的技术上开发,该项目现在仍在维护,大致可以理解为一个分布式调度的数据挖掘框架及实现,加上一个模式识别组件,加上一个自动聚合算法。这个项目后来由部门老大亲自操刀设计,我参与了设计全过程,让我结合实际理解了 解耦、分工、系统规模以及数据流驱动。

这里有必要提一下部门老大这个人:他也同时是我原来部门的老大,跟我一起转到这个部门。我们部门成立就是为了要最终成立一家独自运作的公司(相当于内部二次创业),所以也相当于是我们自己的事业。老大是清华自动化毕业,10多年的工作经验,从硕士阶段就从事软件相关,毕业开始带领研发团队,到原来公司上市的产品都是他组织研发,让公司的董事们能登上中国富豪榜……太牛B了,我在之前部门还见过他写的代码,岂止能用膜拜来形容。是一个绝对的技术至上的研发出身管理人员,办事果断,亲力亲为,严厉……总之非常符合我的个性。

这时老大找我谈话主动给我涨薪到8K/月。我在之后的项目中,还做过若干通用方案的调研、设计,比如远程数据传输方案、分布式日志收集方案。还解决了项目中的重大技术问题。(之前应用跑在tomcat中总是有内存问题,我通过jprofile工具仔细跟踪,结合一些技术文档,解决了这个问题,根源在于第三方库使用的不正确。)

8.买房
其实2010年过年之后我就一直在考虑买房的事情,也不断看房中。终于在6、7月的时候决定买下一套房子,整个过程中资金筹措、谈判之类的把我累的够呛,够写一篇中篇小说,这里先不赘述了。总之我大概以110万代价(40+首付,60+贷款)买下了一套位于北京5环外的66平米的房子。现在看来,还是值得的,因为房价一直在涨,而且本地将处于三条地铁线交界区,肯定将飞速发展。

所以2010年的大事之一,就是我有了第一套自己的房子。

9.转变
由于之前JAVA开发项目的拖沓与各种管理问题,领导很愤怒,后果很严重。相关人等都被“请”走。而我们成立公司的事情也是越来越迫在眉睫,我们意识到,一位好的系统架构师是难寻的,也是难以从其他公司挖过来的。

老大很有魄力,(注意,我觉得这一点也是来自清华人共有的魄力,后面会解释)老大说,我们应该自己培养一个架构师。任何看起来非常牛逼的架构,也只是看起来而已,归根到底还是为需求服务,并且商用级别的架构都没有什么巧妙也没有什么难(当然这里指一般的商用系统,不是指改变世界的前沿技术如google、facebook),无非在于架构师对技术的理解、对设计的经验以及对技术发展趋势的把握和对技术发展前沿的嗅觉。于是,被认为具有良好计算机基础 和学习能力的我,被任命为部门架构师,也就是新成立以后公司的架构师。并且工资成8K/月 涨到 XX(未定)/月。我十分欣喜,同时也深感压力。喜的是我竟这么快成为了架构师,这是多少软件研发人员心中的目标;压力是,作为一个毕业不到2年的本科生,我何德何能担此大任。

当然,我这人最大的优点就是自我解压。我很快投入到新的工作中来,在工作中,老大安排了我和公司的首席科学家经常沟通,通过手把手的讨论我的设计稿,以及“夜半虚前席”的讨论,我在设计上很快的有了入门。我了解到了从头开始设计架构的考虑重点,一般流程以及如何迈出关键步伐,在哪个阶段定稿、拍板哪个部分的技术选型。并且在一个很快的时间内,我设计并组织实现了一个通用的分布式工作流引擎。并且这个引擎将大规模应用到今后的商用级系统。

这段时间,我还在部门推广lua、python等技术的应用,通过不断学习、熟悉新的知识,我将尝试寻找更多的新技术与我们产品的结合点。我相信,这也是系统架构师的职责。

10.清华人共有的品质
在工作中,我有许多同事都是毕业于清华大学。他们都是“土生”的清华人(从本科开始一直是清华),我发现了许多真正值得学习的共同品质,这是一些独特的气质。可能是真正的聪明人的体现。

1) 归纳能力。总是能把问题归纳成一个树状描述结构,条理特别清晰。

2) 愿意思考。在力所能及的思考范围内,总是把问题想的尽量全面,而不是留给“以后”去考虑。

3) 认真。从不轻视问题。

4) 理解能力。和聪明人说话从来都只要说一半,他就懂了。我太喜欢这种感觉了。

……

我并不是说这是只有清华人才有的品质,我只是觉得这些都是我们非常值得学习的,你说呢?

11.成为股东
新的公司马上成立,员工可以具有一定的持股。

我将投入10来万(当然,这不是我自己赚的钱,借的),怀着坚定的信息,将路踏实的走下去。愿新年大家一切都好!

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/rcfalcon/archive/2010/12/31/6110871.aspx

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...