一個(gè)程序員的奮斗歷程

更新: 2008-09-18 15:39 瀏覽: 14021 次

本文簡(jiǎn)介: 從第一個(gè)“Hello World”到今天的操作系統(tǒng),從這中間我也積累了很多心得。走了很多彎路,也犯了不少錯(cuò)誤。最初我寫(xiě)程序全憑自己的感覺(jué),寫(xiě)一個(gè)新程序?qū)Y(jié)構(gòu)設(shè)計(jì)不很重視,以為學(xué)好語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)就可以寫(xiě)出好的程序,其實(shí)遠(yuǎn)不是這樣的
   這些日子我一直在寫(xiě)一個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核,已有小成了,等寫(xiě)完我會(huì)全部公開(kāi),希望能夠?yàn)閲?guó)內(nèi)IT的發(fā)展盡自己一份微薄的力量。最近看到很多學(xué)生朋友和我當(dāng)年一樣沒(méi)有方向 ,所以把我的經(jīng)歷寫(xiě)出來(lái)與大家共勉,希望能給剛?cè)缧械呐笥褌円稽c(diǎn)點(diǎn)幫助。一轉(zhuǎn)眼我在IT行業(yè)學(xué)習(xí)工作已經(jīng)七年多了,這期間我做過(guò)網(wǎng)頁(yè),寫(xiě)過(guò)MIS、數(shù)據(jù)庫(kù),應(yīng)用程序,做過(guò)通信軟件、硬件驅(qū)動(dòng)、協(xié)議棧,到現(xiàn)在做操作系統(tǒng)內(nèi)核和 IC相關(guān)開(kāi)發(fā),這中間走了很多彎路,也吃了不少苦。

 

 

   我上的是一個(gè)三流的高校,就連同一個(gè)城市的人多數(shù)都不知道。因?yàn)閷W(xué)校不好也就沒(méi)有指望能靠學(xué)校名氣找一個(gè)好工作。所有的希望都寄托在自己的努力上了,大一開(kāi)學(xué)前的假期我就開(kāi)始了學(xué)習(xí),記得我買(mǎi)的第一本書(shū)是《計(jì)算機(jī)基礎(chǔ)DOS3.0》,大家別嚇著了,其實(shí)當(dāng)時(shí)已經(jīng)普及了DOS6.22了,只是我在書(shū)店里看到了DOS4.0,5.0,6.0的書(shū),以為像英語(yǔ)那樣是第四、五、六冊(cè),記得當(dāng)時(shí)到處找DOS1.0,現(xiàn)在想想也幸好我沒(méi)有找到:)開(kāi)學(xué)前我學(xué)完了 PASCAL,那時(shí)既沒(méi)有計(jì)算機(jī)也沒(méi)有人可以請(qǐng)教,我連程序是什么的概念都沒(méi)有,只好死記硬背代碼,然后拿紙寫(xiě),我一直到大三才有了一臺(tái)486,在這之前用紙寫(xiě)了多少程序我也記不清楚了,只知道最長(zhǎng)的一個(gè)我拿A4大小的草稿紙寫(xiě)了30 多頁(yè),我的C語(yǔ)言、C++ 、VC都是在這樣的條件下入門(mén)的。所以說(shuō)條件是可以克服的,希望我的經(jīng)歷多少給條件艱苦的同學(xué)們一點(diǎn)信心。第一次上機(jī)是在我姐夫機(jī)房,我的心情激動(dòng)的無(wú)與倫比,但是一上機(jī)我立刻傻了眼,他們用的是英文版的Win3.1,我的那點(diǎn)DOS知識(shí)都見(jiàn)了鬼,上機(jī)提心吊膽的一陣瞎摸,一不小心把Word弄成了全屏,怎么都還不了原,當(dāng)時(shí)真是心急如焚,我以為機(jī)器被我弄壞了。第一個(gè)C語(yǔ)言程序,就是那個(gè)經(jīng)典的HelloWorld,我調(diào)了幾個(gè)星期,上機(jī)機(jī)會(huì)非常少,也沒(méi)有書(shū)告訴我開(kāi)發(fā)環(huán)境(TC2.0)需要設(shè)置,而且開(kāi)始我都不知道有編譯器,我甚至自作明把寫(xiě)好的程序擴(kuò)展名從.c改成.exe,結(jié)果可想而知。大一學(xué)完了C、X86的匯編、數(shù)據(jù)結(jié)構(gòu)、C++。由于精力都花在自學(xué)上了,大一下四門(mén)課掛了彩,三類(lèi)學(xué)校就是這點(diǎn)好,掛上一二十門(mén)也照樣畢業(yè)。不過(guò)扯遠(yuǎn)點(diǎn)說(shuō),我那么刻苦都及不了格,可見(jiàn)我們國(guó)家的計(jì)算機(jī)教育有多死板。

 

大二準(zhǔn)備學(xué)VC和BC,當(dāng)時(shí)難以取舍,后來(lái)選了VC,不為別的,只為書(shū)店里兩本書(shū),VC 那本便宜6塊錢(qián)。我的努力在班上無(wú)人能及,學(xué)的日夜不分,大三有了計(jì)算機(jī)后更是如此,很多次父親半夜教訓(xùn)我說(shuō)我不要命了,我一直覺(jué)得自己基礎(chǔ)差,記憶又不行,條件也不好,所以覺(jué)得只有多花點(diǎn)時(shí)間才能趕上別人。居然后來(lái)有許多朋友說(shuō)我有學(xué)計(jì)算機(jī)的天賦,讓我哭笑不得。我用的是486,16M內(nèi)存,1G硬盤(pán),當(dāng)時(shí)同學(xué)們的配置都是P166MMX,我安裝 一個(gè)Windows NT4.0需要一個(gè)通宵,編譯一個(gè)BC5.0向?qū)傻某绦蛐枰鼉蓚€(gè)小時(shí),我的顯示器是個(gè)二手的,輻射非常大,開(kāi)機(jī)屏幕冒火花,看起來(lái)很酷的:),有一次程序?qū)懙奶?,覺(jué)得怎么白色的編輯器背景變成了紫色,以為顯示器壞了,后來(lái)才發(fā)現(xiàn)眼睛不行了,不過(guò)說(shuō)來(lái)也奇怪,到今天我的視力還能保持1.5,真是個(gè)奇跡。但是就是那臺(tái)破機(jī)器陪伴了我兩年,讓我學(xué)會(huì)了VC、Delphil、SQLServer等。后來(lái)那臺(tái)機(jī)器給我阿姨打字用,據(jù)她說(shuō)一天她正打的開(kāi)心,一股青煙夾著火苗從顯示器鉆出來(lái),之后它才壽終正寢。

 

