程序人生之六:写在 2010 年最后一晚,我这两年的工作总结

标签: 工作2010silverlight游戏java数据结构
1720人阅读 评论(2) 收藏 举报
分类:

程序人生之六:写在 2010 年最后一晚,我这两年的工作总结

          世上的天才是极少数的,大多数人的智力都是差不多的。然而总总能评出个一二三等,这是什么原因呢?——积累。感谢 CSDN 网友 rcfalcon 朋友的这篇博客,相信读完以后,身为程序员朋友的你能够积累一些新的东西。
          原文如下:
          在这将近两年的工作里,发生了太多的事情,有了太多的收获和惊喜。一直想将他们付诸笔下却没有这个动力或者时间来实现,今天选择在 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 来万(当然,这不是我自己赚的钱,借的),怀着坚定的信息,将路踏实的走下去。愿新年大家一切都好!原文链接:http://topic.csdn.net/u/20110101/00/4faf2608-f551-460e-95f6-1162b1af5e1a.html

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4325602次
    • 积分:35194
    • 等级:
    • 排名:第126名
    • 原创:240篇
    • 转载:35篇
    • 译文:159篇
    • 评论:1472条
    个人微博
    最新评论
    文章存档