Major Member
|
搞 embedded 不是只要學 C 就好, 除非你只想摸 8051 那類的 Micro-controller, 以現在的 embedded 的環境來說, C++ 的重要性已經日漸增加, 甚至連 Design Pattern 都要學一點, 因為在較新版本的 WinCE BSP 中有多 driver 都是用 C++ 實作了, 除此之外組合語言最好要懂, 很多時候都要去追蹤組合語言寫成的 function.
如果用 WinCE 可以沒事摸一下 C#, 拉 UI 寫測時時挺方便的, 唯一的缺點是呼叫底層時要用 P/Invoke, 有時甚至要自己寫 DLL 給 C# 呼叫, 要不就多花點時間學一下 MFC, MFC 其實並不難, 又可以直接呼叫底層的東西, 如果你只想搞 Linux, 那就把 POSIX 跟 C/C++ Standard Library 摸熟, UI 建議學 QT4, 不建議碰 GTK 那種過時的東西.
在軟體方面, 除了程式語言要學, 資料結構, 作業系統等等這些都是必備的, 除此之外最好學點硬體, 最好要懂基本的數位邏輯電路, 常見基本電子元件的功用, 一些基本的公式與電路要會, 三用電錶要會用, 焊槍要會拿, 因為做這行, 要自己 debug 電路的機率非常大, 特別是沒辦法釐清是軟體或硬體問題時, 我之前就是硬體這方面太弱, 因為十幾年沒碰, 很多東西都不一樣, 這一部份被人嫌到快掉渣 (雖然我現在軟體硬體也都很弱就是了...)
除此之外 debug 功力是很必要的, debug 就是要靠經驗累積了, 特別是很多時候我們都沒辦法用 IDE 的 debug 環境, 最常用的就是俗稱的刷牆, printk 或 RETAILMSG 將會是你最常用的 function/macro, 然後就要靠人工來 trace source 跟你自己的 sense 來 debug 了.
除了專業上的東西之外, 最好英文要有點程度, 聽跟說可以不計較, 但是請你一定要有看懂專業原文書八成以上的能力, 做這行不看英文是不可能的, datasheet, spec 通通都是用英文寫的.
最後有一個是最重要的, 請你先看看你自己是什麼學校什麼科系畢業的, 如果你不是台清交成電機電子資工等相關系所畢業, 有八成保證能夠進入一流公司如 HTC, 那就請別浪費時間來搞這個, 因為這東西大家都在搞, 講句難聽的, 今天 HTC 做 Android 做 Win Mobile/CE, 你公司有辦法跟人家比嗎? 無論是人力資源跟規模都不是可以抗衡的, 做那麼多 me-too 的產品,是不會對你的人生有太大幫助, 說明白點就是升官發財請走他路, 除非你想跟我一樣三十好幾了還在領三萬多的薪水不敢交女友不敢娶老婆.
我對你的感想是, 那些補習班洗腦得真好, 天堂有路你不走, 地獄無門你偏要闖進來? 讀文學的搞啥 embedded? 去當記者啦! 我學電機+資管的當初都被人嫌到不行了, 你覺得你機會有比我大嗎?
老實說如果不是興趣, 我根本不會做這一行, 賺不到幾毛錢, 又要花一堆時間學一堆有的沒的, 新的東西學不完, 錢又領得少, 超級沒成就感的, 我不是因為錢才做這一行的, 我是走頭無路才做這一行的, 因為我什麼都不會!
好好的一個人, 幹嘛要來寫程式? 工程師是辦公室的藍領階級你還不懂嗎?
__________________
滿招損 謙受益
|