從文章來看,你應該是在系統廠的軟體/韌體部門工作
我就以這個假設回文
我想,你所缺的,並非是不是有做軟體 RD 的天份
而是,你以前未曾經歷過系統層級的大型震撼教育
職場與學校最大的不同點於,以軟體面來說,學校的作業或專題
可能只要寫個幾百行上千行的程式就可以交差
但進入業界,隨隨便便一個子系統的程式碼行數可能就多一個或兩個零以上
初入行的新人會適應不良其實是在大家預期範圍中
這麼多行程式碼,也不會是只有一個人寫出來的,必定是多人合作下的產出
不會只有自己一個人獨幹,在這樣的狀況下,重點在於,如何和別人一起 co-work
學會如何讀懂別人的程式碼算是待磨練的技能
因為每個人的思維邏輯與寫作習慣怪癖等等都不會一樣
所以在讀懂別人程式碼過程中,需要花心神力氣去抓出作者的模式
如果一個系統有好幾個人參與過,你也要想辦法抓出各種模式來
而這些是非常吃經驗的,只有浸在裡頭的時間夠久
看過許許多多不同類的的 code,才會稍有心得如何在相對較短的時間內看出來
你會有這樣的焦慮,只能說你在這裡頭蹲得還不夠久
還沒辦法像老鳥一樣可以比較輕鬆駕馭雜亂無章的程式碼
----------
至於你說想要轉職硬體方面的 RD,我是覺得沒什麼不可以
只是要先了解一個狀況,就是硬體 RD 並不比軟體 RD 輕鬆
你如果在系統廠工作,硬體研發的工作內容大概就著重在電路板設計這個環節。
這個工作與軟體相比,只會更麻煩。
在這個崗位上,要處理以下面向的問題:
1. 電路設計本身,包含畫電路圖 (schematic),與電路板繞線 (layout)
2. 與機構工程師之間的配合,包含產品周邊各式各樣的接孔與按鈕的海岸線配置
電路板的幾何形狀與大小。有時剛好某個零件與外骰支持架發生空間衝突,
因為要移動零件在電路板內的位置而更改設計。
若允許的面積太小又要塞進那麼多 IC 與其它零件,真讓人頭腦爆炸。
3. 高速電路的處理。如果你們是以 SoC 為基底做產品,那你大概會需要處理
幾個很棘手的東西,諸如 DDR bus, USB bus, 若產品帶有螢幕還要處理 LVDS bus
若做影音相關產品還可能要處理 HDMI bus。由於這些都屬高速訊號
所以在 layout 時,要調整線寬控制阻抗 (阻抗值也與生產工廠所用的PCB板材相關)
要調整走線長度讓其 equal delay。最麻煩的還在於出問題時,因為訊號頻率太高
無法使用一般普通的示波器抓問題,還要想辦法調用專用的儀器。
4. Debug,即使學校學過數位邏輯,但在電路設計上用到數位邏輯類的問題相對不多
因為現在主要的數位功能已被大型 IC 所包含 (是 IC design house 的工作)
不像 20 年前那時數位功能是用一堆 74 系列的 IC 一個一個拼湊出來。
反而會花很多力氣處理偏類比的問題,諸如 3.3V <-> 5V 的準位轉換
DC-DC 電源轉換電路,開啟某顆電晶體造成瞬間電流變化太大導致瞬間電源壓降
導致系統不明原因重開機,pull up 電阻太大導致訊號上升太慢以致讀取錯誤資料
諸多有的沒有的疑難雜症要去處理,也是相當吃經驗的部分
5. 散熱處理。當使用 SoC、功率放大器、或電源電路時,因所耗功率較高
設計電路必須考量散熱因素,甚至直接在電路板上預留 thermal path。
6. 與軟體/韌體部門間的協調,尤其當系統出現bug無法確認倒底是硬體還是軟體問題
這時一定是兩邊互踢皮球,此時要有兩邊都懂的人跳下來處理分析。
7. 與工廠生產部門間的協調。你所設計的電路所使用的料件,有可能因為種種因素
包含料件成本,備料lead time,工廠製程上的難易度,與上游廠商採購的麻吉程度
打消庫存呆料等等的眾多因素,迫使你要變更硬體設計以滿足眾多需求。
8. 安規認証。諸如美國的 FCC 或歐盟的 CE (包含電磁波的規範)
無線通訊類的的安規,電源類型的安規,環保安規 (RoHS 之類的) 等等。
比如在 EMI 預掃時,發現某個頻率的電磁波太高以致無法通過安規
就要使出對應的 EMI 手段 (比如加 bead 加 choke 加 shielding 等等)
甚至必要時得變更電路設計或加上 spreading spectrum 機制以避掉這個問題
9. 量產階段出包時的緊急 rework 處置。雖然量產階段出包的傷害不小應儘量避免
但難免偶爾會發生類似的莫非定律。這時得要在短時間內應變出一個在成本上
可接受的 rework 方案以降低這類事件的衝擊。
10. 其它一時三刻沒有想到的部分......
一個系統廠的硬體工程師的工作內容要處理這麼多面向的問題
雖然不會每件事都全程跳下去做,但一但有狀況時,硬體工程師都要親自跳下去處理
看完這些後,我不曉得您還是否還認為,硬體工程師的工作比韌體輕鬆的想法呢?
----------
如果認為軟體/韌體的工作很辛苦,也意識到硬體類的工作也不輕鬆
那就要思考一件更重要的事:倒底自己的個性是否適任 RD 的工作
有很多技術類型的工作不會像 RD 那麼硬
諸如 FAE/QA/QC 都是可以考慮的方向
只是這些工作所需要的技能,不是單單只有技術面向
更需要的是跨部門跨公司之間的溝通協調
因為人與人間的接觸比例加重,反而有些人比較不適應這樣的工作型態
比較喜歡 RD 這種類型的硬工作。
如果自己比較喜歡與人接觸,又不想荒廢技術,FAE/QA/QC 是可以考慮的方向
但如果實在是不喜歡與人接觸,就要好好想想如何去適應 RD 類型的硬工作
※ 引述《cute9527 (牛B)》之銘言:
: ※ [本文轉錄自 Tech_Job 看板 #1HRNWcH9 ]
: 作者: cute9527 (牛B) 看板: Tech_Job
: 標題: 軟硬體都略懂 該怎麼選
: 時間: Wed Apr 17 00:11:16 2013
: 先說說我的背景 不是甚麼很會念書的人
: 高職是念電子科的 碰電路的
: 科大是念資工 (愛玩 沒學到甚麼) 大4拚了一年 考了間私立普大電子研究所
: 研究所 研究的是實作型 使用嵌入式系統配上電路 做出一些應用
: 大多都是在改善電路 自己layout
: 畢業後找工作 與工作後才發現 研究所做的像是大學生做好幾個專題....
: 好像沒甚麼難度
: 現在
: 工作快一年了 是在某系統廠做韌體RD 負責WiFi driver
: wifi 相關的code 還蠻龐大的 以前沒有trace過這麼大系統的code
: 蠻吃力的 看得很沒feel 常常看不懂他這樣寫到底是甚麼含意
: 感覺好像自己邏輯也不太好 常常trace 都串不太起來
: 最近一直在想 是不是 我邏輯不好? 系統太大? 還是這是過渡期?
: 想想 是不是應該做硬體 比較不會這麼吃力?
: 怎樣的人才適合做硬體? 怎樣的人才適合做軟體?
: 我這種都略懂又都不懂的人 又該怎麼選?
: 先謝過各位前輩了~~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.84.29
※ 編輯: mgtsai 來自: 122.116.84.29 (04/17 17:08)
推
04/20 23:07, , 1F
04/20 23:07, 1F
推
06/29 18:57, , 2F
06/29 18:57, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):