大三假期找了個(gè)機(jī)會(huì)在一個(gè)計(jì)算機(jī)研究所實(shí)習(xí),與其說(shuō)實(shí)習(xí)不如說(shuō)是做義工,工作了兩個(gè)月一分錢(qián)沒(méi)有拿。但是這兩個(gè)月對(duì)我的發(fā)展幫助很大,讓我早一步了解了社會(huì),剛?cè)サ臅r(shí)候我當(dāng)然是一竅不通,在那里我熟悉了網(wǎng)絡(luò),學(xué)會(huì)了Delphi和 Oracle。由于工作很認(rèn)真,得到了比較好的評(píng)價(jià),在一位長(zhǎng)者的引薦下,我開(kāi)始和他們一起做項(xiàng)目,這使我在大三大四就有了自己的收入,大四又找了兩家MIS公司兼職,雖然錢(qián)不多,但是在學(xué)生期間有1000多的收入我已經(jīng)非常滿足了,我終于用自己賺的錢(qián)把計(jì)算機(jī)換了。大四下開(kāi)始找工作,這時(shí)我的工作經(jīng)驗(yàn)已經(jīng)比較多(當(dāng)然現(xiàn)在想想非常幼稚),開(kāi)始聽(tīng)父母的想去那個(gè)研究所, 實(shí)習(xí)過(guò)那個(gè)部門(mén)也希望我能去,但是不知道為什么最后不了了之,這種單位就是比較官僚,我一氣之下就到了我兼職的一個(gè)公司做MIS的TeamLeader。在大三到畢業(yè)一年的時(shí)間,做過(guò)了各種MIS,從煤氣、煙廠、公安、鐵路、飲食到高校,什么有錢(qián)做什么,工作也很辛苦,經(jīng)常加班和熬通宵,從跟客戶談需求到設(shè)計(jì)、編碼、測(cè)試、交付都要上。那時(shí)覺(jué)得很有成就感,覺(jué)得自己還不錯(cuò),現(xiàn)在想想真是很膚淺。

 

剛走上工作崗位的學(xué)生很容易被誤導(dǎo),各種開(kāi)發(fā)工具讓人眼花繚亂,同時(shí)也覺(jué)得很受公司器重,但這樣工作永遠(yuǎn)是一個(gè)低層次的開(kāi)發(fā)者。不要跟我說(shuō)什么系統(tǒng)分析有多么多么重要,多么多么難。你以為自己跟用戶談需求做設(shè)計(jì)就是系統(tǒng)分析和設(shè)計(jì)了嗎,國(guó)內(nèi)又有幾個(gè)公司能夠做的很到位很規(guī)范?我是ISO9000內(nèi)審員,也在Rational公司受過(guò)多次培訓(xùn),拿了4個(gè)證書(shū),還有一個(gè)公司讓我去做 CMM。這些我聽(tīng)過(guò)很多,但是很多事情到國(guó)內(nèi)就變了性質(zhì),一個(gè)公司不是通過(guò)了ISO9000或者CMM就能規(guī)范了,我現(xiàn)在在一家有幾十年歷史的外企工作,里面的管理不是一般國(guó)內(nèi)企業(yè)能及的。作為一個(gè)畢業(yè)不久以前沒(méi)有步入過(guò)社會(huì)的學(xué)生,幾乎不可能在很短的時(shí)間掌握系統(tǒng)分析和設(shè)計(jì),面向?qū)ο?、UML只是一個(gè)工具,關(guān)鍵是人本身的思想,不是說(shuō)你熟悉了C++、Rose就能夠做出好的設(shè)計(jì),相反如果你具備了很高的素質(zhì),你可以用C寫(xiě)出比別人用C++更加模塊化的程序。話說(shuō)遠(yuǎn)一些,國(guó)內(nèi)軟件開(kāi)發(fā)行業(yè)有一個(gè)怪圈,很多人覺(jué)得VC > Delphi > VB,真是很搞笑。這幾個(gè)軟件我都做過(guò)開(kāi)發(fā),說(shuō)白了他們都是工具,應(yīng)該根據(jù)應(yīng)用的需要選擇采用哪個(gè),而不是覺(jué)得哪個(gè)上層次。如果你因?yàn)橛媚硞€(gè)開(kāi)發(fā)工具很有面子而選擇的話,只能說(shuō)明你很淺薄。如果說(shuō)層次,那么這些工具都不上層次,因?yàn)樗鼈冇脕?lái)用去都是一些系統(tǒng)的API,微軟的朋友不會(huì)因?yàn)槟阌涀∷麄兌嗌賯€(gè) API或者多少個(gè)類(lèi)就會(huì)覺(jué)得你很了不起,你永遠(yuǎn)只是他們的客戶,他們看重的是你口袋里的銀子。我也做過(guò)系統(tǒng)內(nèi)核,我也封裝過(guò)很多API,同樣我也不會(huì)看重那些使用這些API做二次開(kāi)發(fā)的客戶,除非他能夠作出自己獨(dú)到的設(shè)計(jì)。

 

