[轉貼]一位程序員的成長史


  這些日子我一直在寫一個實時操做系統內核,已有小成了,等寫完我會所有公開,但願能
夠爲國內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,我安裝
一個Windows NT4.0須要一個通宵,編譯一個BC5.0嚮導生成的程序須要近兩個小時,個人
顯示器是個二手的,輻射很是大,開機屏幕冒火花,看起來很酷的:),有一次程序寫的
過久,以爲怎麼白色的編輯器背景變成了紫色,覺得顯示器壞了,後來才發現眼睛不行了
,不過說來也奇怪,到今天個人視力還能保持1.5,真是個奇蹟。可是就是那臺破機器陪伴
了我兩年,讓我學會了VC、Delphi、SQLServer等。後來那臺機器給我阿姨打字用,據她說
一天她正打的開心,一股青煙夾着火苗從顯示器鑽出來,以後它才壽終正寢。
大三假期找了個機會在一個計算機研究所實習,與其說實習不如說是作義工,工做了兩個
月一分錢沒有拿。可是這兩個月對個人發展幫助很大,讓我早一步瞭解了社會,剛去的時
候我固然是一竅不通,在那裏我熟悉了網絡,學會了Delphi和Oracle。因爲工做很認真,
獲得了比較好的評價,在一位長者的引薦下,我開始和他們一塊兒作項目,這使我在大三大
四就有了本身的收入,大四又找了兩家MIS公司兼職,雖然錢很少,可是在學生期間有100
0多的收入我已經很是知足了,我終於用本身賺的錢把計算機換了。大四下開始找工做,這
時個人工做經驗已經比較多(固然如今想一想很是幼稚),開始聽父母的想去那個研究所,
實習過那個部門也但願我能去,可是不知道爲何最後不了了之,這種單位就是比較官僚
,我一氣之下就到了我兼職的一個公司作MIS的TeamLeader。在大三到畢業一年的時間,作
過了各類MIS,從煤氣、菸廠、公安、鐵路、飲食到高校,什麼有錢作什麼,工做也很辛苦
,常常加班和熬通宵,從跟客戶談需求到設計、編碼、測試、交付都要上。那時以爲頗有
成就感,以爲本身還不錯,如今想一想真是很膚淺。 windows


  剛走上工做崗位的學生很容易被誤導,各類開發工具讓人眼花繚亂,同時也以爲很受
公司器重,但這樣工做永遠是一個低層次的開發者。不要跟我說什麼系統分析有多麼多麼
重要,多麼多麼難。你覺得本身跟用戶談需求作設計就是系統分析和設計了嗎,國內又有
幾個公司可以作的很到位很規範?我是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塊錢,她僅有的幾百塊錢也被她母親要去了,我買了三張票,一張是中午
的,兩張是晚上的,中午個人家人把我送上船,他們一離開我就下了船,我和她乘坐晚上
的船離開了這個我和她生活了不少年的城市,帶走的只是一身債務。沒有來過上海的咱們兩
個性倔強,都不肯意去麻煩同窗和朋友。來到上海是傍晚6點半,咱們
都不知道該去哪裏,咱們找了一個20塊錢的旅館,這個房間連窗戶都沒有,7月份的天氣酷
熱難耐,房間裏很是悶熱。次日咱們開始租房子,由於身上的錢很少,咱們基本都是步
行,花了一個星期時間,不知道在浦東轉了多少圈後找到了一個400塊的房子,可是咱們都
不瞭解上海是付三壓一,還要付半個月的中介費,買了一些鍋碗瓢盆後,咱們身上只有80
0塊錢了,工做都尚未着落,這800塊錢要支持到咱們拿到第一個月工資,爲了省錢咱們
本身作飯,天天買菜只花兩塊錢,她很是喜歡吃(也可能她在大學常常捱餓的願意),看
到她如今這樣省吃儉用我真的很不忍心。她之前的男友也沒有放過她,常常打電話來騷
擾,而且來上海看她,還說了很多恐嚇她的話,她過於善良,說他之前畢竟幫助過她,叫
我不要與他通常見識。之後的天天在家就是苦等面試通知,本來我想迅速找一家MIS公司解
決眼前的困難,可是她堅持讓我不要放棄本身的理想,終於功夫不負有心人,我找到了一
家通訊公司,4000塊的工資雖然趕不上MIS公司給我開出的價位,但也夠在上海生存。她也
找到了工做,第一天上班她哭了,這是她來上海第一次流淚,我內心很難受也很感動。
因爲是全新的行業,我把本身降到了零點,我學的VC、Delphi、數據庫派不上用場,
擺在我面前的是嵌入式、協議、信令一些我從未接觸過的知識。我知道我沒有退路,因而
拼命的學習,我把本身當作一個應屆畢業生同樣,一分努力一分收穫,半年過去我終於熟
悉了工做,而且獲得了公司的表彰,薪水也加了一級。後面的日子裏咱們省吃儉用,把欠
朋友的1萬多塊錢還了,日子終於上了正軌。這時女友告訴我她想考研究生,我也很支持
,因而她辭職在家備考。 網絡


  另外,在這裏我要感謝個人ProjectManager,他原來是一個大通訊公司的產品經理,
