2016年10月6日 星期四

為什麼硬體公司軟體做不起來?

最近與一位資深硬體 RD 聊天(有 20 年以上設計經驗),言談之中他不斷跟我強調很多 IPC 廠想入門 SCADA/HMI 軟體,但不知道怎麼入門 blah~blah~

小弟在工控界搞了 7  年 HMI 軟體,3 年 Remote IO,也算略有經驗。現在就從個人角度來分析,為何硬體公司要入門軟體這麼難?

硬體公司不懂得如何帶領軟體開發團隊

以小弟在幸福企業 M 公司的經驗,做一個產品,時程最多一季至半年,一位 hardware RD 搭配一位 firmware RD,最多再加一個 software RD 幫忙寫 PC Tool,這大概就是全部了。

但今天如果開發一個中大型規模的軟體,就以剛剛提到的 SCADA/HMI 來說,國外的軟體人力配置是 20 個 software RD,國內 cost down 的結果也至少要 7-8 人。

這馬上就會產生很多問題,讓我們來看看

為什麼需要這麼多人?


Steve Wozniak 當年一個人就可以打造 Apple II 全部軟硬體,但他也坦承現在的電腦軟硬件太過複雜,非一人所能掌握。但很多硬體背景出身的人可不這麼想,他們除了會設計硬體外,也會寫程式驗證,更別說單晶片這種東西幾乎是全包(可能除了機構外),所以他們會覺得為什麼要這麼多人?不要騙我我也會寫程式喔!

以小弟手上正在維護的產品來說,裡面用到了 4 種程式語言(SQL、C++、JavaScript、Lua),PC/Emabedded 2 個版本完整編譯要超過 1 小時以上,相較於單晶片編譯只要數秒,可以快速不斷用 ROM Emulator 上傳重試,根本是完全不同的世界,不是當事人很難想像。所以才發展出 daily build 每日自動建置,避免昂貴 RD 人力用於這種重複性工作。

小弟當年唸書時,曾經有老師開了一門課叫做「大型軟體個案研究」,試圖帶大家分析 Apache Web Server,不過很可惜的是這門課沒開成,但也可以看出大型軟體的複雜度已經到達需要開課研究的程度,絕非一人可以輕易掌握。如果您覺得自己天縱英才,可以試著在不借助 Source Insight 這種軟體的協助下看能讀懂這些流行的大型軟體幾成。

硬體公司抓不住軟體潮流


就算 software 也很少人了解到現在是讀程式的技能比寫程式重要,這個時代速度就是一切,沒有人不是站在巨人的肩膀上,引用別人的成果,現在寫程式也比過去更依賴工具(前面提到的 21 世紀 C 語言這本書就可以證明)。

有件事實很多人不知道,其實台灣很多公司都有 DIY OS 過,如 M 公司、x技、x格...但這些公司的 DIY OS 可以說全部淡出,因為相較於 Linux 這個由全世界一流高手打造,外加百萬人驗證過的 OS,一間公司能有多少客戶來幫你驗證?外加不斷暴漲的各種 Layer 2,3,4 network protocols...,要養多少 RD 才能補齊?所以現在這些台灣公司,要不是直接用 Linux,就是直接移植 Linux 上的各式模組來用。

換個角度想,做硬體的人會放棄現成的積體電路、SoC,改用電晶體來兜產品嗎?

硬體公司不懂軟體開發流程


在純軟體不懂 Version Control System、Bug Tracking System、Daily Build System...會被人笑沒受過教育。但硬體公司卻是晚了很多年才心不甘情不願的導入了裡面幾樣最基本的東西。

如果說對工具已經很陌生,那就更不說更抽象的規格設計、需求訪談...乃至於之前流行的 eXtreme Programming 到現今的 Scrum 根本是外星人的語言。更何況裡面很多工作根本不像在寫程式,你們這些 software RD 沒在打字是不是在混啊!

硬體公司唯一的施力點大概就只有 UI,但這也很可笑,因為一堆硬體公司對 UI 的要求全憑個人好惡,好一點的會套入企業形象加以配色,極少數是從使用者經驗出發,像筆者這種還會去閱讀專著的大概純屬鳳毛麟角了。所以硬體公司也不用怪怎麼大家都往 Kernel、Device Driver 這種領域去鑽,沒有人唸個 CS 碩士學位結果在那邊搞對齊 pixel 跟用 PhotoShop 去背,那幹麼不去巨匠算了!

硬體公司無法掌握軟體品質


這是壓死駱駝的最後一根稻草,硬體公司沒有能力驗證軟體的可靠度,不知道如何去做單元測試、回歸測試、邊界測試、壓力測試...硬體公司會做的測試大概就是人肉測試,用工人智慧進行測試,用人力代替 CPU 運算能力。

但軟體測試發展至今,已經發展成一門專業,絕非某些外行人想的是這些做測試的是學經歷比較差、當不上 RD 才做測試。做測試也是要寫程式的!以小弟待過的 M 公司來說,很多資深測試工程師是資深 RD 轉過來的,他們是用程式、自動化的方式來測試 RD 丟過來的東西,不是外行人想的,這邊點一點、那邊按一按...喔,當掉了!這種土方法來測試~


