一个计算机高手的成长

原文地址: http://www.5xue.com/modules/bbs/viewthread.php?tid=43965&extra=page%3D28

 

这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能 够为国内IT的发展尽自己一份微薄的力量。

 

最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助。

 

一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS、数据库,应 用程序,做过通信软件、硬件驱动、协议栈,到现在做操作系统内核和IC相关开发,这中 间走了很多弯路,也吃了不少苦。 我上的是一个三流的高校,就连同一个城市的人多数都不知道。因为学校不好也就没 有指望能靠学校名气找一个好工作。所有的希望都寄托在自己的努力上了,大一开学前的 假期我就开始了学习,记得我买的第一本书是《计算机基础DOS3.0》,大家别吓着了,其 实当时已经普及了DOS6.22了,只是我在书店里看到了DOS4.0,5.0,6.0的书,以为像英语 那样是第四、五、六册,记得当时到处找DOS1.0,现在想想也幸好我没有找到:)开学前 我学完了PASCAL,那时既没有计算机也没有人可以请教,我连程序是什么的概念都没有, 只好死记硬背代码,然后拿纸写,我一直到大三才有了一台486,在这之前用纸写了多少程 序我也记不清楚了,只知道最长的一个我拿A4大小的草稿纸写了30多页,我的C语言、C++ 、VC都是在这样的条件下入门的。所以说条件是可以克服的,希望我的经历多少给条件艰 苦的同学们一点信心。

 

第一次上机是在我姐夫的机房,我的心情激动的无与伦比,但是一 上机我立刻傻了眼,他们用的是英文版的Win3.1,我的那点DOS知识都见了鬼,上机提心吊 胆的一阵瞎摸,一不小心把Word弄成了全屏,怎么都还不了原,当时真是心急如焚,我以 为机器被我弄坏了。第一个C语言程序,就是那个经典的HelloWorld,我调了几个星期,上 机机会非常少,也没有书告诉我开发环境(TC2.0)需要设置,而且 开始我都不知道有编译器,我甚至自作聪明把写好的程序扩展名从.c改成.exe,结果可想 而知。大一学完了C、X86的汇编、数据结构、C++。由于精力都花在自学上了,大一下四门 课挂了彩,三类学校就是这点好,挂上一二十门也照样毕业。不过扯远点说,我那么刻苦 都及不了格,可见我们国家的计算机教育有多死板。 大二准备学VC和BC,当时难以取舍,后来选了VC,不为别的,只为书店里两本书,VC 那本便宜6块钱。我的努力在班上无人能及,学的日夜不分,大三有了计算机后更是如此, 很多次父亲半夜教训我说我不要命了,我一直觉得自己基础差,记忆又不行,条件也不好 ,所以觉得只有多花点时间才能赶上别人。居然后来有许多朋友说我有学计算机的天赋, 让我哭笑不得。我用的是486,16M内存,1G硬盘,当时同学们的配置都是P166MMX,我安装 一个Windows NT4.0需要一个通宵,编译一个BC5.0向导生成的程序需要近两个小时,我的 显示器是个二手的,辐射非常大,开机屏幕冒火花,看起来很酷的:),有一次程序写的 太久,觉得怎么白色的编辑器背景变成了紫色,以为显示器坏了,后来才发现眼睛不行了 ,不过说来也奇怪,到今天我的视力还能保持1.5,真是个奇迹。但是就是那台破机器陪伴 了我两年,让我学会了VC、Delphi、SQLServer等。后来那台机器给我阿姨打字用,据她说 一天她正打的开心,一股青烟夹着火苗从显示器钻出来,之后它才寿终正寝。

 

 大三假期找了个机会在一个计算机研究所实习,与其说实习不如说是做义工,工作了两个 月一分钱没有拿。但是这两个月对我的发展帮助很大,让我早一步了解了社会,刚去的时 候我当然是一窍不通,在那里我熟悉了网络,学会了Delphi和Oracle。由于工作很认真, 得到了比较好的评价,在一位长者的引荐下,我开始和他们一起做项目,这使我在大 四就有了自己的收入,大四又找了两家MIS公司兼职,虽然钱不多,但是在学生期间有100 0多的收入我已经非常满足了,我终于用自己赚的钱把计算机换了。

 