對人很是和藹,我從他那裏學到了不少知識,並且他也給了我許許多多無私的幫助。在工
做上他給我充分的空間和信任。記得公司安排我維護一個接入服務器軟件,因爲代碼量不
算過小(5萬行),資料和文檔都不齊全,我維護起來很是吃力,因此想從新把它作一遍,
公司領導不太支持,可能以爲工做量太大,可是他極力支持我,私下裏他讓我放手去作,
個人維護工做他擠時間作。在他的支持下,我花了半年時間完成了接入服務器的軟件,並
且實現了一個相對完整的TCP/IP協議棧。在這裏我學會了嵌入式系統設計、驅動開發、TC
P/IP和不少通訊的知識,我花了一年時間終於使本身從MIS開發轉到了通訊行業,而且站穩
了腳跟。個人開發大量是對硬件的直接操做,再也不受微軟的操做系統,VC、Delhpi這些開
發工具的約束,我終於看到了另一片天空。 數據結構


  我作事情喜歡追根問底,隨着開發的深刻,軟件開發與硬件聯繫愈來愈緊密,硬件知
識的匱乏又對個人發展產生了障礙,並且芯片技術基本上掌握在國外公司的手裏,這對作
系統級設計是一個很是大的制約,一個新產品出來,第一道利潤(也每每是最豐厚的利潤
)經常都被IC公司如Intel、Motorola賺去了,國內的廠商只能喝點湯。因此我決心解決自
己的硬件技術障礙,並打算離開通訊行業,進入IC設計相關領域。

  固然我明白若是我對硬件瞭解的很是少,沒有哪家IC公司會仁慈到招我這樣一個一竅不通
的人來培訓。因此我必須努力打好基礎,學一些相關知識爲之後作準備。就像我開始從MI
S轉到通訊同樣,我看過大量通訊方面的書,而且給一個ISP作過RADIUS計費分揀臺,在這
樣的背景下這家通訊公司纔給了我這個機會。我在的通訊公司是作系統設計的,有很多PC
B Layout硬件人員,日常我就注意向他們學習,因爲我作的是軟件,在公司看硬件資料不
好意思,因此開始只好在家看,剛來上海工做我連續一年都在加班,後來不加了,由於我
要擠出時間學習,一般我12點左右睡,次日5點半起,我上班比較早,地鐵上若是人很少
我也用來看書。學習固然不會是一路順風的,有些實在不懂的問題就積累起來問硬件人員
,他們的幫助使我學習進度快了不少,由於在沒有人點撥的狀況下自學,個人一半時間是
花在解決疑難問題上,但這種問題常常是別人的一句話就可讓我豁然開朗,我很是慶幸
我有這樣的學習環境。在後面的一年裏,我學會了看硬件原理圖,學會了簡單的硬件設計
(模擬電路方面還有不小的差距),事情就是這樣的,當你安安份份作軟件,別人永遠認
爲你是軟件開發人員,在你開始學習硬件時別人未必會認同,有位中興通信的朋友還對我說
過,一我的不可能把全部東西都學完。我也明白這一點,但我但願自
己作的更好。但當你熟悉硬件後你們又會以爲你好像本來就是軟硬件都懂的,同事們也都
習覺得常了。這個時候我能夠把硬件資料堂堂正正的拿到公司看,沒有人再大驚小怪了。
讓我比較自豪的是我經過本身的努力作了一個IAD(軟交換的終端設備)系統方案,包含軟
硬件的選型、設計等內容,這個方案獲得了公司和同事們的認同,讓我感到很是欣慰。

  技術是相輔相成的,當個人硬件有了必定的進步後,個人軟件設計也有了很大的提升
