成长之路是否应该由我们自己来辩论。

这几天一直在写一个实时操作系统内核,很成功。等我完成后,我会把它公之于众,希望能为中国的it发展尽一份力。最近看到很多同学朋友和我当年一样无所适从,所以写下我的经历鼓励大家,希望能给刚入行的朋友一点帮助。

转眼间,我已经在IT行业学习和工作了七年多。期间做过网页,写过MIS,写过数据库,做过应用程序,做过通讯软件,做过硬件驱动,做过协议栈,现在又做过操作系统内核和IC的开发,走了很多弯路,吃过很多苦。我上的是三流院校,即使一个城市的大部分人都不知道。因为学校不好,靠学校的名气是没有希望找到好工作的。我所有的希望都寄托在自己的努力上。大一开学前的假期开始学习。我记得我买的第一本书是《计算机基础DOS3.0》。不要害怕。其实当时已经普及了DOS6.22,但是我在书店看到了DOS4.0、5.0、6.0的书,以为是像英语一样的第四、第五、第六册。我记得到处找DOS 60。还好开学前没找到帕斯卡。那时候既没有电脑,也没有人可以咨询。我连程序是什么的概念都没有,只能死记硬背代码,然后写在纸上。我大三才考了486。在此之前,我已经记不清在纸上写过多少程序了。我只知道最长的一篇写在A4大小的草稿纸上,长达30多页。我的C语言,英语,英语,英语,英语,英语和汉语。所以条件是可以克服的。希望我的经历能给条件困难的同学一些信心。第一次上电脑是在姐夫的机房。心情无比激动,但一上电脑,我就傻了眼。他们用的是英文版的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公司兼职。虽然钱不多,但是学生时代1,000多的收入已经很满足了。终于用赚来的钱换了电脑。高三开始找工作。这个时候我已经有了很多工作经验(当然现在想想还是很幼稚的)。我开始听从父母的意愿去那个研究所。我实习的部门也希望我能去,但不知道为什么最后成了官僚单位。我很生气,就去了一家公司,在那里兼职做MIS的组长。大三期间到毕业后一年,我做过各种MIS,从煤气,烟厂,公安,铁路,餐饮到高校。我要努力工作,经常加班熬夜,从跟客户谈需求到设计、编码、测试、交付。当时觉得很有成就感,觉得自己还不错。现在想想真的很肤浅。刚开始工作的同学很容易被误导,各种开发工具让人眼花缭乱,但也感觉受到公司的高度重视,但这样的工作永远是低级的开发者。别跟我说系统分析有多重要多难。你以为和用户谈需求谈设计就是系统分析设计吗?国内有几个公司能做到非常规范的?我是一名ISO9000内部审计师,我在Rational公司接受了很多培训,并获得了四个证书。另一家公司让我做CMM。我听说过很多关于这方面的事情,但是在中国许多事情已经发生了本质上的变化。一个公司不需要通过ISO9000或CMM就可以标准化。现在在一家有几十年历史的外企工作,里面的管理是一般国内企业做不到的。作为一个刚毕业没踏入社会不久的学生,短时间内掌握系统分析与设计几乎是不可能的。面向对象和UML只是一个工具,关键是人自己的思想。不代表熟悉C++和Rose就能做出好的设计。相反,如果你素质高,你可以用C写出比其他人用C++更模块化的程序。进一步说,国内软件开发行业存在一个怪圈,很多人认为VC > Delphi & gtVB,真的很搞笑。这些软件都是我开发的。说白了都是工具,要根据应用的需求来选择使用哪一个,而不是哪一个更优越。如果你因为很有面子而选择一个开发工具,那只能说明你很浅薄。如果是分层的,那么这些工具就不是分层的,因为它们都使用一些系统化的API。微软的朋友不会因为你记得他们有多少API或者类就觉得你很棒。你永远是他们的客户,他们看重的是你口袋里的钱。我也做过系统内核,打包过很多API。同样,我也不会看重用这些API进行二次开发的客户,除非他们能做出自己独特的设计。至于有些人认为c++ >;c那就更可笑了。你不妨问问这件事。现在有几个用C++写的操作系统内核和几个用C++写的实时系统。当然,我不是说C++不好,只是现在的内核和实时系统中的C++无法和C竞争,至于C++,那就另当别论了。所以我的观点不是你用什么工具和语言,而是你做什么。你的设计体现了你的技术水平。这样工作了一年,感觉很压抑。我做的大部分工作都是技术活,个人技术没有太大提升也看不到方向。所以我决定离开这个城市,去上海寻求更好的发展,我打算放弃以前的MIS,转到通信行业。