硬體公司沒有人想賠上官位


硬體公司不但不知道如何管理軟體團隊與開發流程,也不知道如何行銷軟體、教育訓練(非常花成本),花了多於 hardware RD 數倍的人力(薪水)後沒有帶來立即性的營收會有什麼下場呢?負責主管好一點是考績變差,慘一點就是請你走人了。

前面提到過,台灣硬體公司開發產品的習慣是 3 個月到一季最多半年,然後就要出貨收錢了。大型軟體不但無法這樣做,半年後可能才略具雛型,可能還有不少 bug...那高層會怎想呢?股東會怎麼想呢?有錢的阿伯們才不會管你軟體怎麼開發的,他們會覺得這種生意不能做,軟體還是給老外玩好了,國情不同!

硬體公司有這種思維早已其來有自,因為台灣電子業的成功秘訣是近親繁殖+帶槍投靠,很多大老闆們之所以敢出來創業,早已有口袋名單內的客戶支持,他想要拿出來創業的產品也早已 ready(怎麼 ready 的大家自己猜),軟體這種幹法簡直是... like 87,在這種淺碟、急躁的氛圍中,硬體公司做軟體就像落在水泥地上的種子,最多只能長出幾顆雜草罷了~科科

29 則留言:

  1. 我們以前軟硬體都是一個人包了,寫程式螢幕還是15"的,所以現在視力矯正後還是只有0.5還帶散光。

    回覆刪除
    回覆
    1. 小弟也吃光n幾罐葉黃素跟B群了...Orz

      刪除
  2. 認同軟硬體開發有其不同的思維,所以軟體從業人員也應當小心從軟體看世界。

    貴公司目前的晶片規模,sub-system的合成時間,動輒十小時起跳,強烈懷疑你所說的"單晶片編譯只要數秒",其實只是將HW RD交給你的bit file寫入FPGA的時間。但是最後看到"3個月到一季"的時間描述後,真心覺得我認真了⋯

    回覆刪除
    回覆
    1. 謝謝指教

      不巧小弟也在豬屎屋打混過一陣子,您覺得小弟講的硬體公司有包含IC設計嗎?當然是指一般系統廠的思維,如果系統廠做軟體像IC一樣一旦tapeout之後發現bug是立刻損失幾百萬上千萬,想必也不敢便宜行事了,以前聽同事講IC設計軟體加一加要上億,那當然得繃緊神經

      我到某公司剛上任就要我一個月做出軟體功能,不是三個月,不是一季喔...後來認識研x出來的表示,做工控的去做3C幾乎都不適應,因為3C時間壓縮的更厲害,當然我講的無法包括全台灣的公司,前面也講了是個人觀點,希望優質的公司出來反駁一下,台灣還是有希望的

      刪除
    2. 最近剛從皮卡丘的BIOS離開....後來在找工作的時候都會問一個Projcet 的時程大概多長?歸納出3~6個月的基本上就是3C;1~2年的就是企業級server;2~3年就是工控。我認為消費性電子時程那麼短不是沒有原因的,罪魁禍首就是摩爾定律。摩爾定律說18個月就要相同效能價格減半,扣掉IC 廠的研發時間,系統廠所剩的時間也就不多了。加上消費端一直追求要最新最快,系統廠只能不斷壓縮時程...。

      至於軟體開發就沒有類似摩爾定律的東西,你可以一年推出一版重大修正,三年推出一個新版本,這是隨軟體公司性質而定。

      不過最近摩爾定律有放緩的趨勢,系統廠的單也減少了,養不起那麼多人,越來越多人被砍,聰明的早就準備好要跳了。當摩爾定律失效的那一天,做純硬體的可能就要倒一片了。不過企業端的資料中心及消費端的通訊設備將會是硬體設備主要戰場,這兩個領域跟摩爾定律比較不相關,所以或許硬體廠就有機會轉型成軟硬體整合的解決方案提供者,不過還是要看主事者的態度啦.....。

      刪除
    3. project的時程不代表研發可以拖那麼久,2-3年有時是因驗證週期特長,現在聽到最短也要驗證半年,這半年是從你做完開始算,這半年除了對方測出什麼問題你要趕快解決,公司也不會讓你只服務這個客人,一定有很多案子同時在進行...

      刪除
    4. 所以硬體開發本質上就很難像軟體開發那樣,至少很多驗證都無法樣軟體那樣可以自動化。最近公司才試著要導入git + CI,建立自動化測試,因為之前出過太多包,被客戶要求不得不推。然後公司大部分人都是EE、機械出身,對軟體界的進展也不太知道,推動起來還是有些難度。

      刪除
  3. 這話我幾年前演講也說過,幾年後還是不變,台灣硬體公司轉型成軟體公司,還是沒什麼好案例,因為思路不對。你的技術背景在SCADA跟控制,對於我團隊已建立的工業雲可合作,有興趣就約聊聊

    回覆刪除
  4. 我國業界也不是所有硬體都能作,像消費者市場的印表機這種全球供貨的機構產品它的測試也必須非常有系統,否則沒辦法在有限時程內確保可靠度⋯
    全世界沒在睡覺的時候,我們不可能事事拿第一。如何找到自己的路,如何和別人合作,是業者投資人必須學習的⋯

    回覆刪除
    回覆
    1. 您說的沒錯,合作是最大的問題,您提的印表機(先不談印表機市場的衰退)就需要電子,機械,軟體三方合作,曾聽聞小弟前輩Chamber大師開發掃描器的過程,才知道開發一個機電整合的產品有多難,沒有同時具備電子與機械背景根本無法做出堪用的產品~

      刪除
  5. 其實還是台灣企業大多"短視"的問題,很多產業都有這個問題,另外就是沉溺在過去的成功,看看我們的企業,還有多少人力在做電腦應該做的事,也難怪會有紅色供應鏈的問題,其實問題還是在自己.

    回覆刪除
    回覆
    1. 所以很多台灣企業主投資一堆房地產XDDD

      有句玩笑話是這麼講的「美國發明,台灣製造,韓國抄襲,中國做到沒錢賺」,他們有時出手就是你的成本價,你用紙糊一糊交差都玩不贏他

      刪除
  6. 我這邊也是搞工控 只知道寫程式 一路碰碰撞撞 也沒受過專業訓練 只能靠個人累積 目前第6年了 對於往後要怎麼走實在是看不清楚 其實台灣根本老闆就是在排擠軟體從業人員吧

    回覆刪除
    回覆
    1. 個人經驗是目前IC設計公司蠻重視軟體的,某次參加研討會,才知道MTK原來還有養compiler人才,IC設計公司人力素質跟做事態度也是我見過最優的

      工控就要看運氣,我待過的只有一間非常注重開發流程與後續測試,其他嘛...

      刪除
  7. 上面留言的誰年薪有100以上………好奇

    回覆刪除
  8. 跨領域整合絕對是需要賭上前程,台灣算了吧~

    回覆刪除
    回覆
    1. 套一句歌詞
      「我拿青春賭明天 你用真情換此生」

      刪除
  9. 完了~我好像被點到名了。

    我是念航空機械的~但後來也做韌體,當然也待超過十年的豬屎屋。

    現在做的還是機械類的控制產品。我就是那一種覺得養不起軟體工程師,

    卻又需要軟體工具,又明明搞機械控制的東西,搞電子電路的機會也不多。

    所以呢?簡單用C 語言寫寫MFC ,又自己畫電路圖,Layout PCB...

    都被朋友開玩笑說:大概只剩下沒多少人生歲月還可以去學FPGA 而已。

    我承認這都不是很健康的產業人才運作方式,但是又何奈呢?

    有多少人可以像Steve Wozniak 一生只要做一次就夠了?

    我只能由衷的希望:這些曾經是以工程出身的老闆金主們,能夠用更健康的

    產業人才發展角度來看人才運用,否則呢?就算開放人才進來又怎樣?

    腦袋思維不改,國際一流人才來這裡,也只是被糟蹋而已,人家回國後還會做

    負面宣傳。

    大家加油吧。

    回覆刪除
    回覆
    1. Chamber 大哥
      您好,好久不見!
      超過100,我舉手!但這卻不是一件多好的事情,如果有人8小時年收72,那我可就用命換得100!有時想想不一定值呀。

      在下工作經驗過小、中、大企業,從基層到管理層,從電子、資訊、電機、機械、醫療電子,會的很多,但卻沒有專精,所幸現在的工具越來越方便,可讓我們專注在要處理或目標。
      對於ChamberPlus & Goodspeede觀點很認同,但我想說的是,台灣軟體公司(與硬體有整合的公司),其實也走得很辛苦。

      一個硬體不懂軟體的眉角、一個軟體不懂硬體的苦心;各自要去培養自己的團隊,都需要有破釜沉舟的決心、包容與了解。
      那就不要更談一個系統要做好,還需要其他專業領域的人一起配合。
      那真是一山過還有一山登
      最後還是要領頭羊真心願意想改變,不然遇上了財務就都縮回去了!

      今年真好,在年末還能看到Chamber大哥在這說說話!
      這幾天再打電話跟您拜拜碼頭唷!

      powerbhy/海峰 敬上

      刪除
    2. Powerbhy 海峰:

      真的好久不見了,後來在茫茫網海中一直找不到你的足跡。

      就連去叩叩蟲那也找不到你。甚念。

      我常用的部落格是在:

      http://chamberplus.blogspot.tw/

      記得來個訊息吧。

      Chamber

      刪除
  10. 幸福企業M社雖然有很多瞎的人力配置與KPI要求,
    但真的是我待過目前最著地的IPC了..., 有些根本停在買空賣空的狀態

    回覆刪除
    回覆
    1. R大...有機會能與你們配合後製程的供應商嗎?
      小弟是服務散熱片&面板類的....
      網址www.ginyan.com.tw

      刪除