,我能夠從更深層次理解問題,我作的接入服務器CPU是Motorola PowerPC860,熟悉的朋
友都知道860 QMC與軟件的批量數據傳輸一般採用BD表的方式,硬件人員作驅動的時候習慣
採用固定BD表,每接收或發送數據都將數據從BD表拷貝到用戶Buffer,或從用戶Buffer拷
貝到BD表,因爲理解的比較深刻,我本身從新實現了這個過程,採用動態BD表的方式,驅
動從一個網口接收數據,提交給個人軟件進行三層交換,直至從另外的接口發送出去,沒
有進行一次拷貝。這樣的設計大大提升了性能,使系統的指標接近理論值。軟硬件的結合
使個人設計水平上了一個臺階。我如今寫的這個操做系統,編譯後我把程序反編譯成彙編
,找出其中不優化的代碼,而後在C程序中進行調整。舉個例子,不少CPU沒有專門的乘法
指令,這個你們應該都知道,在這種CPU上進行一個乘法操做經常會花費大量的指令週期,
有的朋友會說這個我知道,我會盡可能避免採用×號,可是事情每每不是那麼簡單,你知道
C語言中數組的下標操做是怎麼實現的嗎?仔細看看反彙編的代碼你就會明白,一樣是經過
下標的定位操做,C編譯器會有時候會產生位移指令,但有時候會用乘法實現,二者效率往
往是天壤之別,因此明白這些問題你才能將系統性能提高到極致。這些
問題就很少說了,有興趣的話之後能夠共同探討。 編輯器


  話說遠一點,我由衷的但願在軟件上作的比較深刻的朋友們有機會學學硬件以及其它
相關知識,尤爲是作底層開發和嵌入式設計的。這對軟件技術的提升有很是大的幫助,否
則不少事情你只知道該這樣但不會明白爲何該這樣。我這個觀點在我如今的IC公司Proj
ect Manager那裏也獲得了驗證。他告訴咱們公司如今的802.11芯片產品的軟件經理本來是
作該芯片硬件設計的,某某某本來是作軟件的,如今在作IC,相似的例子還有不少,只是
在國內這樣的風氣不是很是流行。 模塊化


  我有一些心得體會與你們分享,只有當我幹好本職工做後,我纔會學習與工做關係不
大的技術,這樣公司的上司纔不至於反感,在入門階段的問題我一般不去問那些資深人士
,而是問一些資歷比較淺的朋友,好比剛畢業不久的學生,由於他們每每會跟你詳細的講
解,而資深人士一般以爲你的問題太簡單,因此回答的也很簡單,我又很差意思多問。等
技術上了必定的層次後我纔會問他們,他們也能給你比較深刻的回答。另外,有些朋友說
我機會比較好,他們也但願能從事新的工做惋惜沒有機會,我聽了只有苦笑,個人機會了
解的人都應該知道,我沒有出生在什麼IT世家:)也沒有誰一路提拔我,全部的路都是自
己走出來的,我母親去世比較早,個人後母(我叫她阿姨)看着我努力過來的,一次她看
我大年30還在寫程序,她說像我這樣努力木頭都能學出來。 工具


  個人最終目的是IC而不是PCB,因此我下一步的準備開始學習IC設計的知識。公司的同