至于有人認(rèn)為C++ > C那更是讓人笑掉大牙,不妨你去打聽(tīng)一下,現(xiàn)在有幾個(gè)操作系統(tǒng)內(nèi)核是用C++寫(xiě)的,又有幾個(gè)實(shí)時(shí)系統(tǒng)用的是C++,當(dāng)然我也不是說(shuō)C++不好,但是目前的內(nèi)核和實(shí)時(shí)系統(tǒng)中C++還無(wú)法與C匹敵,至于說(shuō)C++適合做應(yīng)用系統(tǒng)的開(kāi)發(fā)那是另外一回事。所以我的觀點(diǎn)是不在于你用什么工具和語(yǔ)言,而在于你干什么工作。你的設(shè)計(jì)體現(xiàn)了你的技術(shù)層次。
這樣干了一年我覺(jué)得非??鄲灒龅拇蠖鄶?shù)都是熟練工種的活,個(gè)人技術(shù)上沒(méi)有太多 的提高也看不到方向。所以決定離開(kāi)這個(gè)城市去上海,尋求更好的發(fā)展,并且打算放棄我以前的MIS轉(zhuǎn)到通信行業(yè)。
寫(xiě)到這里不能不提到我女朋友,我們是在來(lái)上海前半年認(rèn)識(shí)的,她大四在我公司實(shí)習(xí),公司派她給我寫(xiě)文檔,我們的感情發(fā)展的很快。她告訴我很多事情,她家原本是改革開(kāi)放的第一批暴發(fā)戶,她母親愛(ài)打牌,輸?shù)袅藥装偃f(wàn),還欠了很多債,她有男朋友,但是她對(duì)他沒(méi)有感情,只因?yàn)樗o了她母親兩萬(wàn)多塊錢(qián),后來(lái)還強(qiáng)迫她寫(xiě)了四萬(wàn)塊的借條,她男朋友背叛過(guò)她并且不止一次打她,現(xiàn)在逼她結(jié)婚不然就要她還錢(qián)。這人居然還是一個(gè)高校的老師!她母親把父親給她的學(xué)費(fèi)花了,因?yàn)橥锨穼W(xué)費(fèi)她沒(méi)有辦法拿到畢業(yè)證。她母親現(xiàn)在有病需要錢(qián),我拿出了自己的一點(diǎn)積蓄并且跟朋友們接了一些,替她交了學(xué)費(fèi)并給她母親看?。ê髞?lái)才知道看病的錢(qián)又不知所終,就連她母親是不是有病我都不知道,但她也是沒(méi)有辦法)。這個(gè)時(shí)候我家知道了一些事情,堅(jiān)決反對(duì)我和她在一起,她原來(lái)的男朋友也極力破壞。無(wú)奈之下我們決定早一定離開(kāi)這個(gè)傷心的城市,并且瞞著我們家。由于時(shí)間倉(cāng)促,我只準(zhǔn)備了4000塊錢(qián),她僅有的幾百塊錢(qián)也被她母親要去了,我買(mǎi)了三張票,一張是中午的,兩張是晚上的,中午我的家人把我送上船,他們一離開(kāi)我就下了船,我和她乘坐晚上的船離開(kāi)了這個(gè)我和她生活了很多年的城市,帶走的只是一身債務(wù)。沒(méi)有來(lái)過(guò)上海的我們兩個(gè)性倔強(qiáng),都不愿意去麻煩同學(xué)和朋友。來(lái)到上海是傍晚6點(diǎn)半,我們都不知道該去哪里,我們找了一個(gè)20塊錢(qián)的旅館,這個(gè)房間連窗戶都沒(méi)有,7月份的天氣酷熱難耐,房間里非常悶熱。第二天我們開(kāi)始租房子,因?yàn)樯砩系腻X(qián)不多,我們基本都是步行,花了一個(gè)星期時(shí)間,不知道在浦東轉(zhuǎn)了多少圈后找到了一個(gè)400塊的房子,但是我們都不了解上海是付三壓一,還要付半個(gè)月的中介費(fèi),買(mǎi)了一些鍋碗瓢盆后,我們身上只有800塊錢(qián)了,工作都還沒(méi)有著落,這800塊錢(qián)要支持到我們拿到第一個(gè)月工資,為了省錢(qián)我們自己做飯,每天買(mǎi)菜只花兩塊錢(qián),她非常喜歡吃(也可能她在大學(xué)經(jīng)常挨餓的愿意),看到她現(xiàn)在這樣省吃儉用我真的很不忍心。她以前的男朋友也沒(méi)有放過(guò)她,經(jīng)常打電話來(lái)騷擾,并且來(lái)上海看她,還說(shuō)了不少恐嚇?biāo)脑?,她過(guò)于善良,說(shuō)他以前畢竟幫助過(guò)她,叫我不要與他一般見(jiàn)識(shí)。以后的每天在家就是苦等面試通知,原本我想迅速找一家MIS公司解決眼前的困難,但是她堅(jiān)持讓我不要放棄自己的理想,終于功夫不負(fù)有心人,我找到了一家通信公司,4000塊的工資雖然趕不上MIS公司給我開(kāi)出的價(jià)位,但也夠在上海生存。她也找到了工作,第一天上班她哭了,這是她來(lái)上海第一次流淚,我心里很難受也很感動(dòng)。

 

由于是全新的行業(yè),我把自己降到了零點(diǎn),我學(xué)的VC、 Delphi、數(shù)據(jù)庫(kù)派不上用場(chǎng),擺在我面前的是嵌入式、協(xié)議、信令一些我從未接觸過(guò)的知識(shí)。我知道我沒(méi)有退路,于是拼命的學(xué)習(xí),我把自己當(dāng)做一個(gè)應(yīng)屆畢業(yè)生一樣,一分努力一分收獲,半年過(guò)去我終于熟悉了工作,并且
得到了公司的表彰,薪水也加了一級(jí)。后面的日子里我們省吃儉用,把欠朋友的1萬(wàn)多塊錢(qián)還了,日子終于上了正軌。這時(shí)女朋友告訴我她想考研究生,我也很支持,于是她辭職在家備考。

 

另外,在這里我要感謝我的ProjectManager,他原來(lái)是一個(gè)大通信公司的產(chǎn)品經(jīng)理,對(duì)人非常和善,我從他那里學(xué)到了很多知識(shí),而且他

也給了我許許多多無(wú)私的幫助。在工作上他給我充分的空間和信任。記得公司安排我維護(hù)一個(gè)接入服務(wù)器軟件,由于代碼量不算太?。?萬(wàn)行),資料和文檔都不齊全,我維護(hù)起來(lái)非常吃力,所以想重新把它做一遍,公司領(lǐng)導(dǎo)不太支持,可能覺(jué)得工作量太大,但是他極力支持我,私下里他讓我放手去做,我的維護(hù)工作他擠時(shí)間做。在他的支持下,我花了半年時(shí)間完成了接入服務(wù)器的軟件,并且實(shí)現(xiàn)了一個(gè)相對(duì)完整的TCP/IP 協(xié)議棧。在這里我學(xué)會(huì)了嵌入式系統(tǒng)設(shè)計(jì)、驅(qū)動(dòng)開(kāi)發(fā)、TCP/IP和很多通信的知識(shí),我花了一年時(shí)間終于使自己從MIS開(kāi)發(fā)轉(zhuǎn)到了通信行業(yè),并且站穩(wěn)了腳跟。我的開(kāi)發(fā)大量是對(duì)硬件的直接操作,不再受微軟的操作系統(tǒng),VC、Delhpi這些開(kāi)發(fā)工具的約束,我終于看到了另外一片天空。我做事情喜歡追根問(wèn)底,隨著開(kāi)發(fā)的深入,軟件開(kāi)發(fā)與硬件聯(lián)系越來(lái)越緊密,硬件知識(shí)的匱乏又對(duì)我的發(fā)展產(chǎn)生了障礙,而且芯片技術(shù)基
本上掌握在國(guó)外公司的手里,這對(duì)做系統(tǒng)級(jí)設(shè)計(jì)是一個(gè)非常大的制約,一個(gè)新產(chǎn)品出來(lái),第一道利潤(rùn)(也往往是最豐厚的利潤(rùn))常常都被IC公司如Intel、Motorola賺去了,國(guó)內(nèi)的廠商只能喝點(diǎn)湯。所以我決心解決自己的硬件技術(shù)障礙,并打算離開(kāi)通信行業(yè),進(jìn)入IC設(shè)計(jì)相關(guān)領(lǐng)域。     當(dāng)然我明白如果我對(duì)硬件了解的非常少,沒(méi)有哪家IC公司會(huì)仁慈到招我這樣一個(gè)一竅不通的人來(lái)培訓(xùn)。所以我必須努力打好基礎(chǔ),學(xué)一些相關(guān)知識(shí)為以后做準(zhǔn)備。就像我開(kāi)始從MIS轉(zhuǎn)到通信一樣,我看過(guò)大量通信方面的書(shū),并且給一個(gè)ISP做過(guò)RADIUS計(jì)費(fèi)分揀臺(tái),在這樣的背景下這家通信公司才給了我這個(gè)機(jī)會(huì)。我在的通信公司是做系統(tǒng)設(shè)計(jì)的,有不少PCB Layout硬件人員,平常我就注意向他們學(xué)習(xí),由于我做的是軟件,在公司看硬件資料不好意思,所以開(kāi)始只好在家看,剛來(lái)上海工作我連續(xù)一年都在加班,后來(lái)不加了,因?yàn)槲乙獢D出時(shí)間學(xué)習(xí),通常我12點(diǎn)左右睡,第二天5點(diǎn)半起,我上班比較早,地鐵上如果人不多我也用來(lái)看書(shū)。學(xué)習(xí)當(dāng)然不會(huì)是一帆風(fēng)順的,有些實(shí)在不懂的問(wèn)題就積累起來(lái)問(wèn)硬件人員,他們的幫助使我學(xué)習(xí)進(jìn)度快了很多,因?yàn)樵跊](méi)有人點(diǎn)撥的情況下自學(xué),我的一半時(shí)間是花在解決疑難問(wèn)題上,但這種問(wèn)題經(jīng)常是別人的一句話就可以讓我豁然開(kāi)朗,我非常慶幸我有這樣的學(xué)習(xí)環(huán)境。在后面的一年里,我學(xué)會(huì)了看硬件原理圖,學(xué)會(huì)了簡(jiǎn)單的硬件設(shè)計(jì)(模擬電路方面還有不小的差距),事情就是這樣的,當(dāng)你安安份份做軟件,別人永遠(yuǎn)認(rèn)為你是軟件開(kāi)發(fā)人員,在你開(kāi)始學(xué)習(xí)硬件時(shí)別人未必會(huì)認(rèn)同,有位中興通訊的朋友還對(duì)我說(shuō)過(guò),一個(gè)人不可能把所有東西都學(xué)完。我也明白這一點(diǎn),但我希望自己做的更好。但當(dāng)你熟悉硬件后大家又會(huì)覺(jué)得你好像原本就是軟硬件都懂的,同事們也都習(xí)以為常了。這個(gè)時(shí)候我可以把硬件資料堂堂正正的拿到公司看,沒(méi)有人再大驚小怪了。讓我比較自豪的是我通過(guò)自己的努力做了一個(gè)IAD(軟交換的終端設(shè)備)系統(tǒng)方案,包含軟硬件的選型、設(shè)計(jì)等內(nèi)容,這個(gè)方案得到了公司和同事們的認(rèn)同,讓我感到非常欣慰。

 

