另外,在這里我要感謝我的ProjectManager,他原來是一個大通信公司的產品經理,對人非常和善,我從他那里學到了很多知識,而且他也給了我許許多多無私的幫助。在工作上他給我充分的空間和信任。記得公司安排我維護一個接入服務器軟件,由于代碼量不算太小(5萬行),資料和文檔都不齊全,我維護起來非常吃力,所以想重新把它做一遍,公司領導不太支持,可能覺得工作量太大,但是他極力支持我,私下里他讓我放手去做,我的維護工作他擠時間做。在他的支持下,我花了半年時間完成了接入服務器的軟件,并且實現(xiàn)了一個相對完整的TCP/IP協(xié)議棧。在這里我學會了嵌入式系統(tǒng)設計、驅動開發(fā)、TCP/IP和很多通信的知識,我花了一年時間終于使自己從MIS開發(fā)轉到了通信行業(yè),并且站穩(wěn)了腳跟。我的開發(fā)大量是對硬件的直接操作,不再受微軟的操作系統(tǒng),VC、Delhpi這些開發(fā)工具的約束,我終于看到了另外一片天空。
我做事情喜歡追根問底,隨著開發(fā)的深入,軟件開發(fā)與硬件聯(lián)系越來越緊密,硬件知識的匱乏又對我的發(fā)展產生了障礙,而且芯片技術基本上掌握在國外公司的手里,這對做系統(tǒng)級設計是一個非常大的制約,一個新產品出來,第一道利潤(也往往是最豐厚的利潤)常常都被IC公司如Intel、Motorola賺去了,國內的廠商只能喝點湯。所以我決心解決自己的硬件技術障礙,并打算離開通信行業(yè),進入IC設計相關領域。
當然我明白如果我對硬件了解的非常少,沒有哪家IC公司會仁慈到招我這樣一個一竅不通的人來培訓。所以我必須努力打好基礎,學一些相關知識為以后做準備。就像我開始從MIS轉到通信一樣,我看過大量通信方面的書,并且給一個ISP做過RADIUS計費分揀臺,在這樣的背景下這家通信公司才給了我這個機會。我在的通信公司是做系統(tǒng)設計的,有不少PCB Layout硬件人員,平常我就注意向他們學習,由于我做的是軟件,在公司看硬件資料不好意思,所以開始只好在家看,剛來上海工作我連續(xù)一年都在加班,后來不加了,因為我要擠出時間學習,通常我12點左右睡,第二天5點半起,我上班比較早,地鐵上如果人不多我也用來看書。學習當然不會是一帆風順的,有些實在不懂的問題就積累起來問硬件人員,他們的幫助使我學習進度快了很多,因為在沒有人點撥的情況下自學,我的一半時間是 花在解決疑難問題上,但這種問題經常是別人的一句話就可以讓我豁然開朗,我非常慶幸我有這樣的學習環(huán)境。在后面的一年里,我學會了看硬件原理圖,學會了簡單的硬件設(模擬電路方面還有不小的差距),事情就是這樣的,當你安安份份做軟件,別人永遠認為你是軟件開發(fā)人員,在你開始學習硬件時別人未必會認同,有位中興通訊的朋友還對我說過,一個人不可能把所有東西都學完。我也明白這一點,但我希望自己做的更好。但當你熟悉硬件后大家又會覺得你好像原本就是軟硬件都懂的,同事們也都習以為常了。這個時候我可以把硬件資料堂堂正正的拿到公司看,沒有人再大驚小怪了。讓我比較自豪的是我通過自己的努力做了一個IAD(軟交換的終端設備)系統(tǒng)方案,包含軟硬件的選型、設計等內容,這個方案得到了公司和同事們的認同,讓我感到非常欣慰。
技術是相輔相成的,當我的硬件有了一定的進步后,我的軟件設計也有了很大的提高 ,我可以從更深層次理解問題,我做的接入服務器CPU是Motorola PowerPC860,熟悉的朋 友都知道860 QMC與軟件的批量數(shù)據傳輸通常采用BD表的方式,硬件人員做驅動的時候習慣采用固定BD表,每接收或發(fā)送數(shù)據都將數(shù)據從BD表拷貝到用戶Buffer,或從用戶Buffer拷 貝到BD表,由于理解的比較深入,我自己重新實現(xiàn)了這個過程,采用動態(tài)BD表的方式,驅動從一個網口接收數(shù)據,提交給我的軟件進行三層交換,直至從另外的接口發(fā)送出去,沒有進行一次拷貝。這樣的設計大大提高了性能,使系統(tǒng)的指標接近理論值。軟硬件的結合使我的設計水平上了一個臺階。我現(xiàn)在寫的這個操作系統(tǒng),編譯后我把程序反編譯成匯編,找出其中不優(yōu)化的代碼,然后在C程序中進行調整。舉個例子,很多CPU沒有專門的乘法指令,這個大家應該都知道,在這種CPU上進行一個乘法操作常常會花費大量的指令周期,有的朋友會說這個我知道,我會盡量避免采用×號,但是事情往往不是那么簡單,你知道 C語言中數(shù)組的下標操作是怎么實現(xiàn)的嗎?仔細看看反匯編的代碼你就會明白,同樣是通過下標的定位操作,C編譯器會有時候會產生位移指令,但有時候會用乘法實現(xiàn),兩者效率往往是天壤之別,所以明白這些問題你才能將系統(tǒng)性能提升到極致。這些問題就不多說了,有興趣的話以后可以共同探討。
話說遠一點,我由衷的希望在軟件上做的比較深入的朋友們有機會學學硬件以及其它 相關知識,尤其是做底層開發(fā)和嵌入式設計的。這對軟件技術的提高有非常大的幫助,否 則很多事情你只知道該這樣但不會明白為什么該這樣。我這個觀點在我現(xiàn)在的IC公司Proj ect Manager那里也得到了驗證。他告訴我們公司現(xiàn)在802.11芯片產品的軟件經理原本是 做該芯片硬件設計的,某某某原本是做軟件的,現(xiàn)在在做IC,類似的例子還有很多,只是在國內這樣的風氣不是非常流行。
我有一些心得體會與大家分享,只有當我干好本職工作后,我才會學習與工作關系不 大的技術,這樣公司的上司才不至于反感,在入門階段的問題我通常不去問那些資深人士 ,而是問一些資歷比較淺的朋友,比如剛畢業(yè)不久的學生,因為他們往往會跟你詳細的講 解,而資深人士通常覺得你的問題太簡單,所以回答的也很簡單,我又不好意思多問。等 技術上了一定的層次后我才會問他們,他們也能給你比較深入的回答。另外,有些朋友說我機會比較好,他們也希望能從事新的工作可惜沒有機會,我聽了只有苦笑,我的機會了 解的人都應該知道,我沒有出生在什么IT世家:)也沒有誰一路提拔我,所有的路都是自己走出來的,我母親去世比較早,我的后母(我叫她阿姨)看著我努力過來的,一次她看我大年30還在寫程序,她說像我這樣努力木頭都能學出來。
我的最終目的是IC而不是PCB,所以我下一步的準備開始學習IC設計的知識。公司的同事沒有懂IC設計的,后面的路又要靠自己了,我買了不少相關的書,在網上也查了很多的 資料,我花了大量的時間去學習VHDL,并且用軟件進行了一些簡單的設計和仿真(沒有設計ASIC,只是針對FPGA),隨著學習的深入,我漸漸明白了IC設計的基本流程,同時也明白了這條路的艱辛。這個時候我已經做好了跳槽的準備,我向一家業(yè)界又一定知名度的IC設計公司投了簡歷,并通過了漫長的面試(4個多小時)。其他的一切我都比較滿意,唯獨薪資差強人意,我也明白原因,因為我是這個行業(yè)的新人,我沒有經驗,我再一次將自清零了。公司老板問我6000多一個月能不能接受,我知道他也是照章辦事。想想我通信行業(yè)的朋友們,基本上都是年薪10萬以上,月薪過萬的也比比皆是,朋友們也幫我介紹了不少待遇不錯的公司,我該怎么選擇,當時我很猶豫,我熱愛我的事業(yè),我向往我的追求,但我也是一個普通的人,我也需要養(yǎng)家糊口,我也想早一點買房買車。生活給我出了一道難題。
愛因斯坦在63歲時說過”一個人沒有在30歲以前達成科學上的最大成就,那他永遠也不會有。”這句話給了我很大的壓力和震動,我馬上就26歲了,離30只有四年時間,我必須抓緊這幾年寶貴的時間,努力達到我技術上的最高峰。為了這個理想,為了能離自己的夢更近一些,我選擇了這家IC公司,我明白自己的薪資和公司剛進來的碩士研究生相差無幾,但為了今后的發(fā)展只能忍受,一切又得重新開始。換行業(yè)是一個非常痛苦的過程,尤其從一個春風得意的位置換到一個陌生的崗位,感覺象從溫暖的被子里鉆出來跳進冰水中,讓人難以接受。在原來那家通信公司,我是唯一兩年時間漲了五次工資的員工,公司和同事都給了我極大的認可,工作上也常常被委以重任。但現(xiàn)在這一切都成了過去,在新的公司 我只是一個新人,沒有人知道也沒有人在意我過去的成績。我決定重新開始,我把自己看作新畢業(yè)的學生,我要用自己的努力得到公司的認可。進入新的行業(yè)是非常痛苦的,我告訴自己必須忍受這一切,雖然外面有很多誘惑,但是既然作出了選擇我就不允許自己輕易放棄。
我現(xiàn)在已經在這家新公司上了一個多月的班,開始非常艱難,現(xiàn)在慢慢適應了。第一 個月結束時,Team Leader找我談話,說我是新進員工中最優(yōu)秀的一個,我心里很欣慰,這也算對我努力的一個肯定吧。在這里還要感謝我的女朋友,她給了我很大的支持和鼓舞,每次在我動搖的時候她都在鼓勵我,讓我堅持自己的理想,剛來上海是她讓我不要勉強去 做MIS,這次也是她讓我頂住了月薪過萬的誘惑,沒有她我可能不會有今天的成績。現(xiàn)在的公司有自己的操作系統(tǒng),自己的CPU、DSP和其它芯片,在這里我能學到世界上最先進的技術,我們的設計開發(fā)不再完全依賴別人的硬件和系統(tǒng),這讓我很開心。我打算等工作步入正軌后,全力學習新的知識,實現(xiàn)我的理想。
在后面的兩年里我給自己定下了幾個目標:
一.努力做好本職工作,在工作上得到公司和同事們的認同;
二.努力學習IC硬件設計知識,多向同事請教,并利用一切機會多實踐;
三.實現(xiàn)我的實時操作系統(tǒng)的主要部分,完成TCP/IP協(xié)議棧模塊,并免費發(fā)布源代碼;
四.和我女朋友結婚并買一套小房子,這是最重要的,因為我明白事業(yè)是可以重來的,但是
珍貴的感情很難失而復得。
在這里提一下我現(xiàn)在開發(fā)的操作系統(tǒng),它是一個實時嵌入式系統(tǒng),目前支持以下特性:
a.支持時間片輪轉調度和基于優(yōu)先級調度,最多64個優(yōu)先級;
b.搶占式實時內核;
c.為了便于移植,主體用標準C實現(xiàn);
d.匯編代碼非常少,不到100行;
e.支持任務管理,各任務有獨立的堆棧;
f.進程同步和通信目前完成了Semaphore,Message Queue正在調試;
g.實現(xiàn)了定時系統(tǒng)調用;
h.可以在windows上仿真調試
我還打算下一步實現(xiàn)優(yōu)先級反轉保護,Event Flag,Data Pipe,內存管理(以前實現(xiàn)過)、驅動接口等。在這之后我還會努力完善它,比如加入文件系統(tǒng),協(xié)議棧、調試接口等。希望朋友們提出自己的意見和建議,在此不勝感激!
后記:
就像有的朋友說的,我的經歷或許會給一些朋友產生誤導,在這里我必須說明一下。我來上海以前學習過于拼命,常常晚上只睡3個多小時,我身高1米71,那時只有108斤(我 現(xiàn)在130多),家人也說我這樣拼命活不過60歲,但是當時的我太固執(zhí),我對他們說只要能實現(xiàn)理想活50歲我就夠了。那時的拼命使我的身體受到了影響,有一次早上突然腰肌劇痛難忍,痛的我倒在床上站不起來。雖然我現(xiàn)在已經比較注意,但有時候還會隱隱作痛。后來在女朋友說服了我,來上海以后我不再如此。我經常引用父親的一句話”身體是革命的本錢”。
而且我也發(fā)現(xiàn)拼命不是辦法,我可以熬一兩個通宵,最多的一次我連續(xù)工作了三天三夜, 但是我半個月都沒有恢復過來,這樣是不是得不償失?學習工作應該是一個長期的過程, 像馬拉松而不是百米沖刺。我現(xiàn)在非常注意調整學習和工作的強度,我要保證每天盡量有 相對充沛的精力,一些年輕的朋友覺得自己也應該拼命努力,這讓我多少有些擔心,如果我的故事能讓你在學習工作上多一點興趣,我會感到很開心,但如果誤導了某些朋友,讓你做一些不值得的付出,我會感到很內疚。
技術沒有貴賤只分,我以前換行業(yè)是因為自己的興趣所致,而不是對哪個行業(yè)有什么偏見。我希望我的經歷不要給朋友一個錯誤的導向,覺得我始終向更高的技術發(fā)展。其實各行各業(yè)做到頂尖都是很困難的。話又說回來雖然技術沒有貴賤,但是門檻是有高低的,無論如何,做IC的門檻要比做網頁的高,這一點無可否認。國家各種人才都是需要的,但是作為個人奮發(fā)向上的想法還是應該有的,努力在自己喜歡的行業(yè)上做的更好,而不應該停留在比較膚淺的層次上。
我是一個自己覺得比較有自知之明的人,或許我最大的優(yōu)點就是知道自己有很多缺點 :)。我的故事中很多的曲折和錯誤都是由我的缺點造成的,希望大家用審慎的眼光看待 我的經歷,不要被我的”花言巧語”所迷惑。我學習有些隨心所欲,這給我?guī)砹藷o盡的麻煩,也大大阻礙的我的發(fā)展。記得我小時候成績比較出色,但是后來學習嚴重偏科,導致我中學成績一再滑坡,也沒有考上什么好的學校,小時候的一個朋友,當時的成績和我相仿,但是沒有我這個缺點,她上了清華,后來在去了美國深造,在一個著名導師手下研究理論科學,這未嘗不是一條更好的出路。另外我的學習方法也是在不斷改善中的,過去的學習過于講究數(shù)量和時間,那樣學習既苦而已效率不高,現(xiàn)在我非常注意學習的效率和技巧,這樣才是學習的捷徑(當然不是指投機取巧),比如說學一相對陌生的技術,如果有條件,不妨問一問有經驗的人,不需要問很多,往往他不經意的幾句話會給你非常大的幫助,甚至超過你看一個星期的書。帶著這樣的思想再去學習你會節(jié)省很多時間,這樣何樂不為呢?這些年中我學了不少的東西,由于開始非常盲目,所以學的東西雜亂無章,現(xiàn)在回想起來讓我啼笑皆非,我把大量的時間浪費在一些沒有必要深入了解的知識上,畢竟一個人的精力是有限度的。很多朋友很我一樣都背過五筆字形,的確它是個不錯的輸入法,但是對一個研發(fā)人員它絕對不值得你去背,你的時間應該花在有價值的地方。我這樣的事情還做過很多,我背過CCED、WPS的命令和快捷鍵,在dBase基本退出歷史舞臺后我還花了很多時間去學習它的使用。所以我的學習在前期缺乏規(guī)劃,沒有明確的短期目的、中期目標,只有一個虛無飄渺的長期的理想。這就像做設計一樣,好的設計是從需求抽象到代碼有很多過程,而不能得到了需求就立刻開始開始編碼。
當然這么些年的學習和工作多多少少有些收獲,下面我說說我的一些學習的心得,這些方法未必正確,我也在不斷探索和改進中。我的學習和工作有相對明確的目標,我不會一時心動而去學習某一技術,在下決定之前我會考慮很多,包括長期的發(fā)展,個人路線的規(guī)劃,需要付出的代價、可能遇到的困難及解決的辦法等等,在決定后還會制定更加明確 的計劃,包括短期、中期和長期的,身邊可以利用到的資源(包括好的書籍、資料、軟硬件環(huán)境,也包括有經驗的朋友或者師長),以及每一個階段是怎么過渡到高一階段的計劃 ,往往在一個學習階段一旦上路后會走的相對順利,但是跨階段通常比較麻煩,比如從學 習基礎知識轉到實踐。另外我買書也有自己的方法,現(xiàn)在世面上高質量的書遠不如低質量書多,對于一個陌生的技術,往往在第一次買書會選擇錯誤,即使買到一本好書但是它的方向也未必適合你,所以我通常會先在網上查找一些該技術的介紹,有了一點點概念后再去買一本比較薄、相對便宜并且內容相對泛泛而談的書,這是國內作者最善于寫的書:) ,再把它瀏覽一遍后我就會基本明白這門技術的要點,后面買書和制定計劃就會明確的多 。否則一開始就想找本好書往往比較困難,而且買回來后努力學習,有時候學了一半才發(fā)現(xiàn)是本低質量的書或者是相對過時技術,讓人非常懊惱。另外讓有經驗的人幫你介紹,通常也是一個不錯的選擇。
有些朋友想學通信、嵌入式開發(fā),但總覺得自己沒有軟硬件環(huán)境,我就按我的了解給 大家介紹一下怎么建立這樣的環(huán)境,當然我了解的只是我學習和工作的方向。通信我做的 是數(shù)據網方面的工作,包括TCP/IP、二三層交換、對接入網、H.323和軟交換也有一點認識。這些軟硬件環(huán)境都是可以在PC上構建的。你甚至可以在一個沒有網卡的PC上建立一個包 含多個路由器、接入服務器、VoIP網關、網守、主機等的仿真網絡環(huán)境,而且與實際的網絡相當接近,當然這需要你有清晰的網絡概念和一定的網絡知識,我一直在努力開發(fā)一套軟件將這個過程簡化,目前試驗已經做完,我可能會將它融入我的操作系統(tǒng)外圍擴展軟件 中。這樣的方法我無法用簡單的語句講的很清楚,我可以說一下大概的思想,就是在PC上 實現(xiàn)仿真網卡,(知道Windows怎么在沒有網卡的機器實現(xiàn)虛擬網卡技術的朋友都應該會明白),然后每一個仿真網卡對應一個虛擬設備,如路由器或者主機。你也可以借助第三方工具完成部分工作,如VmWare等。我現(xiàn)在就是利用一個仿真網卡做自己的開發(fā)的。至于嵌入式開發(fā)環(huán)境更加容易實現(xiàn),PC就是一個非常大的硬件平臺,現(xiàn)有的嵌入式操作系統(tǒng)通常都支持X86,你可以在上面做開發(fā),通過軟盤Boot或者使用虛擬機裝載,我用VxWorks做了試驗,在一臺PC上跑Windows和VxWorks兩個系統(tǒng)。另外Windows上的兼容DOS的16位仿真X86環(huán)境也為很多操作系統(tǒng)提供了絕佳的試驗環(huán)境,我的操作系統(tǒng)在Windows上就是這樣實現(xiàn)的。Linux在嵌入式中應用也比較廣泛,它在網上有大量的資料,而且也相對比較容易實踐。同時很多完善的嵌入式開發(fā)環(huán)境支持軟件仿真,如Tornado、WinCE等。
這篇文章是我轉載別人的,至于作者是誰也無法考證(轉載的那個人也是轉載的!多級跳板??呵呵)。至于我轉載這篇文章不是他給我指明了什么道路而是讓我如何面對后面的人生,也讓我有了更多屬于自己的選擇,畢竟我還年輕。所以我要謝謝這個人,讓我不那么渾渾噩噩的過著行尸走肉的日子。動力! 向上!我只想到這么多;! 轉載這篇文章是想讓更多的人看,至于你是不是學程序的并不重要,重要的是您的選擇是.......
這是一篇非常好的文章,以至于我也再一次將其轉載到了我的空間里,就當是一篇勵志文章,來激勵一下今后的學習和生活。文章很長,在這個快餐文學泛濫的網絡中,能看完的人一定很少,能看到我寫的讀后感的人相信已經沒有幾個了。但是我還是要將我的感受寫下來。
首先,我很敬仰這位博文的作者,且不論他是否真的有以上成就,就單單這份融入文章的感情就足以使人信服。以至于我更想認識一下作者,但是,正如我的上一級跳板所言,跳板太多了,作者已無從考證了,因此,我也不將我的上一任公布出來了。
作者文章寫得很樸實,但是感情很真摯。可以看出作者確實為了理想,為了自己的愛好,更為了將來的生活,付出了太多太多。很艱辛,很拼命。一切都是作者自己拼搏換來的。多次的從頭來過真的可以使一個人的熱情消磨的干干凈凈,更重要的是其心性的改變。當一個人由高處驟然降到最底層,心中一定是非常煎熬的,尤其是這個決定是自己提出的,其感受更是劇烈。然而,作者卻有著堅定的信念堅持了下來,依然在為了自己的決定堅持著。真的很讓我震撼。
現(xiàn)如今,我也是一個剛剛走出高中校園的毛頭小子。情況也和作者相似。但是我和他卻有很大的差距,我是否有作者那樣堅定的決心和毅力,為了自己的未來而不斷的奮斗?正如我的上一級跳板所說,文章并不是為我們這些迷途之中的少年指明了什么道路,如何學習作者去面對自己的人生。而是像所有人傳達著一種拼搏、不放棄的精神。讓人時刻看清自己應該在的位置,不斷的充實著自己,以是自己充滿動力,時刻向上!
再次對這篇文章的作者呈上我的敬意,這篇文章確實給了我不小的震撼,由于我也是軟件專業(yè)的,這位作者更是我不折不扣的前輩和老師。
文章確實很長,里面更是充斥著很多計算機知識。但是我還是希望有人可以沉住氣將他看完,專業(yè)知識撇開不論,但是文章所表達的精神確是每個踏入大學,以及即將踏入大學和工作的人應該達到的。我們是還很年輕,但是年輕的本錢并不多,我們更不能猶如行尸走肉般渾渾噩噩的度過自己的30歲。到那時,說那句老生常談的話:“當時我要是……”便會再多一個主人!
PS:雖然我沒有將我的上級跳板公布出來,但是他的博客名確是相當勵志的——超越!超越自我,不斷升華!這是我對它的理解,同樣可以激勵我不斷的超越!
跳板獨孤狐: 一年過得飛快,大一轉眼即逝。呵呵,時間不可能停下來等你,給你喘息的機會。
想當年,帶著高考的失利來這里,對人生失去了一分肯定。。。大學是什么概念,不知道。。。。,要干些什么,不知道。。。。生活變得很平淡而沒有目標。看著身邊的同學專升本的升本,考四級的考四級,入黨的入黨,當官的當官,很盲目,都不知道要怎么要跟從誰好-。-(幸好,當時我沒盲目更從)
我的專業(yè)學的是電氣自動化,將來出來肯定是靠技術吃飯,可是,學校讓我大失所望,大一全是一些無聊的課,整一個浪費時間。。。。說來也巧,遇到貴人,教我們機械的昌哥,人很好,沒怎么上課,都是在教我們大學該如何學習,少走彎路。我們的專業(yè)學的東西多而不精,他就告訴我們要精通一門技術,就推薦我們學習單片機,媽的,我當時連個電阻都沒看過,很SB的。。。。他很耐心一點一點的教,帶我漸漸入了單片機這個門。。。說真的,只要入了門,什么都好辦了,我可以負責的說,一個導師遠遠好過一個老師。。。。我記住了他說的每一句,不是因為他是我的老師,而是他的話真的很有道理,很有啟示作用。。。。我學習單片機整整堅持了一年,吃了很多的苦,但我始終沒放棄,這點確實是難能可貴的。不是我不相信學校,而是學校太不給力,進度太慢,根本學不到任何有價值的東西,所以只能靠自學,當然我說的是我學校,別的學校我不知道。。。。
大學,真的很能改變一個人,為人處世也好,學習也好。。。。真的需要好好磨練,希望剛到大學的同學可以找到自己的目標,多向老師和厲害的師兄師姐請教,或許會少走些彎路,上了大學最好要有自己的主見,不要盲目跟從。。。。