分享過來人的經(jīng)驗(yàn)之談,希望能給剛?cè)胄?a target="_blank">嵌入式開發(fā)的朋友一點(diǎn)兒幫助。
混跡互聯(lián)網(wǎng)行業(yè)七年有余,期間走了很多彎路,吃了不少苦。
大學(xué)階段
我讀的大學(xué)并不是什么好大學(xué),所以在大學(xué)開學(xué)之前我就打定主意要好好學(xué)習(xí),憑技術(shù)吃飯。開學(xué)前學(xué)完了PASCAL,那時(shí)連程序的概念都沒有,只好死記硬背代碼,拿紙做筆記。記不清楚用紙寫了多少程序,最長的一次在A4草稿紙寫了30多頁。就在這樣的條件下入門了C/C++。
第一個(gè)C語言HelloWorld程序,調(diào)試了幾個(gè)星期,當(dāng)時(shí)沒有人告訴我TC2.0需要設(shè)置下才能用。
大一學(xué)完了C、X86的匯編、數(shù)據(jù)結(jié)構(gòu)、C++ 。
大二準(zhǔn)備學(xué)VC和BC,當(dāng)時(shí)難以取舍,后來選了VC,不為別的,只為書店里兩本書,VC那本便宜6塊錢。
我的努力在班上無人能及,學(xué)的日夜不分,大三有了自己的計(jì)算機(jī)后更是如此。很多次父親在半夜教訓(xùn)我,責(zé)怪我是不是不要命了。我一直覺得自己基礎(chǔ)差,記憶力又不行,條件也不好,所以覺得只有多花點(diǎn)時(shí)間才能趕上別人。后來有許多朋友說我有計(jì)算機(jī)的天賦,我只能干笑。
我當(dāng)時(shí)用的是486,16M內(nèi)存、1G硬盤。顯示器是個(gè)二手的,輻射非常大,開機(jī)屏幕冒火花。安裝一個(gè)Windows NT4.0需要一個(gè)通宵,編譯一個(gè)BC5.0向?qū)傻某绦蛐枰獌蓚€(gè)小時(shí)。但是就是這臺破機(jī)器陪伴我兩年,讓我學(xué)會了VC、Delphi、SQL Server等。
大三假期在一個(gè)計(jì)算機(jī)研究所找了個(gè)實(shí)習(xí)機(jī)會,工作了兩個(gè)月一分錢也沒有拿到,但是這兩個(gè)月對我的發(fā)展幫助很大。由于工作認(rèn)真,在一位長者的引薦下開始和他們一起做項(xiàng)目,這使我在讀書期間有了自己的收入,在學(xué)生期間有1000多的收入我已經(jīng)非常滿足了,后來終于用自己賺的錢換了個(gè)新計(jì)算機(jī)。
涉足社會
大四下學(xué)期開始找工作,當(dāng)時(shí)非常幼稚地認(rèn)為工作經(jīng)驗(yàn)已經(jīng)很多。聽父母的想法,想去那個(gè)研究所。之前在那邊實(shí)習(xí)過的部門領(lǐng)導(dǎo)也希望我能去,大概是這種單位比較官僚的原因,最后沒去成。最后去了我兼職過的一家公司做管理信息系統(tǒng)MIS(Management Information System)的公司。畢業(yè)之前一年的時(shí)間里,做過各種MIS,從煤礦、煙廠、鐵路、到高校,什么有錢就做什么,工作也辛苦,經(jīng)常加班、通宵。從跟客戶談需求到設(shè)計(jì),再到編碼、測試、交付都要干。那時(shí)有滿滿的成就感,干勁十足,對自己很滿意,現(xiàn)在回想起來覺得真是膚淺。
剛走上工作崗位的學(xué)生容易被誤導(dǎo),覺得很受公司器重,實(shí)際上這樣的工作做下去可能永遠(yuǎn)是一個(gè)低層次的開發(fā)者。
你以為去跟用戶談需求、做設(shè)計(jì)就是系統(tǒng)分析和設(shè)計(jì)了嗎,國內(nèi)又有幾個(gè)公司能夠做的很到位很規(guī)范?一個(gè)公司不是通過了ISO9000或者CMM就能規(guī)范了,我現(xiàn)在在一家有幾十年歷史的外企工作,里面的管理不是一般國內(nèi)企業(yè)所能企及的。
作為一個(gè)畢業(yè)不久、剛步入過社會的學(xué)生,幾乎不可能在很短的時(shí)間掌握系統(tǒng)分析和設(shè)計(jì),面向?qū)ο?、UML只是一個(gè)工具,關(guān)鍵是人本身的思想,不是說你熟悉了C++ 、Rose就能夠做出好的設(shè)計(jì)。
注:統(tǒng)一建模語言(Unified Modeling Language,UML)是一種為面向?qū)ο笙到y(tǒng)的產(chǎn)品進(jìn)行說明、可視化和編制文檔的一種標(biāo)準(zhǔn)語言,是非專利的第三代建模和規(guī)約語言。UML是面向?qū)ο笤O(shè)計(jì)的建模工具,獨(dú)立于任何具體程序設(shè)計(jì)語言。
我的觀點(diǎn)是不在于你用什么工具和語言,而在于你干什么工作。你的設(shè)計(jì)體現(xiàn)了你的技術(shù)層次。
轉(zhuǎn)行嵌入式
干了一年MIS,我覺得非??鄲灒龅拇蠖鄶?shù)都是熟練工種的活,個(gè)人技術(shù)上沒有太多的提高也看不到方向。所以決定離開這個(gè)城市去上海,尋求更好的發(fā)展,并且打算放棄我以前的MIS。
由于是全新的行業(yè),我學(xué)的VC、Delphi、數(shù)據(jù)庫派不上用場,擺在我面前的是嵌入式、協(xié)議、信令一些我從未接觸過的知識。于是拼命的學(xué)習(xí),把自己當(dāng)做一個(gè)應(yīng)屆畢業(yè)生,半年過去我終于熟悉了工作,薪水也漲了。
記得公司安排我維護(hù)一個(gè)接入服務(wù)器軟件,由于代碼量不算太?。?萬行),資料和文檔都不齊全,我維護(hù)起來非常吃力,所以想重新把它做一遍,花了半年時(shí)間完成了接入服務(wù)器的軟件,并且實(shí)現(xiàn)了一個(gè)相對完整的TCP/IP協(xié)議棧。在這里我學(xué)會了嵌入式系統(tǒng)設(shè)計(jì)、驅(qū)動開發(fā)、TCP/IP和很多通信的知識。花了一年時(shí)間終于使自己從MIS開發(fā)轉(zhuǎn)到了通信行業(yè),并且站穩(wěn)了腳跟。
此時(shí),我的開發(fā)大多是對硬件的直接操作,不再受操作系統(tǒng),VC、Delhpi這些開發(fā)工具的約束,看到了另外一片天空。
學(xué)習(xí)IC設(shè)計(jì)
隨著開發(fā)的深入,軟件開發(fā)與硬件聯(lián)系越來越緊密,硬件知識的匱乏又對我的發(fā)展產(chǎn)生了障礙。芯片技術(shù)基本上掌握在國外公司的手里,這對做系統(tǒng)級設(shè)計(jì)是一個(gè)非常大的制約,一個(gè)新產(chǎn)品出來,第一道利潤也往往是最豐厚的利潤常常都被IC公司賺去了,國內(nèi)的廠商只能喝點(diǎn)湯。所以我決心解決自己的硬件技術(shù)障礙,并打算離開通信行業(yè),進(jìn)入IC設(shè)計(jì)相關(guān)領(lǐng)域。
當(dāng)然我明白如果我對硬件了解的非常少,沒有哪家IC公司會仁慈到招我這樣一個(gè)一竅不通的人來培訓(xùn)。所以我必須努力打好基礎(chǔ),學(xué)一些相關(guān)知識為以后做準(zhǔn)備。
就像我開始從MIS轉(zhuǎn)到通信一樣,我看過大量通信方面的書,并且給一個(gè)ISP(因特網(wǎng)服務(wù)提供商)做過RADIUS計(jì)費(fèi)分揀臺,在這樣的背景下這家通信公司才給了我這個(gè)機(jī)會。
我在的通信公司是做系統(tǒng)設(shè)計(jì)的,有不少PCB Layout硬件人員,平常我就注意向他們學(xué)習(xí),由于我做的是軟件,在公司看硬件資料不好意思,所以開始只好在家看,剛來上海工作我連續(xù)一年都在加班,后來不加了,因?yàn)槲乙獢D出時(shí)間學(xué)習(xí),通常我12點(diǎn)左右睡,第二天5點(diǎn)半起,我上班比較早,地鐵上如果人不多,我也用來看書。
學(xué)習(xí)當(dāng)然不會是一帆風(fēng)順的,有些實(shí)在不懂的問題就積累起來問硬件人員,他們的幫助使我學(xué)習(xí)進(jìn)度快了很多。因?yàn)樵跊]有人點(diǎn)撥的情況下自學(xué),我的一半時(shí)間是花在解決疑難問題上,但這種問題經(jīng)常是別人的一句話就可以讓我豁然開朗,我非常慶幸我有這樣的學(xué)習(xí)環(huán)境。
在后面的一年里,我學(xué)會了看硬件原理圖,學(xué)會了簡單的硬件設(shè)計(jì)。當(dāng)你熟悉硬件后大家又會覺得你好像原本就是軟硬件都懂的,同事們也都習(xí)以為常了。這個(gè)時(shí)候我可以把硬件資料堂堂正正的拿到公司看,沒有人再大驚小怪了。
讓我比較自豪的是我通過自己的努力做了一個(gè)IAD(軟交換的終端設(shè)備)系統(tǒng)方案,包含軟硬件的選型、設(shè)計(jì)等內(nèi)容,這個(gè)方案得到了公司和同事們的認(rèn)同,讓我感到非常欣慰。技術(shù)是相輔相成的,當(dāng)我的硬件有了一定的進(jìn)步后,我的軟件設(shè)計(jì)也有了很大的提高 ,我可以從更深層次理解問題。
軟硬件的結(jié)合使我的設(shè)計(jì)水平上了一個(gè)臺階。我現(xiàn)在寫的這個(gè)操作系統(tǒng),編譯后我把程序反編譯成匯編,找出其中不優(yōu)化的代碼,然后在C程序中進(jìn)行調(diào)整。
舉個(gè)例子,很多CPU沒有專門的乘法指令,這個(gè)大家應(yīng)該都知道,在這種CPU上進(jìn)行一個(gè)乘法操作常常會花費(fèi)大量的指令周期,有的朋友會說這個(gè)我知道。我會盡量避免采用×號,但是事情往往不是那么簡單,你知道C語言中數(shù)組的下標(biāo)操作是怎么實(shí)現(xiàn)的嗎?仔細(xì)看看反匯編的代碼你就會明白,同樣是通過下標(biāo)的定位操作,C編譯器會有時(shí)候會產(chǎn)生位移指令,但有時(shí)候會用乘法實(shí)現(xiàn),兩者效率往往是天壤之別,所以明白這些問題你才能將系統(tǒng)性能提升到極致。
希望在軟件上做的比較深入的朋友們有機(jī)會學(xué)學(xué)硬件以及其它相關(guān)知識,尤其是做底層開發(fā)和嵌入式設(shè)計(jì)的。這對軟件技術(shù)的提高有非常大的幫助,否則很多事情你只知道該這樣但不會明白為什么該這樣。
只有干好本職工作后,我才會學(xué)習(xí)與工作關(guān)系不大的技術(shù),這樣公司的上司才不至于反感。
在入門階段的問題我通常不去問那些資深人士 ,而是問一些資歷比較淺的朋友,比如剛畢業(yè)不久的學(xué)生,因?yàn)樗麄兺鶗阍敿?xì)的講解,而資深人士通常覺得你的問題太簡單,所以回答的也很簡單,我又不好意思多問。等技術(shù)上了一定的層次后我才會問他們,他們也能給你比較深入的回答。
我最終目的是IC而不是PCB,所以我下一步的準(zhǔn)備開始學(xué)習(xí)IC設(shè)計(jì)的知識。公司的同事沒有懂IC設(shè)計(jì)的,后面的路又要靠自己了。買了不少相關(guān)的書,在網(wǎng)上也查了很多的資料。花了大量的時(shí)間去學(xué)習(xí)VHDL,并且用軟件進(jìn)行了一些簡單的設(shè)計(jì)和仿真。沒有設(shè)計(jì)ASIC,只是針對FPGA。我漸漸明白了IC設(shè)計(jì)的基本流程,同時(shí)也明白了這條路的艱辛。
跨行發(fā)展
換行業(yè)是一個(gè)非常痛苦的過程,尤其從一個(gè)春風(fēng)得意的位置換到一個(gè)陌生的崗位。在原來那家通信公司,我是唯一一個(gè)兩年時(shí)間漲了五次工資的員工,公司和同事都給了我極大的認(rèn)可,工作上也常常被委以重任。
最終還是做好了跳槽的準(zhǔn)備,我向一家業(yè)界有一定知名度的IC設(shè)計(jì)公司投了簡歷,經(jīng)過4個(gè)多小時(shí)漫長的面試。其他的一切我都比較滿意,唯獨(dú)薪資差強(qiáng)人意,我也明白原因,因?yàn)槲沂沁@個(gè)行業(yè)的新人,我沒有經(jīng)驗(yàn)。
公司老板問我6000多一個(gè)月能不能接受,我知道他也是照章辦事。想想我通信行業(yè)的朋友們,基本上都是年薪10萬以上,月薪過萬的也比比皆是,朋友們也幫我介紹了不 少待遇不錯的公司。
當(dāng)時(shí)我很猶豫,我熱愛我的事業(yè),但我也是一個(gè)普通的人,也需要養(yǎng)家糊口,也想早一點(diǎn)買房買車。生活給我出了一道難題。
為了能離自己的夢更近一些,我選擇了這家IC公司,自己的薪資和公司剛進(jìn)來的碩士研究生相差無幾,但為了今后的發(fā)展只能忍受,一切得重新開始。
在已經(jīng)在這家新公司上了一個(gè)多月的班,開始非常艱難,現(xiàn)在慢慢適應(yīng)了。第一個(gè)月結(jié)束時(shí),Team Leader找我談話,說我是新進(jìn)員工中最優(yōu)秀的一個(gè),我心里很欣慰,這也算對我努力的一個(gè)肯定吧。
總結(jié)
引用父親常說的一句話,身體是革命的本錢。
我來上海以前學(xué)習(xí)過于拼命,常常晚上只睡3個(gè)多小時(shí),家人也說像我這樣拼命活不過60歲。那時(shí)的拼命使我的身體受到了影響,有一次早上突然腰肌劇痛難忍,痛的我倒在床上站不起來。
學(xué)習(xí)工作是一個(gè)長期的過程, 像馬拉松而非百米沖刺。要注意調(diào)整學(xué)習(xí)和工作的強(qiáng)度,保證每天盡量有相對充沛的精力。
以前換行業(yè)是因?yàn)樽约旱呐d趣所致,希望我的經(jīng)歷不要給朋友一個(gè)錯誤的導(dǎo)向,其實(shí)各行各業(yè)做到頂尖都是大有可為的。
現(xiàn)在我非常注意學(xué)習(xí)的效率和技巧,比如說學(xué)一相對陌生的技術(shù),不妨問一問有經(jīng)驗(yàn)的人,不需要問很多,往往他不經(jīng)意的幾句話會給你非常大的幫助。
原文標(biāo)題:嵌入式開發(fā)經(jīng)驗(yàn)分享,把學(xué)習(xí)當(dāng)作一種興趣
文章出處:【微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
嵌入式
+關(guān)注
關(guān)注
5060文章
18979瀏覽量
302233 -
IC
+關(guān)注
關(guān)注
36文章
5881瀏覽量
175096
原文標(biāo)題:嵌入式開發(fā)經(jīng)驗(yàn)分享,把學(xué)習(xí)當(dāng)作一種興趣
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論