技術(shù)是相輔相成的,當(dāng)我的硬件有了一定的進(jìn)步后,我的軟件設(shè)計(jì)也有了很大的提高,我可以從更深層次理解問(wèn)題,我做的接入服務(wù)器CPU是 Motorola PowerPC860,熟悉的朋友都知道860 QMC與軟件的批量數(shù)據(jù)傳輸通常采用BD表的方式,硬件人員做驅(qū)動(dòng)的時(shí)候習(xí)慣采用固定BD表,動(dòng)態(tài)BD表的方式,驅(qū)動(dòng)從一個(gè)網(wǎng)口接收數(shù)據(jù),提交給我的軟件進(jìn)行三層交換,直至從另外的接口發(fā)送出去,沒(méi)有進(jìn)行一次拷貝。這樣的設(shè)計(jì)大大提高了性能,使系統(tǒng)的指標(biāo)接近理論值。軟硬件的結(jié)合使我的設(shè)計(jì)水平上了一個(gè)臺(tái)階。我現(xiàn)在寫(xiě)的這個(gè)操作系統(tǒng),編譯后我把程序反編譯成匯編,找出其中不優(yōu)化的代碼,然后在C程序中進(jìn)行調(diào)整。舉個(gè)例子,很多CPU沒(méi)有專門(mén)的乘法指令,這個(gè)大家應(yīng)該都知道,在這種CPU上進(jìn)行一個(gè)乘法操作常常會(huì)花費(fèi)大量的指令周期,有的朋友會(huì)說(shuō)這個(gè)我知道,我會(huì)盡量避免采用×號(hào),但是事情往往不是那么簡(jiǎn)單,你知道C語(yǔ)言中數(shù)組的下標(biāo)操作是怎么實(shí)現(xiàn)的嗎?仔細(xì)看看反匯編的代碼你就會(huì)明白,同樣是通過(guò)下標(biāo)的定位操作,C編譯器會(huì)有時(shí)候會(huì)產(chǎn)生位移指令,但有時(shí)候會(huì)用乘法實(shí)現(xiàn),兩者效率往往是天壤之別,所以明白這些問(wèn)題你才能將系統(tǒng)性能提升到極致。一些問(wèn)題就不多說(shuō)了,有興趣的話以后可以共同探討。話說(shuō)遠(yuǎn)一點(diǎn),我由衷的希望在軟件上做的比較深入的朋友們有機(jī)會(huì)學(xué)學(xué)硬件以及其它相關(guān)知識(shí),尤其是做底層開(kāi)發(fā)和嵌入式設(shè)計(jì)的。這對(duì)軟件技術(shù)的提高有非常大的幫助,否則很多事情你只知道該這樣但不會(huì)明白為什么該這樣。我這個(gè)觀點(diǎn)在我現(xiàn)在的IC公司Project Manager那里也得到了驗(yàn)證。他告訴我們公司現(xiàn)在的802.11芯片產(chǎn)品的軟件經(jīng)理原本是做該芯片硬件設(shè)計(jì)的,某某某原本是做軟件的,現(xiàn)在在做IC,類(lèi)似的例子還有很多,只是在國(guó)內(nèi)這樣的風(fēng)氣不是非常流行。

 

我有一些心得體會(huì)與大家分享,只有當(dāng)我干好本職工作后,我才會(huì)學(xué)習(xí)與工作關(guān)系不 大的技術(shù),這樣公司的上司才不至于反感,在入門(mén)階段的問(wèn)題我通常不去問(wèn)那些資深人士,而是問(wèn)一些資歷比較淺的朋友,比如剛畢業(yè)不久的學(xué)生,因?yàn)樗麄兺鶗?huì)跟你詳細(xì)的講解,而資深人士通常覺(jué)得你的問(wèn)題太簡(jiǎn)單,所以回答的也很簡(jiǎn)單,我又不好意思多問(wèn)。等技術(shù)上了一定的層次后我才會(huì)問(wèn)他們,他們也能給你比較深入的回答。另外,有些朋友說(shuō)我機(jī)會(huì)比較好,他們也希望能從事新的工作可惜沒(méi)有機(jī)會(huì),我聽(tīng)了只有苦笑,我的機(jī)會(huì)了解的人都應(yīng)該知道,我沒(méi)有出生在什么IT世家:)也沒(méi)有誰(shuí)一路提拔我,所有的路都是自己走出來(lái)的,我母親去世比較早,我的后母(我叫她阿姨)看著我努力過(guò)來(lái)的,一次她看我大年30還在寫(xiě)程序,她說(shuō)像我這樣努力木頭都能學(xué)出來(lái)。

 

