韌體工程師的悲哀
我在公司是打雜的, 是MIS , 也是應用軟體工程師, 在軟體方面, 信奉的是軟體工程, 軟體方法論!
今天要談的就是”韌體工程師的悲哀”
一般來說公司的韌體工程師非常重要! 在台灣, 學韌體通常被要求懂硬體, 才能被認定很強,
寫韌體的工程師也以此為目標自我激勵, 希望成為公司裡面偉大且獨一無二, 公司不可或缺的人物, 韌體工程師一旦走人, 程式將可能面臨找不到人接手,下場悲慘,
我想說的是在上位者鮮少有人認為韌體工程師需要懂軟體工程, 甚至不知道啥叫做軟體工程.
我舉兩個對比例子解釋一下
(一)
有一個韌體工程師能力超強, 他用C語言寫了一個10000行的程式, 完成了某項產品.
後來公司要求能夠換成便宜的主要晶片, 這時候該韌體工程師就頭大了, 因為這10000行程式, 裡面有非常多的寫法直接對硬體存取, 導致修改非常困難, 只好告訴公司, 需要非常多的時間處理.
有一天該韌體工程師離職了, 公司高層跪拜數次挽留未果, 招了一個技術能力強的人來, 但看不懂前人的程式, 裡面有著太多硬體相關程式碼, 非常難以理解, 人就跑了, 或是花更多時間打掉重練. 公司最慘就只能放棄治療.
(二)
有一個軟體工程師不懂硬體, 在公司不諒解的情況下(無法一條龍甚麼都懂), 指定一位硬體工程師跟這軟體工程師搭配,最後也完成了某項產品.
後來公司發現, 這個軟體工程師, 設計了“硬體存取介面”, 也輔導硬體工程師撰寫該“硬體存取介面”.
對硬體工程師來說, 只要專注寫硬體存取介面, 其實也不難,寫得也開心.
而這個軟體工程師, 同時也開始撰寫韌體, 但是他的韌體中的所有程式碼, 都不直接存取硬體,不會有讓人看不懂的硬體獨特語法, 而且藉由存取硬體工程師寫出來的”硬體存取介面”, 讓人更能了解程式.
後來公司要求能夠換成便宜的主要晶片, 這時候該軟體工程師告訴硬體工程師, 再寫一份”硬體存取介面”, 經過適當的參數調整,就完成任務.
有一天該軟體工程師離職了,公司招了技術能力夠的人來上班, 看了看程式, 發現程式簡單易懂, 不會有艱澀難懂的硬體存取內容, 新人很快就上手, 而且新人開發一個能夠模擬”硬體存取介面”的機制, 在無硬體情況下, 就能直接透過連續整合(CI)方式測試, 大大優化, 也可解決”要有樣品才能測試, 且測試緩慢無效率的做法“.
韌體工程師的悲哀在於: 他們認為(或是被認為)甚麼都會(layout, HW, FW,SW), 就是最強.
而軟體工程師, 在這個世代, 環繞著資訊安全, 前端 ,雲端,軟體確效 , 物聯網, 還要稍懂通訊協定, 更要配合協同合作,認同測試為品質保證, 最後才能一起寫出程式,系統!
英雄單打獨鬥已不可行,就算可行, 也只能局限於小格局啊!
以下連結, 很唬爛, 會誤導工程師, 有些想法危險, 千萬不要用在現在這個世代!
舉個例子來說, 很多有名的開源案子, 誰能獨當一面獨立開發? 誰能1人抵20人?
開發人員該驕傲的是程式能大家一起討論,一起變強, 而不是在強調個人能獨立優化了3000行, 別人卻做不來, 並且沾沾自喜四處宣揚!
github最大的成就就是讓所有人也一起成長享有榮耀!