※ 引述《classic500ml (TB)》之銘言:
: 大家好
: 小弟最近想換工作,不過實在不清楚大環境方向,
: 想尋求各位前輩指點迷津!!先謝謝大家了orz!!
: 我的背景:
: 國立科大,電子電機相關科系畢業(不是資工)。
: 退伍後擔任軟體工程師三年多(沒換過工作),
: 專長C/C++,全部靠估狗,邊上班邊學,三年做了好幾個嵌入式系統案子。
: 公司是消費性電子產業,所以產品都是要透過GUI才能讓user使用。
: 工作分配是我跟一家外包兩個人寫,各忙各案子這樣,
: 簡單來說:
: 外包的案子,外包全部自己搞定。
: 我的案子,只有GUI我能自己搞定,其他像是 linux porting, driver, firmware等等,
: 都要靠外包商搞定。
: 我在這些非GUI部分中,對於"原理、基本概念、大方向"大致也都了解,但是都沒有實際
: 做過。
: =================================
: 寫了三年多GUI,覺得在這樣下去不行了,
: 所以想轉換方向,目前是想找韌體工程師,
: 但是打開104真的是眼花撩亂,
: 想請問:
: 1. 假設我以"外包商的能力"當目標,我該找什麼樣的 "產業or工作內容" 呢?
: P.S.
: 至少我目前覺得外包商能力很強,
: 從linux移植到arm上,到driver,firmware,GUI等等,
: 都可以一條龍全部搞定,
: 公司專案內容也可以說包山包海吧,
: 就我目前有經歷過的就有:
: USB storage、SD、LCD、touch panel、WIFI、ethernet等等,
: 以上也是外包一個人搞定。
: 2. 或者是說我應該只朝一個方向做深入發展呢?
: 看了104職位名稱:
: EX: 影像處理IC韌體設計工程師、藍芽韌體設計工程師、Nand Flash韌體設計,等等一堆
: 。
: 每個都是很專業領域,很擔心產業選下去,路越來越窄...
: 抱歉文長,然後再次謝謝大家!!
小弟是人在美國系統廠工作的韌體工程師,想分享一些經驗。
我個人認為做韌體主要三個能力:
1. C 語言。
語法或指標只是基本,給你一包 open source 你要能在短時間看懂
且進一步修改。進一步開發環境、toolchain、gdb、make 都是基
本功。
2. OS / architecture
對 OS 的觀念掌握度高嗎?paging、virtual memory、file system
等都會用到。常見的狀況是給你一個破破的文件要你寫個 driver,
找 ODM 沒用因為他們也不會,找原廠沒用因為沒給錢 XD。
ARM 的架構也要熟。kernel 出現 stack dump 如何去找到兇手等。
各種稀奇古怪的 bug 到底跟硬體有關或無關也要靠你釐清,還是有人
code 亂寫導致同步爛掉,各種狀況考驗你的基本功力。
3. 耐心與學習
在沒足夠的文件下要讓 HW 動起來,try & error 少不了。issue 太廣
,只要是底層都你的,自然必須一直學習。
做 porting 只是韌體工程師的一部分,更進一步是對 Linux kernel 與對
系統的掌握度。東西太多都是遇到 issue 以後邊學邊解。但只要基本功紮實
基本上都能學的起來也能做的出來。
因此個人建議將基礎功打好,從 C 的指標,簡單的 device 與 kernel
module 開始。良好的觀念可以讓你面對複雜的問題時有個頭緒。公司也要
慎選,儘量找老闆會認真面對 issue 並想解決的地方工作。小弟在台工作時,
共事過的ODM 韌體工程師,強的不是沒有,只是非常的少,擺爛的居多,還有
擺老的。畢竟對這些公司而言,賣的是硬體,軟體只是驗證硬體用的,
在這種地方公司自然不重視軟體,也學不到東西。
而美國的就業市場,小弟的觀察是韌體工程師相對藍海,大概太黑手想做的
人不多,機會也多。mobile app 或 front end 等反而競爭激烈。另外高薪
伴隨著高稅與其他狀況,這就是別的故事了,但可以確的定是做 10 年就退
休的人是鳳毛麟角。