我的最終目的是IC而不是 PCB,所以我下一步的準(zhǔn)備開(kāi)始學(xué)習(xí)IC設(shè)計(jì)的知識(shí)。公司的同事沒(méi)有懂IC設(shè)計(jì)的,后面的路又要靠自己了,我買(mǎi)了不少相關(guān)的書(shū),在網(wǎng)上也查了很多的資料,我花了大量的時(shí)間去學(xué)習(xí)VHDL,并且用軟件進(jìn)行了一些簡(jiǎn)單的設(shè)計(jì)和仿真(沒(méi)有設(shè)計(jì)ASIC,只是針對(duì)FPGA),隨著學(xué)習(xí)的深入,我漸漸明白了IC設(shè)計(jì)的基本流程,同時(shí)也明白了這條路的艱辛。這個(gè)時(shí)候我已經(jīng)做好了跳槽的準(zhǔn)備,我向一家業(yè)界又一定知名度的IC設(shè)計(jì)公司投了簡(jiǎn)歷,并通過(guò)了漫長(zhǎng)的面試(4個(gè)多小時(shí))。其他的一切我都比較滿意,唯獨(dú)薪資差強(qiáng)人意,我也明白原因,因?yàn)槲沂沁@個(gè)行業(yè)的新人,我沒(méi)有經(jīng)驗(yàn),我再一次將自己清零了。公司老板問(wèn)我6000多一個(gè)月能不能接受,我知道他也是照章辦事。想想我通信行業(yè)的朋友們,基本上都是年薪10萬(wàn)以上,月薪過(guò)萬(wàn)的也比比皆是,朋友們也幫我介紹了不少待遇不錯(cuò)的公司,我該怎么選擇,當(dāng)時(shí)我很猶豫,我熱愛(ài)我的事業(yè),我向往我的追求,但我也是一個(gè)普通的人,我也需要養(yǎng)家糊口,我也想早一點(diǎn)買(mǎi)房買(mǎi)車(chē)。生活給我出了一道難題。愛(ài)因斯坦在63歲時(shí)說(shuō)過(guò)“一個(gè)人沒(méi)有在 30歲以前達(dá)成科學(xué)上的最大成就,那他永遠(yuǎn)都不會(huì)有。”這句話給了我很大的壓力和震動(dòng),我馬上就26歲了,離30只有四年時(shí)間,我必須抓緊這幾年寶貴的時(shí)間,努力達(dá)到我技術(shù)上的最高峰。為了這個(gè)理想,為了能離自己的夢(mèng)更近一些,我選擇了這家IC公司,我明白自己的薪資和公司剛進(jìn)來(lái)的碩士研究生相差無(wú)幾,但為了今后的發(fā)展只能忍受,一切又得重新開(kāi)始。換行業(yè)是一個(gè)非常痛苦的過(guò)程,尤其從一個(gè)春風(fēng)得意的位置換到一個(gè)陌生的崗位,感覺(jué)象從溫暖的被子里鉆出來(lái)跳進(jìn)冰水中,讓人難以接受。在原來(lái)那家通信公司,我是唯一兩年時(shí)間漲了五次工資的員工,公司和同事都給了我極大的認(rèn)可,工作上也常常被委以重任。但現(xiàn)在這一切都成了過(guò)去,在新的公司我只是一個(gè)新人,沒(méi)有人知道也沒(méi)有人在意我過(guò)去的成績(jī)。我決定重新開(kāi)始,我把自己看作新畢業(yè)的學(xué)生,我要用自己的努力得到公司的認(rèn)可。進(jìn)入新的行業(yè)是非常痛苦的,我告訴自己必須忍受這一切,雖然外面有很多誘惑,但是既然作出了選擇我就不允許自己輕易放棄。     我現(xiàn)在已經(jīng)在這家新公司上了一個(gè)多月的班,開(kāi)始非常艱難,現(xiàn)在慢慢適應(yīng)了。第一 個(gè)月結(jié)束時(shí),Team Leader找我談話,說(shuō)我是新進(jìn)員工中最優(yōu)秀的一個(gè),我心里很欣慰,這也算對(duì)我努力的一個(gè)肯定吧。在這里還要感謝我的女朋友,她給了我很大的支持和鼓舞,每次在我動(dòng)搖的時(shí)候她都在鼓勵(lì)我,讓我堅(jiān)持自己的理想,剛來(lái)上海是她讓我不要勉強(qiáng)去做MIS,這次也是她讓我頂住了月薪過(guò)萬(wàn)的誘惑,沒(méi)有她我可能不會(huì)有今天的成績(jī)。現(xiàn)在的公司有自己的操作系統(tǒng),自己的CPU、DSP和其它芯片,在這里我能學(xué)到世界上最先進(jìn)的技術(shù),我們的設(shè)計(jì)開(kāi)發(fā)不再完全依賴別人的硬件和系統(tǒng),這讓我很開(kāi)心。我打算等工作步入正軌后,全力學(xué)習(xí)新的知識(shí),實(shí)現(xiàn)我的理想。

 

在后面的兩年里我給自己定下了幾個(gè)目標(biāo):

 

一.努力做好本職工作,在工作上得到公司和同事們的認(rèn)同;

 

二.努力學(xué)習(xí)IC硬件設(shè)計(jì)知識(shí),多向同事請(qǐng)教,并利用一切機(jī)會(huì)多實(shí)踐;

 

三.實(shí)現(xiàn)我的實(shí)時(shí)操作系統(tǒng)的主要部分,完成TCP/IP協(xié)議棧模塊,并免費(fèi)發(fā)布源代碼;

 

四.和我女朋友結(jié)婚并買(mǎi)一套小房子,這是最重要的,因?yàn)槲颐靼资聵I(yè)是可以重來(lái)的,但是珍貴的感情很難失而復(fù)得。

 

在這里提一下我現(xiàn)在開(kāi)發(fā)的操作系統(tǒng),它是一個(gè)實(shí)時(shí)嵌入式系統(tǒng),目前支持以下特性:

 

a.支持時(shí)間片輪轉(zhuǎn)調(diào)度和基于優(yōu)先級(jí)調(diào)度,最多64個(gè)優(yōu)先級(jí);

 

b.搶占式實(shí)時(shí)內(nèi)核;

 

c.為了便于移植,主體用標(biāo)準(zhǔn)C實(shí)現(xiàn);

 

d.匯編代碼非常少,不到100行;

 

e.支持任務(wù)管理,各任務(wù)有獨(dú)立的堆棧;

 

f. 進(jìn)程同步和通信目前完成了Semaphore,Message Queue正在調(diào)試;

 

g.實(shí)現(xiàn)了定時(shí)系統(tǒng)調(diào)用;

 

h.可以在windows上仿真調(diào)試

 