事沒有懂IC設計的,後面的路又要靠本身了,我買了很多相關的書,在網上也查了不少的
資料,我花了大量的時間去學習VHDL,而且用軟件進行了一些簡單的設計和仿真(沒有設
計ASIC,只是針對FPGA),隨着學習的深刻,我漸漸明白了IC設計的基本流程,同時也明
白了這條路的艱辛。這個時候我已經作好了跳槽的準備,我向一家業界又必定知名度的IC
設計公司投了簡歷,並經過了漫長的面試(4個多小時)。其餘的一切我都比較滿意,惟獨
薪資差強人意,我也明白緣由,由於我是這個行業的新人,我沒有經驗,我再一次將本身
清零了。公司老闆問我6000多一個月能不能接受,我知道他也是照章辦事。想一想我通訊行
業的朋友們,基本上都是年薪10萬以上,月薪過萬的也比比皆是,朋友們也幫我介紹了不
少待遇不錯的公司,我該怎麼選擇,當時我很猶豫,我熱愛個人事業,我向往個人追求,
但我也是一個普通的人,我也須要養家餬口,我也想早一點買房買車。生活給我出了一道
難題。


  愛因斯坦在63歲時說過「一我的沒有在30歲之前達成科學上的最大成就,那他永遠都不會
有。」這句話給了我很大的壓力和震動,我立刻就26歲了,離30只有四年時間,我必須抓
緊這幾年寶貴的時間,努力達到我技術上的最高峯。爲了這個理想,爲了能離本身的夢更
近一些,我選擇了這家IC公司,我明白本身的薪資和公司剛進來的碩士研究生相差無幾,
但爲了從此的發展只能忍受,一切又得從新開始。換行業是一個很是痛苦的過程,尤爲從
一個春風得意的位置換到一個陌生的崗位,感受象從溫暖的被子裏鑽出來跳進冰水中,讓
人難以接受。在原來那家通訊公司,我是惟一兩年時間漲了五次工資的員工,公司和同事
都給了我極大的承認,工做上也經常被委以重任。但如今這一切都成了過去,在新的公司
我只是一個新人,沒有人知道也沒有人在乎我過去的成績。我決定從新開始,我把本身看做
新畢業的學生,我要用本身的努力獲得公司的承認。進入新的行業是很是痛苦的,我告訴
本身必須忍受這一切,雖然外面有不少誘惑,可是既然做出了選擇我就不容許本身輕易放
棄。

我如今已經在這家新公司上了一個多月的班,開始很是艱難,如今慢慢適應了。第一
個月結束時,Team Leader找我談話,說我是新進員工中最優秀的一個,我內心很欣慰,這
也算對我努力的一個確定吧。在這裏還要感謝個人女友,她給了我很大的支持和鼓舞,
每次在我動搖的時候她都在鼓勵我,讓我堅持本身的理想,剛來上海是她讓我不要勉強去
作MIS,此次也是她讓我頂住了月薪過萬的誘惑,沒有她我可能不會有今天的成績。
如今的公司有本身的操做系統,本身的CPU、DSP和其它芯片,在這裏我能學到世界上
最早進的技術,咱們的設計開發再也不徹底依賴別人的硬件和系統,這讓我很開心。我打算
等工做步入正軌後,全力學習新的知識,實現個人理想。


在後面的兩年裏我給本身定下了幾個目標:


一.努力作好本職工做,在工做上獲得公司和同事們的認同;
二.努力學習IC硬件設計知識,多向同事請教,並利用一切機會多實踐;
三.實現個人實時操做系統的主要部分,完成TCP/IP協議棧模塊,並免費發佈源代碼;
四.和我女友結婚並買一套小房子,這是最重要的,由於我明白事業是能夠重來的,可是
珍貴的感情很難失而復得。

在這裏提一下我如今開發的操做系統,它是一個實時嵌入式系統,目前支持如下特性:

a.支持時間片輪轉調度和基於優先級調度,最多64個優先級;
b.搶佔式實時內核;
c.爲了便於移植,主體用標準C實現;
d.彙編代碼很是少,不到100行;
e.支持任務管理,各任務有獨立的堆棧;
f.進程同步和通訊目前完成了Semaphore,Message Queue正在調試;
g.實現了定時系統調用;
h.能夠在windows上仿真調試
我還打算下一步實現優先級反轉保護,Event Flag,Data Pipe,內存管理(之前實現過)
、驅動接口等。
在這以後我還會努力完善它,好比加入文件系統,協議棧、調試接口等。但願朋友們提出
本身的意見和建議,在此不勝感激!


後記:
就像有的朋友說的,個人經歷或許會給一些朋友產生誤導,在這裏我必須說明一下。
我來上海之前學習過於拼命,經常晚上只睡3個多小時,我身高1米71,那時只有108斤(我
如今130多),家人也說我這樣拼命活不過60歲,可是當時的我太執拗,我對他們說只要能
實現理想活50歲我就夠了。那時的拼命使個人身體受到了影響,有一次早上忽然腰肌劇痛
難忍,痛的我倒在牀上站不起來。雖然我如今已經比較注意,但有時候還會隱隱做痛。後
來在女友說服了我,來上海之後我再也不如此。我常常引用父親的一句話「身體是革命的
本錢」。

  並且我也發現拼命不是辦法,我能夠熬一兩個通宵,最多的一次我連續工做了三天三夜,