大四下开始找工作,这时我的工作经验已经比较多(当然现在想想非常幼稚),开始听父母的想去那个研究所, 实习过那个部门也希望我能去,但是不知道为什么最后不了了之,这种单位就是比较官僚 ,我一气之下就到了我兼职的一个公司做MIS的TeamLeader。在大三到毕业一年的时间,做 过了各种MIS,从煤气、烟厂、公安、铁路、饮食到高校,什么有钱做什么,工作也很辛苦 ,经常加班和熬通宵,从跟客户谈需求到设计、编码、测试、交付都要上。那时觉得很有 成就感,觉得自己还不错,现在想想真是很肤浅。 刚走上工作岗位的学生很容易被误导,各种开发工具让人眼花缭乱,同时也觉得很受 公司器重,但这样工作永远是一个低层次的开发者。不要跟我说什么系统分析有多么多么 重要,多么多么难。你以为自己跟用户谈需求做设计就是系统分析和设计了吗,国内又有 几个公司能够做的很到位很规范?我是ISO9000内审员,也在Rational公司受过多次培训, 拿了4个证书,还有一个公司让我去做CMM。这些我听过很多,但是很多事情到国内就变了 性质,一个公司不是通过了ISO9000或者CMM就能规范了,我现在在一家有几十年历史的外 企工作,里面的管理不是一般国内企业能及的。

 

作为一个毕业不久以前没有步入过社会的 学生,几乎不可能在很短的时间掌握系统分析和设计,面向对象、UML只是一个工具,关键 是人本身的思想,不是说你熟悉了C++、Rose就能够做出好的设计,相反如果你具备了很高 的素质,你可以用C写出比别人用C++更加模块化的程序。 话说远一些,国内软件开发行业有一个怪圈,很多人觉得VC > Delphi > VB,真是很 搞笑。这几个软件我都做过开发,说白了他们都是工具,应该根据应用的需要选择用哪 个,而不是觉得哪个上层次。如果你因为用某个开发工具很有面子而选择的话,只能说明 你很浅薄。如果说层次,那么这些工具都不上层次,因为它们用来用去都是一些系统的AP I,微软的朋友不会因为你记住他们多少个API或者多少个类就会觉得你很了不起,你永远 只是他们的客户,他们看重的是你口袋里的银子。我也做过系统内核,我也封装过很多AP I,同样我也不会看重那些使用这些API做二次开发的客户,除非他能够作出自己独到的设 计。 至于有人认为C++ > C那更是让人笑掉大牙,不妨你去打听一下,现在有几个操作系统 内核是用C++写的,又有几个实时系统用的是C++,当然我也不是说C++不好,但是目前的内 核和实时系统中C++还无法与C匹敌,至于说C++适合做应用系统的开发那是另外一回事。所 以我的观点是不在于你用什么工具和语言,而在于你干什么工作。你的设计体现了你的技 术层次。

 

 这样干了一年我觉得非常苦闷,做的大多数都是熟练工种的活,个人技术上没有太多 的提高也看不到方向。所以决定离开这个城市去上海,寻求更好的发展,并且打算放弃我 以前的MIS转到通信行业。

以后的每天在家就是苦等面试通知,终于功夫不负有心人,我找到一 家通信公司,4000块的工资虽然赶不上MIS公司给我开出的价位,但也够在上海生存。

 

由于是全新的行业,我把自己降到了零点,我学的VC、Delphi、数据库派不上用场, 摆在我面前的是嵌入式、协议、信令一些我从未接触过的知识。我知道我没有退路,于是 拼命的学习,我把自己当做一个应届毕业生一样,一分努力一分收获,半年过去我终于熟 悉了工作,并且得到了公司的表彰,薪水也加了一级。 