我還打算下一步實(shí)現(xiàn)優(yōu)先級(jí)反轉(zhuǎn)保護(hù),Event Flag,Data Pipe,內(nèi)存管理(以前實(shí)現(xiàn)過(guò))、驅(qū)動(dòng)接口等。 在這之后我還會(huì)努力完善它,比如加入文件系統(tǒng),協(xié)議棧、調(diào)試接口等。希望朋友們提出自己的意見(jiàn)和建議,在此不勝感激!

 

后記:

 

就像有的朋友說(shuō)的,我的經(jīng)歷或許會(huì)給一些朋友產(chǎn)生誤導(dǎo),在這里我必須說(shuō)明一下。我來(lái)上海以前學(xué)習(xí)過(guò)于拼命,常常晚上只睡3個(gè)多小時(shí),我身高1米71,那時(shí)只有108斤(我現(xiàn)在130多),家人也說(shuō)我這樣拼命活不過(guò)60歲,但是當(dāng)時(shí)的我太固執(zhí),我對(duì)他們說(shuō)只要能實(shí)現(xiàn)理想活50歲我就夠了。那時(shí)的拼命使我的身體受到了影響,有一次早上突然腰肌劇痛難忍,痛的我倒在床上站不起來(lái)。雖然我現(xiàn)在已經(jīng)比較注意,但有時(shí)候還會(huì)隱隱作痛。后來(lái)在女朋友說(shuō)服了我,來(lái)上海以后我不再如此。我經(jīng)常引用父親的一句話“身體是革命的本錢(qián)”。而且我也發(fā)現(xiàn)拼命不是辦法,我可以熬一兩個(gè)通宵,最多的一次我連續(xù)工作了三天三夜,但是我半個(gè)月都沒(méi)有恢復(fù)過(guò)來(lái),這樣是不是得不償失?學(xué)習(xí)工作應(yīng)該是一個(gè)長(zhǎng)期的過(guò)程,像馬拉松而不是百米沖刺。我現(xiàn)在非常注意調(diào)整學(xué)習(xí)和工作的強(qiáng)度,我要保證每天盡量有相對(duì)充沛的精力,一些年輕的朋友覺(jué)得自己也應(yīng)該拼命努力,這讓我多少有些擔(dān)心,如果我的故事能讓你在學(xué)習(xí)工作上多一點(diǎn)興趣,我會(huì)感到很開(kāi)心,但如果誤導(dǎo)了某些朋友,讓你做一些不值得的付出,我會(huì)感到很內(nèi)疚。技術(shù)沒(méi)有貴賤之分,我以前換行業(yè)是因?yàn)樽约旱呐d趣所致,而不是對(duì)哪個(gè)行業(yè)有什么偏見(jiàn)。我希望我的經(jīng)歷不要給朋友一個(gè)錯(cuò)誤的導(dǎo)向,覺(jué)得我始終向更高的技術(shù)發(fā)展。其實(shí)各行各業(yè)做到頂尖都是很困難的。話又說(shuō)回來(lái)雖然技術(shù)沒(méi)有貴賤,但是門(mén)檻是有高低的,無(wú)論如何,做IC的門(mén)檻要比做網(wǎng)頁(yè)的高,這一點(diǎn)無(wú)可否認(rèn)。國(guó)家各種人才都是需要的,但是作為個(gè)人奮發(fā)向上的想法還是應(yīng)該有的,努力在自己喜歡的行業(yè)上做的更好,而不應(yīng)該停留在比較膚淺的層次上。我是一個(gè)自己覺(jué)得比較有自知之明的人,或許我最大的優(yōu)點(diǎn)就是知道自己有很多缺點(diǎn):)。我的故事中很多的曲折和錯(cuò)誤都是由我的缺點(diǎn)造成的,希望大家用審慎的眼光看待我的經(jīng)歷,不要被我的“花言巧語(yǔ)”所迷惑。我學(xué)習(xí)有些隨心所欲,這給我?guī)?lái)了無(wú)盡的麻煩,也大大阻礙的我的發(fā)展。記得我小時(shí)候成績(jī)比較出色,但是后來(lái)學(xué)習(xí)嚴(yán)重偏科,導(dǎo)致我中學(xué)成績(jī)一再滑坡,也沒(méi)有考上什么好的學(xué)校,小時(shí)候的一個(gè)朋友,當(dāng)時(shí)的成績(jī)和我相仿,但是沒(méi)有我這個(gè)缺點(diǎn),她上了清華,后來(lái)在去了美國(guó)深造,在一個(gè)著名導(dǎo)師手下研究理論科學(xué),這未嘗不是一條更好的出路。另外我的學(xué)習(xí)方法也是在不斷改善中的,過(guò)去的學(xué)習(xí)過(guò)于講究數(shù)量和時(shí)間,那樣學(xué)習(xí)既苦而已效率不高,現(xiàn)在我非常注意學(xué)習(xí)的效率和技巧,這樣才是學(xué)習(xí)的捷徑(當(dāng)然不是指投機(jī)取巧),比如說(shuō)學(xué)一相對(duì)陌生的技術(shù),如果有條件,不妨問(wèn)一問(wèn)有經(jīng)驗(yàn)的人,不需要問(wèn)很多,往往他不經(jīng)意的幾句話會(huì)給你非常大的幫助,甚至超過(guò)你看一個(gè)星期的書(shū)。帶著這樣的思想再去學(xué)習(xí)你會(huì)節(jié)省很多時(shí)間,這樣何樂(lè)不為呢?這些年中我學(xué)了不少的東西,由于開(kāi)始非常盲目,所以學(xué)的東西雜亂無(wú)章,現(xiàn)在回想起來(lái)讓我啼笑皆非,我把大量的時(shí)間浪費(fèi)在一些沒(méi)有必要深入了解的知識(shí)上,畢竟一個(gè)人的精力是有限度的。很多朋友很我一樣都背過(guò)五筆字形,的確它是個(gè)不錯(cuò)的輸入法,但是對(duì)一個(gè)研發(fā)人員它絕對(duì)不值得你去背,你的時(shí)間應(yīng)該花在有價(jià)值的地方。我這樣的事情還做過(guò)很多,我背過(guò)CCED、WPS的命令和快捷鍵,在dBase基本退出歷史舞臺(tái)后我還花了很多時(shí)間去學(xué)習(xí)它的使用。所以我的學(xué)習(xí)在前期缺乏規(guī)劃,沒(méi)有明確的短期目的、中期目標(biāo),只有一個(gè)虛無(wú)飄渺的長(zhǎng)期的理想。這就像做設(shè)計(jì)一樣,好的設(shè)計(jì)是從需求抽象到代碼有很多過(guò)程,而不能得到了需求就立刻開(kāi)始開(kāi)始編碼。    當(dāng)然這么些年的學(xué)習(xí)和工作多多少少有些收獲,下面我說(shuō)說(shuō)我的一些學(xué)習(xí)的心得,這些方法未必正確,我也在不斷探索和改進(jìn)中。我的學(xué)習(xí)和工作有相對(duì)明確的目標(biāo),我不會(huì)一時(shí)心動(dòng)而去學(xué)習(xí)某一技術(shù),在下決定之前我會(huì)考慮很多,包括長(zhǎng)期的發(fā)展,個(gè)人路線的規(guī)劃,需要付出的代價(jià)、可能遇到的困難及解決的辦法等等,在決定后還會(huì)制定更加明確的計(jì)劃,包括短期、中期和長(zhǎng)期的,身邊可以利用到的資源(包括好的書(shū)籍、資料、軟硬件環(huán)境,也包括有經(jīng)驗(yàn)的朋友或者師長(zhǎng)),以及每一個(gè)階段是怎么過(guò)渡到高一階段的計(jì)劃,往往在一個(gè)學(xué)習(xí)階段一旦上路后會(huì)走的相對(duì)順利,但是跨階段通常比較麻煩,比如從學(xué)習(xí)基礎(chǔ)知識(shí)轉(zhuǎn)到實(shí)踐。另外我買(mǎi)書(shū)也有自己的方法,現(xiàn)在世面上高質(zhì)量的書(shū)遠(yuǎn)不如低質(zhì)量書(shū)多,對(duì)于一個(gè)陌生的技術(shù),往往在第一次買(mǎi)書(shū)會(huì)選擇錯(cuò)誤,即使買(mǎi)到一本好書(shū)但是它的方向也未必適合你,所以我通常會(huì)先在網(wǎng)上查找一些該技術(shù)的介紹,有了一點(diǎn)點(diǎn)概念后再去買(mǎi)一本比較薄、相對(duì)便宜并且內(nèi)容相對(duì)泛泛而談的書(shū),這是國(guó)內(nèi)作者最善于寫(xiě)的書(shū):),再把它瀏覽一遍后我就會(huì)基本明白這門(mén)技術(shù)的要點(diǎn),后面買(mǎi)書(shū)和制定計(jì)劃就會(huì)明確的多。否則一開(kāi)始就想找本好書(shū)往往比較困難,而且買(mǎi)回來(lái)后努力學(xué)習(xí),有時(shí)候?qū)W了一半才發(fā)現(xiàn)是本低質(zhì)量的書(shū)或者是相對(duì)過(guò)時(shí)技術(shù),讓人非常懊惱。另外讓有經(jīng)驗(yàn)的人幫你介紹,通常也是一個(gè)不錯(cuò)的選擇。