可是我半個月都沒有恢復過來,這樣是否是得不償失?學習工做應該是一個長期的過程,
像馬拉松而不是百米衝刺。我如今很是注意調整學習和工做的強度,我要保證天天儘可能有
相對充沛的精力,一些年輕的朋友以爲本身也應該拼命努力,這讓我多少有些擔憂,若是
個人故事能讓你在學習工做上多一點興趣,我會感到很開心,但若是誤導了某些朋友,讓
你作一些不值得的付出,我會感到很內疚。

  技術沒有貴賤只分,我之前換行業是由於本身的興趣所致,而不是對哪一個行業有什麼 偏見。我但願個人經歷不要給朋友一個錯誤的導向,以爲我始終向更高的技術發展。其實 各行各業作到頂尖都是很困難的。話又說回來雖然技術沒有貴賤,可是門檻是有高低的, 不管如何,作IC的門檻要比作網頁的高,這一點無能否認。國家各類人才都是須要的,但 是做爲我的奮發向上的想法仍是應該有的,努力在本身喜歡的行業上作的更好,而不該該 停留在比較膚淺的層次上。   我是一個本身以爲比較有自知之明的人,或許我最大的優勢就是知道本身有不少缺點 :)。個人故事中不少的曲折和錯誤都是由個人缺點形成的,但願你們用審慎的眼光看待 個人經歷,不要被個人「花言巧語」所迷惑。我學習有些爲所欲爲,這給我帶來了無盡的 麻煩,也大大阻礙的個人發展。記得我小時候成績比較出色,可是後來學習嚴重偏科,導 致我中學成績一再滑坡,也沒有考上什麼好的學校,小時候的一個朋友,當時的成績和我 相仿,可是沒有我這個缺點,她上了清華,後來在去了美國深造,在一個著名導師手下研 究理論科學,這何嘗不是一條更好的出路。另外個人學習方法也是在不斷改善中的,過去 的學習過於講究數量和時間,那樣學習既苦而已效率不高,如今我很是注意學習的效率和 技巧,這樣纔是學習的捷徑(固然不是指投機取巧),好比說學一相對陌生的技術,若是 有條件,不妨問一問有經驗的人,不須要問不少,每每他不經意的幾句話會給你很是大的 幫助,甚至超過你看一個星期的書。帶着這樣的思想再去學習你會節省不少時間,這樣何 樂不爲呢?這些年中我學了很多的東西,因爲開始很是盲目,因此學的東西雜亂無章,現 在回想起來讓我哭笑不得,我把大量的時間浪費在一些沒有必要深刻了解的知識上,畢竟一 我的的精力是有限度的。不少朋友很我同樣都背過五筆字形,的確它? 且 個不錯的輸入法,可是對一個研發人員它絕對不值得你去背,你的時間應該花在有價? 的地方。我這樣的事情還作過不少,我背過CCED、WPS的命令和快捷鍵,在dBase基本退出 歷史舞臺後我還花了不少時間去學習它的使用。因此個人學習在前期缺少規劃,沒有明確 的短時間目的、中期目標,只有一個虛無飄渺的長期的理想。這就像作設計同樣,好的設計 是從需求抽象到代碼有不少過程,而不能獲得了需求就馬上開始開始編碼。   固然這麼些年的學習和工做多多少少有些收穫,下面我說說個人一些學習的心得,這 些方法未必正確,我也在不斷探索和改進中。個人學習和工做有相對明確的目標,我不會 一時心動而去學習某一技術,在下決定以前我會考慮不少,包括長期的發展,我的路線的 規劃,須要付出的代價、可能遇到的困難及解決的辦法等等,在決定後還會制定更加明確 的計劃,包括短時間、中期和長期的,身邊能夠利用到的資源(包括好的書籍、資料、軟硬 件環境,也包括有經驗的朋友或者師長),以及每個階段是怎麼過渡到高一階段的計劃 ,每每在一個學習階段一旦上路後會走的相對順利,可是跨階段一般比較麻煩,好比從學 習基礎知識轉到實踐。另外我買書也有本身的方法,如今世面上高質量的書遠不如低質量 書多,對於一個陌生的技術,每每在第一次買書會選擇錯誤,即便買到一本好書可是它的 方向也未必適合你,因此我一般會先在網上查找一些該技術的介紹,有了一點點概念後再 去買一本比較薄、相對便宜而且內容相對泛泛而談的書,這是國內做者最善於寫的書:) ,再把它瀏覽一遍後我就會基本明白這門技術的要點,後面買書和制定計劃就會明確的多 。不然一開始就想找本好書每每比較困難,並且買回來後努力學習,有時候學了一半才發現 是本低質量的書或者是相對過期技術,讓人很是懊惱。另外讓有經驗? 人幫你介紹,一般也是一個不錯的選擇。   有些朋友想學通訊、嵌入式開發,但總以爲本身沒有軟硬件環境,我就按個人瞭解給 你們介紹一下怎麼創建這樣的環境,固然我瞭解的只是我學習和工做的方向。通訊我作的 是數據網方面的工做,包括TCP/IP、二三層交換、對接入網、H.323和軟交換也有一點認識 。這些軟硬件環境都是能夠在PC上構建的。你甚至能夠在一個沒有網卡的PC上創建一個包 含多個路由器、接入服務器、VoIP網關、網守、主機等的仿真網絡環境,並且與實際的網 絡至關接近,固然這須要你有清晰的網絡概念和必定的網絡知識,我一直在努力開發一套 軟件將這個過程簡化,目前試驗已經作完,我可能會將它融入個人操做系統外圍擴展軟件 中。這樣的方法我沒法用簡單的語句講的很清楚,我能夠說一下大概的思想,就是在PC上 實現仿真網卡,(知道Windows怎麼在沒有網卡的機器實現虛擬網卡技術的朋友都應該會明 白),而後每個仿真網卡對應一個虛擬設備,如路由器或者主機。你也能夠藉助第三方 工具完成部分工做,如VmWare等。我如今就是利用一個仿真網卡作本身的開發的。 至於嵌入式開發環境更加容易實現,PC就是一個很是大的硬件平臺,現有的嵌入式操 做系統一般都支持X86,你能夠在上面作開發,經過軟盤Boot或者使用虛擬機裝載,我用V xWorks作了試驗,在一臺PC上跑Windows和VxWorks兩個系統。另外Windows上的兼容DOS的 16位仿真X86環境也爲不少操做系統提供了絕佳的試驗環境,個人操做系統在Windows上就 是這樣實現的。Linux在嵌入式中應用也比較普遍,它在網上有大量的資料,並且也相對比 較容易實踐。同時不少完善的嵌入式開發環境支持軟件仿真,如Tornado、WinCE等。

相關文章
相關標籤/搜索