另外,在这里我要感谢我的ProjectManager,他原来是一个大通信公司的产品经理, 对人非常和善,我从他那里学到了很多知识,而且他也给了我许许多多无私的帮助。在工 作上他给我充分的空间和信任。记得公司安排我维护一个接入服务器软件,由于代码量不 算太小(5万行),资料和文档都不齐全,我维护起来非常吃力,所以想重新把它做一遍, 公司领导不太支持,可能觉得工作量太大,但是他极力支持我,私下里他让我放手去做, 我的维护工作他挤时间做。在他的支持下,我花了半年时间完成了接入服务器的软件,并 且实现了一个相对完整的TCP/IP协议栈。在这里我学会了嵌入式系统设计、驱动开发、TC P/IP和很多通信的知识,我花了一年时间终于使自己从MIS开发转到了通信行业,并且站稳 了脚跟。我的开发大量是对硬件的直接操作,不再受微软的操作系统,VC、Delhpi这些开 发工具的约束,我终于看到了另外一片天空。

 

学习当然不会是一帆风顺的,有些实在不懂的问题就积累起来问硬件人员 ,他们的帮助使我学习进度快了很多,因为在没有人点拨的情况下自学,我的一半时间是 花在解决疑难问题上,但这种问题经常是别人的一句话就可以让我豁然开朗,我非常庆幸 我有这样的学习环境。在后面的一年里,我学会了看硬件原理图,学会了简单的硬件设计 (模拟电路方面还有不小的差距),事情就是这样的,当你安安份份做软件,别人永远认 为你是软件开发人员,在你开始学习硬件时别人未必会认同,有位中兴通讯的朋友还对我说 过,一个人不可能把所有东西都学完。我也明白这一点,但我希望自 己做的更好。但当你熟悉硬件后大家又会觉得你好像原本就是软硬件都懂的,同事们也都 习以为常了。这个时候我可以把硬件资料堂堂正正的拿到公司看,没有人再大惊小怪了。

 

话说远一点,我由衷的希望在软件上做的比较深入的朋友们有机会学学硬件以及其它 相关知识,尤其是做底层开发和嵌入式设计的。这对软件技术的提高有非常大的帮助,否 则很多事情你只知道该这样但不会明白为什么该这样。我这个观点在我现在的IC公司Proj ect Manager那里也得到了验证。他告诉我们公司现在的802.11芯片产品的软件经理原本是 做该芯片硬件设计的,某某某原本是做软件的,现在在做IC,类似的例子还有很多,只是 在国内这样的风气不是非常流行。 我有一些心得体会与大家分享,只有当我干好本职工作后,我才会学习与工作关系不 大的技术,这样公司的上司才不至于反感,在入门阶段的问题我通常不去问那些资深人士 ,而是问一些资历比较浅的朋友,比如刚毕业不久的学生,因为他们往往会跟你详细的讲 解,而资深人士通常觉得你的问题太简单,所以回答的也很简单,我又不好意思多问。等 技术上了一定的层次后我才会问他们,他们也能给你比较深入的回答。

 

爱因斯坦在63岁时说过“一个人没有在30岁以前达成科学上的最大成就,那他永远都不会 有。”这句话给了我很大的压力和震动,我马上就26岁了,离30只有四年时间,我必须抓 紧这几年宝贵的时间,努力达到我技术上的最高峰。为了这个理想,为了能离自己的梦更 近一些,我选择了这家IC公司,我明白自己的薪资和公司刚进来的硕士研究生相差无几, 但为了今后的发展只能忍受,一切又得重新开始。换行业是一个非常痛苦的过程,尤其从 一个春风得意的位置换到一个陌生的岗位,感觉象从温暖的被子里钻出来跳进冰水中,让 人难以接受。在原来那家通信公司,我是唯一两年时间涨了五次工资的员工,公司和同事 都给了我极大的认可,工作上也常常被委以重任。但现在这一切都成了过去,在新的公司 我只是一个新人,没有人知道也没有人在意我过去的成绩。我决定重新开始,我把自己看作 新毕业的学生,我要用自己的努力得到公司的认可。进入新的行业是非常痛苦的,我告诉 自己必须忍受这一切,虽然外面有很多诱惑,但是既然作出了选择我就不允许自己轻易放 弃。 我现在已经在这家新公司上了一个多月的班,开始非常艰难,现在慢慢适应了。

 