有些朋友想學(xué)通信、嵌入式開(kāi)發(fā),但總覺(jué)得自己沒(méi)有軟硬件環(huán)境,我就按我的了解給大家介紹一下怎么建立這樣的環(huán)境,當(dāng)然我了解的只是我學(xué)習(xí)和工作的方向。通信我做的是數(shù)據(jù)網(wǎng)方面的工作,包括TCP/IP、二三層交換、對(duì)接入網(wǎng)、 H.323和軟交換也有一點(diǎn)認(rèn)識(shí)。這些軟硬件環(huán)境都是可以在PC上構(gòu)建的。你甚至可以在一個(gè)沒(méi)有網(wǎng)卡的PC上建立一個(gè)包含多個(gè)路由器、接入服務(wù)器、 VoIP網(wǎng)關(guān)、網(wǎng)守、主機(jī)等的仿真網(wǎng)絡(luò)環(huán)境,而且與實(shí)際的網(wǎng)絡(luò)相當(dāng)接近,當(dāng)然這需要你有清晰的網(wǎng)絡(luò)概念和一定的網(wǎng)絡(luò)知識(shí),我一直在努力開(kāi)發(fā)一套軟件將這個(gè)過(guò)程簡(jiǎn)化,目前試驗(yàn)已經(jīng)做完,我可能會(huì)將它融入我的操作系統(tǒng)外圍擴(kuò)展軟件中。這樣的方法我無(wú)法用簡(jiǎn)單的語(yǔ)句講的很清楚,我可以說(shuō)一下大概的思想,就是在 PC上實(shí)現(xiàn)仿真網(wǎng)卡,(知道Windows怎么在沒(méi)有網(wǎng)卡的機(jī)器實(shí)現(xiàn)虛擬網(wǎng)卡技術(shù)的朋友都應(yīng)該會(huì)明白),然后每一個(gè)仿真網(wǎng)卡對(duì)應(yīng)一個(gè)虛擬設(shè)備,如路由器或者主機(jī)。你也可以借助第三方工具完成部分工作,如VmWare等。我現(xiàn)在就是利用一個(gè)仿真網(wǎng)卡做自己的開(kāi)發(fā)的。至于嵌入式開(kāi)發(fā)環(huán)境更加容易實(shí)現(xiàn),PC就是一個(gè)非常大的硬件平臺(tái),現(xiàn)有的嵌入式操作系統(tǒng)通常都支持X86,你可以在上面做開(kāi)發(fā),通過(guò)軟盤(pán)Boot或者使用虛擬機(jī)裝載,我用VxWorks做了試驗(yàn),在一臺(tái)PC上跑Windows和 VxWorks兩個(gè)系統(tǒng)。另外Windows上的兼容DOS的16位仿真X86環(huán)境也為很多操作系統(tǒng)提供了絕佳的試驗(yàn)環(huán)境,我的操作系統(tǒng)在Windows 上就是這樣實(shí)現(xiàn)的。Linux在嵌入式中應(yīng)用也比較廣泛,它在網(wǎng)上有大量的資料,而且也相對(duì)比較容易實(shí)踐。同時(shí)很多完善的嵌入式開(kāi)發(fā)環(huán)境支持軟件仿真,如 Tornado、WinCE等。

一個(gè)程序員的奮斗歷程(續(xù))

前段時(shí)間處理了很多事情,一直沒(méi)有寫(xiě)下去,花光了所有的積蓄買(mǎi)了一套房子,同時(shí)把戶口的事情也基本辦完了,這幾天稍微緩口氣。昨天跟我的一個(gè)老上司見(jiàn)面聊了半天,心里感慨萬(wàn)千。他從外在條件看讓不少外人羨慕,二十多歲做過(guò)到了863項(xiàng)目的負(fù)責(zé)人,博士畢業(yè)的愛(ài)人單位也非常好。現(xiàn)在三十出頭的他在一個(gè)通信公司做產(chǎn)品經(jīng)理,工資雖然不算高但也有一兩萬(wàn),而且還持有股份。但是我們了解的人才理解他的艱辛。“白領(lǐng)”這個(gè)詞在一些人看來(lái)是仿佛是一個(gè)動(dòng)人的光環(huán),但是在我看來(lái)是一個(gè)無(wú)奈的名字,每天行走在大街上,來(lái)來(lái)往往的車(chē)流中有多少是 “白領(lǐng)”的?又有幾個(gè)“白領(lǐng)”住的起高檔的住宅?在上海一套別墅300萬(wàn)不足為奇,按揭貸款下來(lái)總額接近600萬(wàn),年薪二十萬(wàn)在上海算是一個(gè)中高級(jí)“白領(lǐng)”,高額的稅金去掉了你百分之幾十的收入后,這樣算下來(lái)不吃不喝也要四十多年,加上生活的其他開(kāi)支,注定了你與這樣的住宅無(wú)緣??粗饷嬉惶滋讋e墅,一輛輛好車(chē),我不知道它們是誰(shuí)的,但我知道其中沒(méi)有什么白領(lǐng)。我覺(jué)得自己很渺小,在這個(gè)喧鬧的都市中我如同一只螞蟻,但我有不甘于平凡,我不愿做一個(gè)單純的“白領(lǐng)”。