我不能在这里不提到我的女朋友。我们是在来上海前六个月认识的。她大四的时候在我们公司实习,公司派她来给我写文件。我们的关系发展很快。她告诉了我许多事情。她家曾经是改革开放的第一批暴发户。她妈妈爱打牌,输了几百万,欠了很多债。她有男朋友,但对他没感觉,就因为他给了她2万多,后来还逼着她写了4万的借条。她男朋友背叛她,不止一次打她。现在他逼她结婚或者让她还钱。这个人还是大学老师!她妈妈花光了她爸爸给她的学费,因为拖欠学费拿不到毕业证。她妈妈生病了,现在需要钱,我就拿出一点积蓄从朋友那里拿了一些,给她交了学费,给她妈妈治病(后来才知道看病的钱没了,我都不知道她妈妈是不是生病了,但是她也没办法)。这时候家里人知道了什么,坚决反对我和她在一起。她原来的男朋友也想毁掉它。无奈之下,我们决定早就离开这个悲伤的城市,不让家人知道。由于时间仓促,我只准备了4000块钱,她仅有的几百块钱也被她妈妈拿走了。我买了三张票,一张中午的,两张晚上的。中午,家人把我送上船,他们一走,我就下了船。我和她乘夜航离开了和她一起生活多年的城市,带走的只是一笔债务。我们这些没去过上海的人,很固执,不愿意去打扰同学朋友。我们到达上海时是晚上六点半。我们不知道去哪里。我们找了一家20元的酒店。这个房间甚至没有窗户。七月的天气令人难以忍受,房间里非常闷热。第二天,我们开始租房子,因为我们身上没带多少钱。我们基本上是步行,花了一周时间。不知道我们在浦东转了多少圈,找到了一套400元的房子,却不知道上海交了半个月的三压一中介费。买了一些锅碗瓢盆,身上只有800块钱,还没有工作。这800块钱我们只好一直支撑到拿到手。为了省钱,我们自己做饭,每天买菜只要两元钱。她很喜欢(或者大学经常挨饿)。我实在不忍心看她现在省吃俭用。她前男友没放过她。他经常打电话骚扰她,还来上海看她。他还说了很多威胁的话。她太善良了,说他以前帮过她,叫我不要分享他的常识。之后天天在家等面试通知。本来想找个MIS公司快速解决眼前的困难,但是她坚持让我不要放弃理想。最后,好事多磨。我找到了一家通信公司。虽然4000块钱的工资赶不上MIS公司开出的价格,但在上海也足够生存了。她也找到了工作。上班第一天,她哭了。那是她第一次来上海哭。我很难过,也很感动。

