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

2025年嵌入式開發(fā)趨勢(shì):新技術(shù)如何影響你的工作?

BlackBerry QNX推出通用嵌入式開發(fā)平臺(tái)
AI來(lái)襲!嵌入式開發(fā)者該如何應(yīng)對(duì)轉(zhuǎn)型?

代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實(shí)戰(zhàn)正式出版

代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實(shí)戰(zhàn)正式出版
如何成為嵌入式開發(fā)工程師?
嵌入式開發(fā)必備-RK3562演示Linux常用系統(tǒng)查詢命令(上)觸覺(jué)智能出品

如何使用 RISC-V 進(jìn)行嵌入式開發(fā)
一文了解嵌入式軟件開發(fā)的對(duì)象

嵌入式開發(fā)常見問(wèn)題排查

聚焦嵌入式開發(fā)中的合規(guī)性工具、項(xiàng)目管理工具、版本迭代工具應(yīng)用
嵌入式開發(fā)前景怎么樣?

評(píng)論