第一 个月结束时,Team Leader找我谈话,说我是新进员工中最优秀的一个,我心里很欣慰,这 也算对我努力的一个肯定吧。 现在的公司有自己的操作系统,自己的CPU、DSP和其它芯片,在这里我能学到世界上 最先进的技术,我们的设计开发不再完全依赖别人的硬件和系统,这让我很开心。

 

后记: 就像有的朋友说的,我的经历或许会给一些朋友产生误导,在这里我必须说明一下。 我来上海以前学习过于拼命,常常晚上只睡3个多小时,我身高1米71,那时只有108斤(我 现在130多),家人也说我这样拼命活不过60岁,但是当时的我太固执,我对他们说只要能 实现理想活50岁我就够了。那时的拼命使我的身体受到了影响,有一次早上突然腰肌剧痛 难忍,痛的我倒在床上站不起来。虽然我现在已经比较注意,但有时候还会隐隐作痛。后 来在女朋友说服了我,来上海以后我不再如此。我经常引用父亲的一句话“身体是革命的 本钱”。 而且我也发现拼命不是办法,我可以熬一两个通宵,最多的一次我连续工作了三天三夜, 但是我半个月都没有恢复过来,这样是不是得不偿失?学习工作应该是一个长期的过程, 像马拉松而不是百米冲刺。

 

 技术没有贵贱只分,我以前换行业是因为自己的兴趣所致,而不是对哪个行业有什么 偏见。我希望我的经历不要给朋友一个错误的导向,觉得我始终向更高的技术发展。其实 各行各业做到顶尖都是很困难的。话又说回来虽然技术没有贵贱,但是门槛是有高低的, 无论如何,做IC的门槛要比做网页的高,这一点无可否认。国家各种人才都是需要的,但 是作为个人奋发向上的想法还是应该有的,努力在自己喜欢的行业上做的更好,而不应该 停留在比较肤浅的层次上。 我是一个自己觉得比较有自知之明的人,或许我最大的优点就是知道自己有很多缺点 :)。

 

另外我的学习方法也是在不断改善中的,过去 的学习过于讲究数量和时间,那样学习既苦而已效率不高,现在我非常注意学习的效率和 技巧,这样才是学习的捷径(当然不是指投机取巧),比如说学一相对陌生的技术,如果 有条件,不妨问一问有经验的人,不需要问很多,往往他不经意的几句话会给你非常大的 帮助,甚至超过你看一个星期的书。这就像做设计一样,好的设计 是从需求抽象到代码有很多过程,而不能得到了需求就立刻开始开始编码。 当然这么些年的学习和工作多多少少有些收获,下面我说说我的一些学习的心得,这 些方法未必正确,我也在不断探索和改进中。

 

我的学习和工作有相对明确的目标,我不会 一时心动而去学习某一技术,在下决定之前我会考虑很多,包括长期的发展,个人路线的 规划,需要付出的代价、可能遇到的困难及解决的办法等等,在决定后还会制定更加明确 的计划,包括短期、中期和长期的,身边可以利用到的资源(包括好的书籍、资料、软硬 件环境,也包括有经验的朋友或者师长),以及每一个阶段是怎么过渡到高一阶段的计划 ,往往在一个学习阶段一旦上路后会走的相对顺利,但是跨阶段通常比较麻烦,比如从学 习基础知识转到实践。

 

另外我买书也有自己的方法,现在世面上高质量的书远不如低质量 书多,对于一个陌生的技术,往往在第一次买书会选择错误,即使买到一本好书但是它的 方向也未必适合你,所以我通常会先在网上查找一些该技术的介绍,有了一点点概念后再 去买一本比较薄、相对便宜并且内容相对泛泛而谈的书,这是国内作者最善于写的书:) ,再把它浏览一遍后我就会基本明白这门技术的要点,后面买书和制定计划就会明确的多 。否则一开始就想找本好书往往比较困难,而且买回来后努力学习,有时候学了一半才发现 是本低质量的书或者是相对过时技术,让人非常懊恼。另外让有经验的人帮你介绍,通常也是一个不错的选择。

posted @ 2008-07-25 12:59  我家的木子  阅读(1564)  评论(5编辑  收藏  举报