因为是一个全新的行业,我把自己化整为零,学的VC,Delphi,数据库都没用。摆在我面前的是一些我从未接触过的知识,比如嵌入式,协议,信令。我知道我没有出路,所以我努力学习。我把自己当成应届毕业生,我很努力,也有收获。半年后,我终于熟悉了工作,受到了公司的表彰,工资也提高了一级。接下来的日子里,我们省吃俭用,把欠朋友的1000多元还了,日子终于走上了正轨。这时候女朋友跟我说她想考研究生,我很支持,她就辞职在家学习。另外,我要在这里感谢我的项目经理。他曾经是一家大型通信公司的产品经理,对人很好。我从他身上学到了很多,他也给了我很多无私的帮助。他给了我足够的空间和对我工作的信任。我记得公司安排我维护一个接入服务器软件。因为代码量不算少(5万行),资料文档也不全,维护起来很费劲,所以想再做一次。公司领导不是很支持,可能是觉得工作量太大,但还是大力支持我。私底下他让我做,他挤时间做我的维护工作。在他的支持下,我用了半年时间完成了软件访问服务器,实现了一个比较完整的TCP/IP协议栈。在这里我学到了嵌入式系统设计、驱动开发、TCP/IP和很多通信方面的知识。我用了一年的时间,终于把自己从MIS开发转到了通信行业,站稳了脚跟。我的开发大部分是直接操作硬件,不再拘泥于微软的操作系统,VC,Delhpi等开发工具,终于看到了另一片天空。我喜欢刨根问底。随着开发的深入,软件开发与硬件的联系越来越紧密,硬件知识的匮乏阻碍了我的发展。而且芯片技术基本掌握在国外公司手中,这对于系统级设计是一个非常大的制约。一个新产品出来,第一笔利润(往往也是利润最丰厚的利润)往往被英特尔、摩托罗拉等IC公司赚走,国内厂商只能喝上一点汤。于是决心解决自己的硬件技术障碍,打算离开通信行业,进入IC设计相关领域。当然,我明白,如果我对硬件知之甚少,没有一家IC公司会好心招一个像我一样一无所知的人来培训。所以我必须努力打好基础,学习一些相关知识,为将来做准备。就在我开始从MIS转到通信的时候,我看了很多通信方面的书,在一家ISP做RADIUS计费分拣台。在这种背景下,这家通信公司给了我这个机会。我所在的通信公司是系统设计师,有很多PCB布局硬件人员。平时我很注意向他们学习。因为是做软件的,不好意思看公司里的硬件资料,所以一开始只能在家里看。刚来上海工作,连续加班一年,后来不干了。因为要挤出时间学习,一般都是12左右睡觉,第二天五点半就早早上班,上地铁。当然,学习不会一帆风顺。有些我真的不懂的问题,会积累起来问硬件人员。他们的帮助会让我的学习进步快很多。因为我是在没有任何人指导的情况下自学,一半的时间都花在解决难题上,但这种问题往往能让我从别人的一句话中豁然开朗。我很庆幸自己有这样的学习环境。接下来的一年,我学会了看硬件原理图,学会了简单的硬件设计(模拟电路还有很大差距)。就是这么回事。你安安心心做软件,别人总会觉得你是个软件开发者。开始学硬件,别人可能不认同。中兴的一个朋友也跟我说,一个人不可能什么都学。我明白这一点,但我希望我能做得更好。但是,当你对硬件很熟悉的时候,人们会认为你既懂软件又懂硬件,你的同事也习惯了。这时候我就可以堂堂正正的把硬件资料拿到公司去了,再也不会有人大惊小怪了。让我感到自豪的是,我通过自己的努力做出了一个IAD(软交换终端设备)系统方案,包括软硬件的选型和设计。这个方案得到了公司和同事的认可,让我感到很欣慰。

技术是相辅相成的。当我的硬件有了一定的进步,我的软件设计也有了很大的提升。我能从更深的层面理解问题。我的接入服务器CPU是摩托罗拉PowerPC860。熟悉的朋友都知道,860 QMC和软件之间的批量数据传输通常采用BD表,硬件人员开车时习惯使用固定的BD表。每次接收或发送数据时,我都将数据从BD表复制到用户缓冲区,或者从用户缓冲区复制到BD表。因为理解深刻,我自己重新实现了这个过程,用动态BD表驱动软件从一个网口接收数据,三级交换,直到从另一个接口发出去,没有副本。这种设计大大提高了性能,使系统的指标接近理论值。软硬件结合,让我的设计水平更上一层楼。我现在写的操作系统,编译后把程序反编译成汇编,找出没有优化的代码,然后在C程序中调整。例如,许多CPU没有专门的乘法指令。大家应该都知道,这个CPU上的一个乘法运算往往要占用很多指令周期。有些朋友会说我知道,我会尽量避免使用x符号,但事情往往没有这么简单。你知道如何用C语言实现数组的下标操作吗?仔细看一下反汇编的代码,就会明白C编译器有时候会通过目标的定位操作生成位移指令,但有时候会通过乘法来实现。两者的效率往往相差很大,了解这些问题你就能把系统性能提升到极致。?这些问题我就不多说了。有兴趣的话,以后可以一起讨论。

说的更远一点,真心希望做过更深入软件的朋友有机会学习硬件等相关知识,尤其是做底层开发和嵌入式设计的朋友。这对软件技术的提升有很大的帮助,否则你只知道怎么做却不明白为什么。我的观点也得到了我现在的IC公司项目经理的验证。他告诉我们,我们公司现在的802.11芯片产品的软件经理,以前是设计芯片的硬件,XXX以前是做软件的,现在是做IC的。类似的例子还有很多,但是这种趋势在中国并不是很流行。