其實(shí)很多朋友并不了解我,我不是一個(gè)追逐時(shí)尚技術(shù)的人,我只是不愿意做一個(gè)所謂的“白領(lǐng)”,更加不愿意做一個(gè)單純的“程序員”。我不甘愿平凡的生活一輩子。我在不斷的努力,我的方向非常明確,我要做多數(shù)人不做和做不到的事情,很多朋友對(duì)我這樣頻繁的換方向不理解,覺(jué)得一個(gè)人只要熟悉一種技術(shù)就可以了,對(duì)于這樣的看法我只能說(shuō)你淺薄,現(xiàn)在的大的系統(tǒng)和產(chǎn)品往往都是軟件、硬件和應(yīng)用相結(jié)合的,我要做的不是哪個(gè)方面的專家,而是希望能夠成為系統(tǒng)設(shè)計(jì)師。我不相信一個(gè)只精通發(fā)動(dòng)機(jī)的專家能夠設(shè)計(jì)一輛好車(chē),同樣我也不相信對(duì)硬件一竅不通的人能做出一個(gè)操作系統(tǒng),或者一個(gè)對(duì)財(cái)會(huì)沒(méi)有一點(diǎn)概念的人能設(shè)計(jì)出一個(gè)優(yōu)秀的財(cái)務(wù)軟件。在工作中我發(fā)現(xiàn)社會(huì)上非常缺乏邊緣人才,尤其是在國(guó)內(nèi)。在國(guó)外一個(gè)人軟硬件兼修非常普遍。如果設(shè)計(jì)產(chǎn)品的人只了解他的專業(yè)那么是很難有出色的設(shè)計(jì)。所以我必須趁著自己年輕學(xué)的更加廣泛一些,這樣才能提高自己的綜合素質(zhì),這也是為什么高校那么多非專業(yè)課程。學(xué)習(xí)工作了這些年,實(shí)際上都沒(méi)有脫離IT這個(gè)行業(yè),我現(xiàn)在的公司開(kāi)發(fā)一個(gè)系統(tǒng)時(shí),先是將最終功能列舉清楚并分析可行性,然后劃分哪些是用芯片實(shí)現(xiàn),哪些是用硬件電路實(shí)現(xiàn),哪些是用軟件實(shí)現(xiàn),這樣的設(shè)計(jì)才能做出最好的系統(tǒng)。如果一個(gè)設(shè)計(jì)者單純只懂一個(gè)方面是不可能做到這一點(diǎn)的。自負(fù)常常伴隨著無(wú)知,記得我大學(xué)畢業(yè)時(shí),論文答辯會(huì)上我和專家組組長(zhǎng)爭(zhēng)起來(lái)了,因?yàn)槲覍?duì)自己的設(shè)計(jì)非常得意,而他雖然是雞蛋里挑骨頭,但是由于知識(shí)非常有限,我無(wú)法回答他的問(wèn)題,所以有些“惱羞成怒”。我原來(lái)一直喜歡用“所謂”最好的開(kāi)發(fā)工具,記得做過(guò)一個(gè)愚蠢的設(shè)計(jì),一個(gè)排課表的軟件我用 VC+Oracle開(kāi)發(fā)。這些經(jīng)歷我牢記在心,時(shí)刻提醒自己學(xué)會(huì)謙虛。我的親身經(jīng)歷加上我對(duì)一些身邊朋友的觀察發(fā)現(xiàn)這樣一個(gè)現(xiàn)象。當(dāng)一個(gè)人只會(huì)他認(rèn)為最好的技術(shù),而對(duì)其他的一無(wú)所知,這樣的人經(jīng)常是目空一切。

從第一個(gè)“Hello World”到今天的操作系統(tǒng),前前后后寫(xiě)了很多代碼,從這中間我也積累了很多心得。由于我是在沒(méi)有人指導(dǎo)的情況下自學(xué)編碼的,所以走了很多彎路,也犯了不少錯(cuò)誤。最初我寫(xiě)程序全憑自己的感覺(jué),寫(xiě)一個(gè)新程序?qū)Y(jié)構(gòu)設(shè)計(jì)不很重視,以為學(xué)好語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)就可以寫(xiě)出好的程序,其實(shí)遠(yuǎn)不是這樣的。沒(méi)有設(shè)計(jì)的情況下,也可以寫(xiě),但是程序無(wú)法寫(xiě)的很大、很復(fù)雜。我個(gè)人的經(jīng)驗(yàn)是這樣的系統(tǒng)超過(guò) 8000行我就無(wú)法控制了,以前我用VC寫(xiě)過(guò)一個(gè)Windows下的應(yīng)用程序,大概8000行左右我對(duì)它失去了控制,整個(gè)代碼一團(tuán)糟,這8000行倒是可以相對(duì)穩(wěn)定的運(yùn)行,但是我沒(méi)有能力再增加什么新的代碼,動(dòng)輒前后沖突,要么就是新代碼與舊設(shè)計(jì)格格不入,需要調(diào)整舊的程序。最開(kāi)始我寫(xiě)程序喜歡追求代碼的精巧,別人很多行寫(xiě)出來(lái)的代碼自己只寫(xiě)很少就可以實(shí)現(xiàn),感覺(jué)那樣比較酷。其實(shí)這樣也是非常錯(cuò)誤的,我現(xiàn)在寫(xiě)程序非常注重結(jié)構(gòu)設(shè)計(jì),為了結(jié)構(gòu)清晰我愿意犧牲一點(diǎn)效率。

下面一段話是我寫(xiě)程序的座右銘,希望與大家共勉:

Make it right before you make it faster.

Keep it right when you make it faster.

Make it clear before you make it faster.

Do not sacrifice clarity for small gains in efficiency.

Brian Kernighan

另外補(bǔ)充一點(diǎn):我和我的女朋友現(xiàn)在非常好,雙方的家人都認(rèn)可了,我們決定在近期結(jié)婚。

 

本文關(guān)鍵: 程序員,奮斗,歷程
企業(yè)服務(wù)
費(fèi)用標(biāo)準(zhǔn)
商務(wù)合作
聯(lián)系我們
用戶幫助
用戶協(xié)議
隱私政策
聯(lián)系方式
在線客服:800019119
客服電話:07733679588
客服郵箱:guipin@vip.qq.com / guipin@21cn.com
桂聘APP客戶端
與HR在線聊,入職更快
掃碼下載APP