默默无闻七年 最终成就一个优秀的IT人

这些日子我一直在写一个实时操做系统内核,已有小成了,等写完我会所有公开,但愿可以为国内IT的发展尽本身一份微薄的力量。最近看到不少学生朋友和我当年同样没有方向,因此把个人经历写出来与你们共勉,但愿能给刚如行的朋友们一点点帮助。
    一转眼我在IT行业学习工做已经七年多了,这期间我作过网页,写过MIS、数据库,应用程序,作过通讯软件、硬件驱动、协议栈,到如今作操做系统内核和IC相关开发,这中间走了不少弯路,也吃了很多苦。
    我上的是一个三流的高校,就连同一个城市的人多数都不知道。由于学校很差也就没有期望能靠学校名气找一个好工做。全部的但愿都寄托在本身的努力上了,大一开学前的假期我就开始了学习,记得我买的第一本书是《计算机基础DOS3.0》,你们别吓着了,其实当时已经普及了DOS6.22了,只是我在书店里看到了DOS4.0,5.0,6.0的书,觉得像英语那样是第4、5、六册,记得当时处处找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,我安装一个WindowsNT4.0须要一个通宵,编译一个BC5.0向导生成的程序须要近两个小时,个人显示器是个二手的,辐射很是大,开机屏幕冒火花,看起来很酷的:),有一次程序写的过久,以为怎么白色的编辑器背景变成了紫色,觉得显示器坏了,后来才发现眼睛不行了,不过说来也奇怪,到今天个人视力还能保持1.5,真是个奇迹。可是就是那台破机器陪伴了我两年,让我学会了VC、Delphi、SQLServer等。后来那台机器给我阿姨打字用,据她说一天她正打的开心,一股青烟夹着火苗从显示器钻出来,以后它才寿终正寝。
    大三假期找了个机会在一个计算机研究所实习,与其说实习不如说是作义工,工做了两个月一分钱没有拿。可是这两个月对个人发展帮助很大,让我早一步了解了社会,刚去的时候我固然是一窍不通,在那里我熟悉了网络,学会了Delphi和Oracle。因为工做很认真,获得了比较好的评价,在一位长者的引荐下,我开始和他们一块儿作项目,这使我在大三大四就有了本身的收入,大四又找了两家MIS公司兼职,虽然钱很少,可是在学生期间有1000多的收入我已经很是知足了,我终于用本身赚的钱把计算机换了。大四下开始找工做,这时个人工做经验已经比较多(固然如今想一想很是幼稚),开始听父母的想去那个研究所,实习过那个部门也但愿我能
  去,可是不知道为何最后不了了之,这种单位就是比较官僚,我一气之下就到了我兼职的一个公司作MIS的TeamLeader。在大三到毕业一年的时间,作过了各类MIS,从煤气、烟厂、公安、铁路、饮食到高校,什么有钱作什么,工做也很辛苦,常常加班和熬通宵,从跟客户谈需求到设计、编码、测试、交付都要上。那时以为
  颇有成就感,以为本身还不错,如今想一想真是很肤浅。
    刚走上工做岗位的学生很容易被误导,各类开发工具让人眼花缭乱,同时也以为很受公司器重,但这样工做永远是一个低层次的开发者。不要跟我说什么系统分析有多么多么重要,多么多么难。你觉得本身跟用户谈需求作设计就是系统分析和设计了吗,国内又有几个公司可以作的很到位很规范?我是ISO9000内审员,也在
  Rational公司受过屡次培训,拿了4个证书,还有一个公司让我去作CMM。这些我听过不少,可是不少事情到国内就变了性质,一个公司不是经过了ISO9000或者CMM就能规范了,我如今在一家有几十年历史的外企工做,里面的管理不是通常国内企业能及的。做为一个毕业不久之前没有步入过社会的学生,几乎不可能在很短的时间掌握系统分析和设计,面向对象、UML只是一个工具,关键是人自己的思想,不是说你熟悉了C++、Rose就可以作出好的设计,相反若是你具有了很高的素质,你能够用C写出比别人用C++更加模块化的程序。
    话说远一些,国内软件开发行业有一个怪圈,不少人以为VC>Delphi>VB,真是很搞笑。这几个软件我都作过开发,说白了他们都是工具,应该根据应用的须要选择采用哪一个,而不是以为哪一个上层次。若是你由于用某个开发工具颇有面子而选择的话,只能说明你很浅薄。若是说层次,那么这些工具都不上层次,由于它们用来用去都是一些系统的API,微软的朋友不会由于你记住他们多少个API或者多少个类就会以为你很了不得,你永远只是他们的客户,他们看重的是你口袋里的银子。我也作过系统内核,我也封装过不少API,一样我也不会看重那些使用这些API作二次开发的客户,除非他可以做出本身独到的设计。
    至于有人认为C++>C那更是让人笑掉大牙,不妨你去打听一下,如今有几个操做系统内核是用C++写的,又有几个实时系统用的是C++,固然我也不是说C++很差,可是目前的内核和实时系统中C++还没法与C匹敌,至于说C++适合作应用系统的开发那是另一回事。因此个人观点是不在于你用什么工具和语言,而在于你干什么工做。你的设计体现了你的技术层次。
    这样干了一年我以为很是苦闷,作的大多数都是熟练工种的活,我的技术上没有太多的提升也看不到方向。因此决定离开这个城市去上海,寻求更好的发展,而且打算放弃我之前的MIS转到通讯行业。
    写到这里不能不提到我女友,咱们是在来上海前半年认识的,她大四在我公司实习,公司派她给我写文档,咱们的感情发展的很快。她告诉我不少事情,她家本来是改革开放的第一批暴发户,她母亲爱打牌,输掉了几百万,还欠了不少债,她有男友,可是她对他没有感情,只由于他给了她母亲两万多块钱,后来还强迫她写了四万块的借条,她男友背叛过她而且不止一次打她,如今逼她结婚否则就要她还钱。这人竟然仍是一个高校的老师!她母亲把父亲给她的学费花了,由于拖欠学费她没有办法拿到毕业证。她母亲如今有病须要钱,我拿出了本身的一点积蓄而且跟朋友们接了一些,替她交了学费并给她母亲看病(后来才知道看病的钱又不知所终,就连她母亲是否是有病我都不知道,但她也是没有办法)。这个时候我家知道了一些事情,坚定反对我和她在一块儿,她原来的男友也极力破坏。无奈之下咱们决定早必定离开这个伤心的城市,而且瞒着咱们家。因为时间仓促,我只准备了4000块钱,她仅有的几百块钱也被她母亲要去了,我买了三张票,一张是中午的,两张是晚上的,中午个人家人把我送上船,他们一离开我就下了船,我和她乘坐晚上的船离开了这个我和她生活了不少年的城市,带走的只是一身债务。没有来过上海的咱们两个性倔强,都不肯意去麻烦同窗和朋友。来到上海是傍晚6点半,咱们都不知道该去哪里,咱们找了一个20块钱的旅馆,这个房间连窗户都没有,7月份的天气酷热难耐,房间里很是闷热。次日咱们开始租房子,由于身上的钱很少,咱们基本都是步行,花了一个星期时间,不知道在浦东转了多少圈后找到了一个400块的房子,可是咱们都不了解上海是付三压一,还要付半个月的中介费,买了一些锅碗瓢盆后,咱们身上只有800块钱了,工做都尚未着落,这800块钱要支持到咱们拿到第一个月工资,为了省钱咱们本身作饭,天天买菜只花两块钱,她很是喜欢吃(也可能她在大学常常挨饿的愿意),看到她如今这样省吃俭用我真的很不忍心。她之前的男友也没有放过她,常常打电话来骚扰,而且来上海看她,还说了很多恐吓她的话,她过于善良,说他之前毕竟帮助过她,叫我不要与他通常见识。之后的天天在家就是苦等面试通知,本来我想迅速找一家MIS公司解决眼前的困难,可是她坚持让我不要放弃本身的理想,终于功夫不负有心人,我找到了一家通讯公司,4000块的工资虽然赶不上MIS公司给我开出的价位,但也够在上海生存。她也找到了工做,第一天上班她哭了,这是她来上海第一次流泪,我内心很难受也很感
    因为是全新的行业,我把本身降到了零点,我学的VC、Delphi、数据库派不上用场,摆在我面前的是嵌入式、协议、信令一些我从未接触过的知识。我知道我没有退路,因而拼命的学习,我把本身当作一个应届毕业生同样,一分努力一分收获,半年过去我终于熟悉了工做,而且获得了公司的表彰,薪水也加了一级。后面的日子里咱们省吃俭用,把欠朋友的1万多块钱还了,日子终于上了正轨。这时女友告诉我她想考研究生,我也很支持,因而她辞职在家备考。
    另外,在这里我要感谢个人Project Manager,他原来是一个大通讯公司的产品经理,对人很是和蔼,我从他那里学到了不少知识,并且他也给了我许许多多无私的帮助。在工做上他给我充分的空间和信任。记得公司安排我维护一个接入服务器软件,因为代码量不算过小(5万行),资料和文档都不齐全,我维护起来很是吃力,因此想从新把它作一遍,公司领导不太支持,可能以为工做量太大,可是他极力支持我,私下里他让我放手去作,个人维护工做他挤时间作。在他的支持下,我花了半年时间完成了接入服务器的软件,而且实现了一个相对完整的TCP/IP协议栈。在这里我学会了嵌入式系统设计、驱动开发、TCP/IP和不少通讯的知识,我花了一年时间终于使本身从MIS开发转到了通讯行业,而且站稳了脚跟。个人开发大量是对硬件的直接操做,再也不受微软的操做系统,VC、Delhpi这些开发工具的约束,我终于看到了另一片天空。
    我作事情喜欢追根问底,随着开发的深刻,软件开发与硬件联系愈来愈紧密,硬件知识的匮乏又对个人发展产生了障碍,并且芯片技术基本上掌握在国外公司的手里,这对作系统级设计是一个很是大的制约,一个新产品出来,第一道利润(也每每是最丰厚的利润)经常都被IC公司如Intel、Motorola赚去了,国内的厂商只能喝点汤。因此我决心解决本身的硬件技术障碍,并打算离开通讯行业,进入IC设计相关领域。
    固然我明白若是我对硬件了解的很是少,没有哪家IC公司会仁慈到招我这样一个一窍不通的人来培训。因此我必须努力打好基础,学一些相关知识为之后作准备。就像我开始从MIS转到通讯同样,我看过大量通讯方面的书,而且给一个ISP作过RADIUS计费分拣台,在这样的背景下这家通讯公司才给了我这个机会。我在的通讯公司是作系统设计的,有很多PCBLayout硬件人员,日常我就注意向他们学习,因为我作的是软件,在公司看硬件资料很差意思,因此开始只好在家看,刚来上海工做我连续一年都在加班,后来不加了,由于我要挤出时间学习,一般我12点左右睡,次日5点半起,我上班比较早,地铁上若是人很少我也用来看书。学习固然不会是一路顺风的,有些实在不懂的问题就积累起来问硬件人员,他们的帮助使我学习进度快了不少,由于在没有人点拨的状况下自学,个人一半时间是花在解决疑难问题上,但这种问题常常是别人的一句话就可让我豁然开朗,我很是庆幸我有这样的学习环境。在后面的一年里,我学会了看硬件原理图,学会了简单的硬件设计(模拟电路方面还有不小的差距),事情就是这样的,当你安安份份作软件,别人永远认为你是软件开发人员,在你开始学习硬件时别人未必会认同,有位中兴通信的朋友还对我说过,一我的不可能把全部东西都学完。我也明白这一点,但我但愿本身作的更好。但当你熟悉硬件后你们又会以为你好像本来就是软硬件都懂的,同事们也都习觉得常了。这个时候我能够把硬件资料堂堂正正的拿到公司看,没有人再大惊小怪了。让我比较自豪的是我经过本身的努力作了一个IAD(软交换的终端设备)系统方案,包含软硬件的选型、设计等内容,这个方案获得了公司和同事们的
  认同,让我感到很是欣慰。
    技术是相辅相成的,当个人硬件有了必定的进步后,个人软件设计也有了很大的提升,我能够从更深层次理解问题,我作的接入服务器CPU是Motorola PowerPC860,熟悉的朋友都知道860QMC与软件的批量数据传输一般采用BD表的方式,硬件人员作驱动的时候习惯采用固定BD表,每接收或发送数据都将数据从BD表拷贝到用户Buffer,或从用户Buffer拷贝到BD表,因为理解的比较深刻,我本身从新实现了这个过程,采用动态BD表的方式,驱动从一个网口接收数据,提交给个人软件进行三层交换,直至从另外的接口发送出去,没有进行一次拷贝。这样的设计大大提升了性能,使系统的指标接近理论值。软硬件的结合使个人设计水平上了一个台阶。我如今写的这个操做系统,编译后我把程序反编译成汇编,找出其中不优化的代码,而后在C程序中进行调整。举个例子,不少CPU没有专门的乘法指令,这个你们应该都知道,在这种CPU上进行一个乘法操做经常会花费大量的指令周期,有的朋友会说这个我知道,我会尽可能避免采用×号,可是事情每每不是那么简单,你知道C语言中数组的下标操做是怎么实现的吗?仔细看看反汇编的代码你就会明白,一样是经过下标的定位操做,C编译器会有时候会产生位移指令,但有时候会用乘法实现,二者效率每每是天壤之别,因此明白这些问题你才能将系统性能提高到极致。这些问题就很少说了,有兴趣的话之后能够共同探讨。
    话说远一点,我由衷的但愿在软件上作的比较深刻的朋友们有机会学学硬件以及其它相关知识,尤为是作底层开发和嵌入式设计的。这对软件技术的提升有很是大的帮助,不然不少事情你只知道该这样但不会明白为何该这样。我这个观点在我如今的IC公司Project Manager那里也获得了验证。他告诉咱们公司如今的802.11芯片产品的软件经理本来是作该芯片硬件设计的,某某某本来是作软件的,如今在作IC,相似的例子还有不少,只是在国内这样的风气不是很是流行。
    我有一些心得体会与你们分享,只有当我干好本职工做后,我才会学习与工做关系不大的技术,这样公司的上司才不至于反感,在入门阶段的问题我一般不去问那些资深人士,而是问一些资历比较浅的朋友,好比刚毕业不久的学生,由于他们每每会跟你详细的讲解,而资深人士一般以为你的问题太简单,因此回答的也很简单,我又很差意思多问。等技术上了必定的层次后我才会问他们,他们也能给你比较深刻的回答。另外,有些朋友说我机会比较好,他们也但愿能从事新的工做惋惜没有机会,我听了只有苦笑,个人机会了解的人都应该知道,我没有出生在什么IT世家:)也没有谁一路提拔我,全部的路都是本身走出来的,我母亲去世比较早,个人后母(我叫她阿姨)看着我努力过来的,一次她看我大年30还在写程序,她说像我这样努力木头都能学出来。
    个人最终目的是IC而不是PCB,因此我下一步的准备开始学习IC设计的知识。公司的同事没有懂IC设计的,后面的路又要靠本身了,我买了很多相关的书,在网上也查了不少的资料,我花了大量的时间去学习VHDL,而且用软件进行了一些简单的设计和仿真(没有设计ASIC,只是针对FPGA),随着学习的深刻,我渐渐明白了IC设计的基本流程,同时也明白了这条路的艰辛。这个时候我已经作好了跳槽的准备,我向一家业界又必定知名度的IC设计公司投了简历,并经过了漫长的面试(4个多小时)。其余的一切我都比较满意,惟独薪资差强人意,我也明白缘由,由于我是这个行业的新人,我没有经验,我再一次将本身清零了。公司老板问我6000多一个月能不能接受,我知道他也是照章办事。想一想我通讯行业的朋友们,基本上都是年薪10万以上,月薪过万的也比比皆是,朋友们也帮我介绍了很多待遇不错的公司,我该怎么选择,当时我很犹豫,我热爱个人事业,我向往个人追求,但我也是一个普通的人,我也须要养家糊口,我也想早一点买房买车。生活给我出了一道难
    爱因斯坦在63岁时说过“一我的没有在30岁之前达成科学上的最大成就,那他永远都不会有。”这句话给了我很大的压力和震动,我立刻就26岁了,离30只有四年时间,我必须抓紧这几年宝贵的时间,努力达到我技术上的最高峰。为了这个理想,为了能离本身的梦更近一些,我选择了这家IC公司,我明白本身的薪资和公司刚进来的硕士研究生相差无几,但为了从此的发展只能忍受,一切又得从新开始。换行业是一个很是痛苦的过程,尤为从一个春风得意的位置换到一个陌生的岗位,感受象从温暖的被子里钻出来跳进冰水中,让人难以接受。在原来那家通讯公司,我是惟一两年时间涨了五次工资的员工,公司和同事都给了我极大的承认,工做上也经常被委以重任。但如今这一切都成了过去,在新的公司我只是一个新人,没有人知道也没有人在乎我过去的成绩。我决定从新开始,我把本身看做新毕业的学生,我要用本身的努力获得公司的承认。进入新的行业是很是痛苦的,我告诉本身必须忍受这一切,虽然外面有不少诱惑,可是既然做出了选择我就不容许本身轻易放
    我如今已经在这家新公司上了一个多月的班,开始很是艰难,如今慢慢适应了。第一个月结束时,TeamLeader找我谈话,说我是新进员工中最优秀的一个,我内心很欣慰,这也算对我努力的一个确定吧。在这里还要感谢个人女友,她给了我很大的支持和鼓舞,每次在我动摇的时候她都在鼓励我,让我坚持本身的理想,刚来上海是她让我不要勉强去作MIS,此次也是她让我顶住了月薪过万的诱惑,没有她我可能不会有今天的成绩。
    如今的公司有本身的操做系统,本身的CPU、DSP和其它芯片,在这里我能学到世界上最早进的技术,咱们的设计开发再也不彻底依赖别人的硬件和系统,这让我很开心。我打算等工做步入正轨后,全力学习新的知识,实现个人理想。
    在后面的两年里我给本身定下了几个目标:
    一.努力作好本职工做,在工做上获得公司和同事们的认同;
    二.努力学习IC硬件设计知识,多向同事请教,并利用一切机会多实践;
    三.实现个人实时操做系统的主要部分,完成TCP/IP协议栈模块,并免费发布源
    四.和我女友结婚并买一套小房子,这是最重要的,由于我明白事业是能够重
  来的,可是珍贵的感情很难失而复得。
    在这里提一下我如今开发的操做系统,它是一个实时嵌入式系统,目前支持以
  下特性:
    a.支持时间片轮转调度和基于优先级调度,最多64个优先级;
    b.抢占式实时内核;
    c.为了便于移植,主体用标准C实现;
    d.汇编代码很是少,不到100行;
    e.支持任务管理,各任务有独立的堆栈;
    f.进程同步和通讯目前完成了Semaphore,MessageQueue正在调试;
    g.实现了定时系统调用;
    h.能够在windows上仿真调试
    我还打算下一步实现优先级反转保护,EventFlag,DataPipe,内存管理(之前实现过)、驱动接口等。
    在这以后我还会努力完善它,好比加入文件系统,协议栈、调试接口等。但愿朋友们提出本身的意见和建议,在此不胜感激!
  还有一个后记没有写完,我会在今天或者明天补充完,在里面我想谈谈学习和工做的心得以及对一些事情的见解。
   就像有的朋友说的,个人经历或许会给一些朋友产生误导,在这里我必须说明一下。我来上海之前学习过于拼命,经常晚上只睡3个多小时,我身高1米71,那时只有108斤(我如今130多),家人也说我这样拼命活不过60岁,可是当时的我太执拗,我对他们说只要能实现理想活50岁我就够了。那时的拼命使个人身体受到了影响,有一次早上忽然腰肌剧痛难忍,痛的我倒在床上站不起来。虽然我如今已经比较注意,但有时候还会隐隐做痛。后来在女友说服了我,来上海之后我再也不如此。我常常引用父亲的一句话“身体是革命的本钱”。并且我也发现拼命不是办法,我能够熬一两个通宵,最多的一次我连续工做了三天三夜,可是我半个月都没有恢复过来,这样是否是得不偿失?学习工做应该是一个
  长期的过程,像马拉松而不是百米冲刺。我如今很是注意调整学习和工做的强度,我要保证天天尽可能有相对充沛的精力,一些年轻的朋友以为本身也应该拼命努力,这让我多少有些担忧,若是个人故事能让你在学习工做上多一点兴趣,我会感到很开心,但若是误导了某些朋友,让你作一些不值得的付出,我会感到很内疚。技术没有贵贱只分,我之前换行业是由于本身的兴趣所致,而不是对哪一个行业有什么偏见。我但愿个人经历不要给朋友一个错误的导向,以为我始终向更高的技术发展。其实各行各业作到顶尖都是很困难的。话又说回来虽然技术没有贵贱,但
  是门槛是有高低的,不管如何,作IC的门槛要比作网页的高,这一点无能否认。国家各类人才都是须要的,可是做为我的奋发向上的想法仍是应该有的,努力在本身喜欢的行业上作的更好,而不该该停留在比较肤浅的层次上。我是一个本身以为比较有自知之明的人,或许我最大的优势就是知道本身有不少缺点:)。个人故事中不少的曲折和错误都是由个人缺点形成的,但愿你们用审慎的眼光看待个人经历,不要被个人“花言巧语”所迷惑。我学习有些为所欲为,这给我带来了无尽的麻烦,也大大阻碍的个人发展。记得我小时候成绩比较出色,可是后来学习严重偏科,致使我中学成绩一再滑坡,也没有考上什么好的学校,小时候的一个朋友,当时的成绩和我相仿,可是没有我这个缺点,她上了清华,后来在去了美国深造,在一个著名导师手下研究理论科学,这何尝不是一条更好的出路。另外个人学习方法也是在不断改善中的,过去的学习过于讲究数量和时间,那样学习既苦而已效率不高,如今我很是注意学习的效率和技巧,这样才是学习的捷径(固然不是指投机取巧),好比说学一相对陌生的技术,若是有条件,不妨问一问有经验的人,不须要问不少,每每他不经意的几句话会给你很是大的帮助,甚至超过你看一个星期的书。带着这样的思想再去学习你会节省不少时间,这样何乐不为呢?这些年中我学了很多的东西,因为开始很是盲目,因此学的东西杂乱无章,如今回想起来让我哭笑不得,我把大量的时间浪费在一些没有必要深刻了解的知识上,毕竟一我的的精力是有限度的。不少朋友很我同样都背过五笔字形,的确它是一个不错的输入法,可是对一个研发人员它绝对不值得你去背,你的时间应该花在有价值的地方。我这样的事情还作过不少,我背过CCED、WPS的命令和快捷键,在dBase基本退出历史舞台后我还花了不少时间去学习它的使用。因此个人学习在前期
  缺少规划,没有明确的短时间目的、中期目标,只有一个虚无飘渺的长期的理想。这就像作设计同样,好的设计是从需求抽象到代码有不少过程,而不能获得了需求就马上开始开始编码。
   固然这么些年的学习和工做多多少少有些收获,下面我说说个人一些学习的心得,这些方法未必正确,我也在不断探索和改进中。个人学习和工做有相对明确的目标,我不会一时心动而去学习某一技术,在下决定以前我会考虑不少,包括长期的发展,我的路线的规划,须要付出的代价、可能遇到的困难及解决的办法等等,在决定后还会制定更加明确的计划,包括短时间、中期和长期的,身边能够利用到的资源(包括好的书籍、资料、软硬件环境,也包括有经验的朋友或者师长),以及每个阶段是怎么过渡到高一阶段的计划,每每在一个学习阶段一旦上路后会走的相对顺利,可是跨阶段一般比较麻烦,好比从学习基础知识转到实践。另外我买书也有本身的方法,如今世面上高质量的书远不如低质量书多,对于一个陌生的技术,每每在第一次买书会选择错误,即便买到一本好书可是它的方向也未必适合你,因此我一般会先在网上查找一些该技术的介绍,有了一点点概念后再去买一本比较薄、相对便宜而且内容相对泛泛而谈的书,这是国内做者最善于写的书:),再把它浏览一遍后我就会基本明白这门技术的要点,后面买书和制定计划就会明确的多。不然一开始就想找本好书每每比较困难,并且买回来后努力学习,有时候学了一半才发现是本低质量的书或者是相对过期技术,让人很是懊恼。另外让有经验的人帮你介绍,一般也是一个不错的选择。
   有些朋友想学通讯、介绍一下怎么创建这样的环境,固然我了解的只是我学习和工做的方向。通讯我作的是数据网方面的工做,包括TCP/IP、二三层交换、对接入网、H.323和软交换也有嵌入式开发,但总以为本身没有软硬件环境,我就按个人了解给你们介一点认识。这些软硬件环境都是能够在PC上构建的。你甚至能够在一个没有网卡的PC上创建一个包含多个路由器、接入服务器、VoIP网关、网守、主机等的仿真网络环境,并且与实际的网络至关接近,固然这须要你有清晰的网络概念和必定的网络知识,我一直在努力开发一套软件将这个过程简化,目前试验已经作完,我可能会将它融入个人操做系统外围扩展软件中。这样的方法我没法用简单的语句讲的很清楚,我能够说一下大概的思想,就是在PC上实现仿真网卡,(知道Windows怎么在没有网卡的机器实现虚拟网卡技术的朋友都应该会明白),而后每个仿真网卡对应一个虚拟设备,如路由器或者主机。你也能够借助第三方工具完成部分工做,如VmWare等。我如今就是利用一个仿真网卡作本身的开发的。至于嵌入式开发环境更加容易实现,PC就是一个很是大的硬件平台,现有的嵌入式操做系统一般都支持X86,你能够在上面作开发,经过软盘Boot或者使用虚拟机装载,我用VxWorks作了试验,在一台PC上跑Windows和VxWorks两个系统。另外Windows上的兼容DOS的16位仿真X86环境也为不少操做系统提供了绝佳的试验环境,个人操做系统在Windows上就是这样实现的。Linux在嵌入式中应用也比较普遍,它在网上有大量的资料,并且也相对比较容易实践。同时不少完善的嵌入式开发环境支持软件仿真,如Tornado、WinCE等。面试