我有一些经验分享给你。我只有做好本职工作,才会去学和本职工作关系不大的技术,这样公司老板才不会反感。在入门阶段,我一般不会问那些资深人士,而是问一些资历相对较浅的朋友,比如刚毕业的学生,因为他们经常会给你详细讲解,而资深人士通常会觉得你的问题太简单,我也不好意思多问。我不会问他们,直到我达到了一定的技术水平,他们才能给你更深入的回答。另外有朋友说我机会更大,也希望能走上新的工作岗位。可惜我没有机会。我只苦笑了一下。知道我机会的人应该都知道,我不是出生在什么IT家庭:)一路没有人提拔我。我妈去世早,我后妈(我叫她阿姨)看着我辛苦。有一次她看到我30岁了还在写程序。我的最终目标是IC,不是PCB,所以接下来准备开始学习IC设计。公司的同事不懂IC设计,前路要靠自己。买了很多相关的书,在网上查了很多资料。我花了很多时间学习VHDL,用软件做了一些简单的设计和仿真(没有ASIC设计,只针对FPGA)。随着学习的深入,我逐渐了解了ic设计的基本流程,同时也明白了这一路的艰辛。这个时候,我准备跳槽了。向一家在业内有一定知名度的IC设计公司投了简历,通过了漫长的面试(4个多小时)。其他的都很满意,就是工资不满意。我也明白原因,因为我是这个行业的新人,没有经验。我又一次澄清了自己。公司老板问我能不能接受一个月6000多,我知道他也是按规矩来的。想想我在通信行业的朋友。基本上他们年薪都在65438+万以上,月薪过万的比比皆是。朋友也给我介绍了很多待遇不错的公司。我该如何选择?当时我犹豫了。我热爱我的事业,我渴望我的追求。但我也是一个普通人。我也需要养家糊口。我也想早点买房买车。生活给了我一道难题。

爱因斯坦在63岁时说:“一个人永远不会在30岁之前取得最伟大的科学成就。”这句话给了我很大的压力和震撼。我马上就26岁了,离我30岁只有四年了。我必须抓住这些宝贵的岁月,努力达到我技术的巅峰。为了这个理想,为了更接近我的梦想,我选择了这家IC公司。我明白自己的工资和刚进来的研究生差不多,但为了以后的发展只能忍着,不得不从头再来。换行业是一个很痛苦的过程,尤其是从一个顺遂的岗位到一个陌生的岗位。感觉就像从温暖的被子里爬出来,跳进冰水里,无法接受。在原来的通信公司,我是唯一一个两年涨薪5次的员工。我的公司和同事给了我很大的认可,我在工作中经常被委以重任。但现在都过去了。我只是新公司的新人。没有人知道或关心我过去的成就。我决定重新开始。我把自己当成一个刚毕业的学生,我想用自己的努力得到公司的认可。进入一个新的行业是很痛苦的。我告诉自己,我必须忍受这一切。虽然外面有很多诱惑,但既然做了选择,我就不会允许自己轻易放弃。

我已经在这家新公司工作一个多月了。一开始很难,但现在我已经习惯了。第一个月末,组长找我谈话,说我是新员工中最优秀的。我很高兴,这是对我努力的肯定。在这里也要感谢我的女朋友。她给了我很大的支持和鼓励。每次我动摇的时候,她都鼓励我坚持自己的理想。刚来上海的时候,她跟我说不要勉强做MIS。这一次,她也让我抵挡住了月入过万的诱惑。没有她,我可能不会有今天的成绩。现在公司有自己的操作系统,自己的CPU,DSP等芯片。我可以在这里学到世界上最先进的技术,我们的设计和开发不再完全依赖别人的硬件和系统,这让我很开心。我打算在工作步入正轨的时候学习新知识,实现自己的理想。

在接下来的两年里,我给自己定了几个目标:

1.努力做好本职工作,在工作中得到公司和同事的认可;

2.努力学习IC硬件设计的知识,多请教同事,利用一切机会多实践;

3.实现我的实时操作系统的主体部分,完成TCP/IP协议栈模块,免费发布源代码;

和女朋友结婚,买个小房子才是最重要的,因为我明白事业可以重新开始,但是珍贵的感情很难再要回来。