並不是每一位軟體工程師都會加入「純軟體」公司。在台灣,不僅許多傳統產業正著手數位轉型,半導體產業對於軟體工程師的需求也在增加。1更不用說現在各種裝置內都有晶片,甚至變成一部小電腦,這類產品要成功,軟硬整合的功夫是不可或缺的。然而「軟」「硬」團隊從工作方法到文化,其實都有不小的差異。
本文的目標是協助軟體工程師了解「軟硬整合」或「非純軟體」公司在文化或是運作方式上與「純軟體」組織有何不同。為此我們採訪了工程師 Ernest Chiang,他目前任職於國內專注於健身器材解決方案開發的 PAFERS 派仕科技,擔任產品與技術整合總監,過去曾經任職於台積電,擔任製程整合工程師,在各大技術社群也相當活躍,他對於拆解、整合各種事物充滿好奇心,個人部落格就叫做「拆解整合的旅人」。
這次的採訪會聚焦在 Ernest 如何拆解軟硬整合團隊的工作內容和運作方式,我們會從他的職涯經歷切入,看看軟硬整合的團隊會遇到哪些挑戰,請他特別以軟體人的角度來看這些問題,並且提供一些解決方案與建議,告訴軟體工程師該如何預期、適應這樣的團隊工作環境與文化。
假如你正準備轉職,加入非純軟體公司,Ernest 的經驗與意見會是很好的參考。為了方便讀者理解,我們請 Ernest 用他的話定義好「軟體」2「硬體」3「韌體」4「軟硬整合」5等幾個名詞放在文末,讀者可以點擊每個名詞右上角的數字去閱讀。
一開始是軟體人
Ernest 高中時期參加資訊社,儘管高三時申請了幾個資工系都沒錄取,還是有推甄上以前的清大核工系(現清大工程與系統科學系),所以高三下學期「很有空」,因為一次在電腦技術書籍的回函卡上表示有興趣成為作者,開始參與電腦書籍的出版工作,從此有讀不完的免費技術書籍。
此時的 Ernest 都還是軟體人吧,他陸續參與了包含 Mozilla 在內等多個開源組織和技術社群,除了七月底剛完成兩場在開源人年會的分享,現在也是 AWS Heroes 的一員。
台積電與 B2B 的世界
雖說學生時期的興趣是軟體,不過 Ernest 在大學畢業後的第一份工作是進入台積電「製程整合」部門。一個工廠裡有五個製程部門,有四個是半導體製程中的主要部分,這些部門的工程師大多不會面對客戶,而 Ernest 則是在「工程一部」(簡稱「工一」),對於其他四個部門的製程工作都要有所了解,而且需要面對客戶,因此身份有點像是工廠的代表。客戶會對工一提出問題後,Ernest 就會回到廠區向其他製程部門了解情況,再研擬解決方案。
他用烤披薩比喻:「這有點像是在做披薩,有時候可能是烤爐的溫度太高,整片焦掉,或是送進烤爐前調味就不對,然後進爐子又不小心跟其他披薩疊在一起,那烤出來當然就不好吃。製程整合部門在查問題的時候就是要同時處理這四個製程,所以常常學的東西就是怎麼分析問題。」「工一就有點像前面(談韌體工程師話題時)提到的海景第一排,我們既要服務客人,又要了解自家工廠發生什麼事情,對內對外等於要學兩套,以不同的角色說不同的語言去解釋給對方聽,而且要在不洩漏機密的情況下達成。」
在台積電工作期間,Ernest 從內部訓練課程學到許多框架和思考的工具,與他在現場的經驗相輔相成。這段經歷讓他了解到問題的造成通常不是單一原因,也學會避免單一觀點的謬誤,還學會了「翻譯」能力。
在第一年熟悉廠務之後,因為 Ernest 所在的單位是今日的「特殊製程」部門,相較於先進製程,特殊製程往往是成熟的技術,可提供不同的製程服務,例如音響類產品所需的高電壓(HV)製程。「要做這個的話會有台積電內部的研發單位進來,我們工一也會參與,我剛好是部門裡少數有走完開發、試產到量產階段的工程師,因此其實這些 RD 們也是我們的客戶,我們陪 RD 做出這條產線,然後再接客戶的單。」Ernest 表示有機會嘗試不同東西的經驗對他有很大的影響。
這類面對客戶的經驗,也讓 Ernest 認識到 B2B 的世界。半導體產業有分消費性電子、車用電子和軍規等等,以車用電子來說,一旦打入供應鏈,通常要確保某些料件可以長期(十到十五年)供貨;另一個例子是 ATM 螢幕,一般我們使用的電腦顯示器有各式各樣的規格和尺寸,寬螢幕、曲面等等,但是過去有很長一段時間 ATM 的螢幕規格都是固定的。
用軟體和雲端技術為產業升級
2008 年離開台積電之後,Ernest 先去學長姊的公司幫忙了幾年,但其實他很想利用軟體和雲端為一些產業升級,後來也經過介紹加入屬於健身器材產業的 PAFERS。「那時候不知道自己會是二號員工。」他笑著說,於是本來只是要進去做雲端跟軟體的 Ernest,變成必須要從硬體、韌體、通訊協定、app 再到雲端,把幾乎整個組織的架構規劃出來。如今十年過去,那張架構圖還掛在辦公室牆上,隱身在一個大白板之後。
PAFERS 提供的是健身器材的解決方案,他們的主要客戶是健身器材的品牌廠,而不是終端消費者。「有點像 PC 會講的『Intel Inside』。」Ernest 解釋,假如讀者有使用過跑步機或是飛輪機,上頭的電子錶錶頭(Fitness Console)有些以各種按鍵搭配很簡易、只能顯示數字或燈號的螢幕,有些則是按鈕比較少,搭配觸控螢幕的機種,這些產品都是 PAFERS 守備範圍的一部分。這塊電子錶錶頭必須要能夠控制健身器材的硬體,例如跑步機的速度、坡度等等,也需要支援各種傳輸或通訊協定如 USB 或藍牙等等,早期他們甚至還開發了 app,讓客戶可以記錄自己的運動或訓練狀況。
軟硬整合團隊遭遇的挑戰
Ernest 指出,軟體工程師加入非純軟體的公司或團隊,第一個面臨到的問題會跟「時間感」有關。這個時間感會以不同的樣貌出現在工作上的各種環節。
時間感不同
我們知道,硬體開發常常是瀑布式(waterfall)、一棒接著一棒。6Ernest 也提到,軟體工程師經常需要等待硬體那邊準備好才能開始工作。舉例來說,假如你要去「洗板子」(清洗印刷電路板,這裡的意思指的就是製造出印刷電路板),如果硬體團隊洗一次板子,確認規格、畫好 layout,洗完板子回來,一個週期快一點的話兩個月可以搞定,而這已經是很理想的狀況。「那請問這兩個月軟體人要做什麼?」Ernest 說。
當然有時候可以先拿著一塊板子就開始開發,只是很有可能等到完整的硬體送來、裝上去之後卻又發現東西拼不起來,比如某個馬達的控制指令可能會不一樣,或是各種規格上的問題,「軟體工程師會覺得我已經做好了,但硬體那邊供應的只要沒對上,又沒有前面提到海景第一排的韌體工程師幫忙接通,那麼軟體跟硬體就是各唱各的調。」而這還只是 Ernest 提到關於時間感的問題之一。
硬體的限制
PAFERS 所處的健身器材產業,自然是強調產品要安全、耐用和穩定,而健身器材上的「電腦」也不需要像 iPhone 或是 PC 那樣有強大的功能。Ernest 說,PAFERS 的產品有點像是把工業電腦,或是舊款的 iPad 裝到跑步機上,並且為了確保長期供貨,形成了許多限制條件,於是軟體人在開發時會有軟體版本的限制,使用的可能也不是最新、最酷的技術,這種開發的環境和節奏會讓軟體工程師覺得有點不適應。「怎麼其他軟體工程師都在寫比較新的 Android,我卻只能寫好幾代以前的版本?」講到這裡 Ernest 不忘模仿軟體人內心的糾結。
Ernest 舉例,早期開發者在為初代 Apple Watch 開發 app 時,也會發現諸多限制,跟他們已經習慣的 iPhone 很不一樣。通常這種開發用的電腦環境跟實際機器上有差異時,可以透過軟體模擬來控制,但有時比較資淺的開發者會忘記做這件事,導致交付之後客戶反應:「怎麼跑這麼慢?」
可能有些讀者聽過軟體工程師跟硬體工程師之間對彼此有點意見,例如軟體人覺得硬體人「笨」,硬體人覺得軟體人「懶」。對此 Ernest 則是認為,如同前面提到的,有時候是年代不同,或是認知不同又缺乏溝通,長期下來累積了許多不好的經驗。
「三代同堂」的代溝問題
由於 PAFERS 的業務特性,Ernest 常常需要和健身器材工廠的硬體工程師打交道,這些人的年齡通常較高,所以有時 Ernest 會用「阿伯」稱呼他們。他稱這個狀況是「三代同堂」:「在我們團隊,負責硬體的通常是四、五十歲的,我剛進來的時候則是三十歲上下,算是做 web 開發吧,年輕的則是二十幾歲,接觸 mobile app。」雖然這樣的情形不見得會出現在其他領域,但「世代差異」依舊是許多團隊需要克服的難題。
Ernest 與他的同事們帶著新的技術來到比較傳統的產業,除了時間感不同,很多觀念也不同,例如大家對於效率、預算的觀念一開始都不一樣。比如說硬體人會覺得軟體人的電腦怎麼那麼「貴」,但是軟體工程師聽到開模費用是以百萬計也總會覺得很驚人。
面對這些狀況,Ernest 認為溝通還是最好的方法,舉例來說,在工廠負責硬體的「阿伯」們比較喜歡講電話,或是用 LINE、用 WeChat 溝通,Ernest 就會先配合他們,再將內容整理成文件,下一次大家就一起用同一份文件來溝通。「在這個過程中,大家也會越來越清楚,到底對方在講一件事情時,到底是什麼意思。」
軟體人常常要幫忙善後
PAFERS 的電子錶錶頭最終要安裝到跑步機上,然而交貨之後出狀況的情形也不是沒有過,此時軟體人可能會成為整個產品支援的第一線。Ernest 舉例,假如最後查出來發現是硬體的關係,硬體人可能會說那下一版來改善,可是「這一版」的問題不會消失,這時軟體人可能就得出來擦屁股,試試看有無變通方法(workaround),有時候我們會看到產品的軟體更新是為了修正藍牙問題,就是類似的狀況。
「其實以查問題來說,軟體人的位置很好。」Ernest 指出,畢竟產品的資料是軟體人收回來的,或者有些 log 是先到雲端,數據團隊或軟體團隊會是第一個看到。「不過有些情況比較可怕,面對產品問題和消費者的不滿,要進 war room 的也是軟體團隊先進去。」「所以軟體人需要很強的心理素質,當然最好制度上必須要有些獎勵機制。」Ernest 談話時的語氣總是很輕鬆,然而這樣的話題軟體人聽起來大概會暗自緊張吧?
開放心態:軟體工程師也可以負責挑主機板
在 PAFERS,軟體工程師也會被派去挑產品的主機板。「這看起來比較不像是軟體工程師的專業?」我問。「我們現在做過很多次了,每次做完就會梳理出一個標準流程。第一次挑我們就會有第一版的 checklist(檢查清單),第二次就會有第二版,挑第三次就會有第三版,每次增加一些檢查的項目。像後來客人會說他要 RFID 感應,用來做會員卡登入,那我們就要選定具備擴充介面的主機板。」Ernest 認為只要團隊之間願意溝通,那即便是軟體工程師也能挑主機板。他們的態度就是「你先試著做做看,有問題隨時可以發問」。
解決方案
為了使「軟」「硬」團隊磨合順利,Ernest 認為團隊要有一本共用的字典,確保大家講的是同一件事情。例如軟體工程師通常使用 input 和 output 代表資料輸入、輸出;硬體工程師經常使用 Rx(Receive, Read)和 Tx(Transmit, Send)代表資料傳輸方向。Ernest 團隊會在白板和文件上繪製架構圖,讓所有人都理解資料的移動方向。
Ernest 也鼓勵團隊將溝通視覺化,疫情期間,團隊成員都會配給一部 iPad,練習畫架構圖。「我們有一個邏輯是:第一,你可以把自己的想法講出來給另一個人聽;第二,邊講邊畫圖,如果可以做到這樣,通常那個想法就可以寫成程式。」
整場訪問下來,Ernest 不斷強調溝通,他認為軟體人跟硬體人之間要盡量溝通,透明化地溝通,甚至過度溝通也沒關係。後來團隊還有導入一個規範,就是大家在講公事的時候不可以使用代名詞,這個靈感來自那種「不能講你、我、他」的遊戲,每當有同事在溝通時講到代名詞,就會有人跳出來說「他是誰?他沒有來。」我想這個遊戲應該很適合在組織內部需要進行跨團隊溝通時練習。
對於時間問題,假如軟體工程師在等待硬體,那就可以利用這段時間去學新的東西。Ernest 說他鼓勵團隊的工程師花兩成的時間去試試看不是寫程式的事情,例如去了解一下客戶的問題,或是隔壁部門在做什麼等等。
參與藍牙標準制定
這種「做做看不一樣的事」其精神不僅來自 Ernest 的經驗,團隊如果能把握住機會,更是可以累積寶貴的經驗值。
過去 iPhone 還是使用 30 針傳輸充電線(30-pin dock connector),PAFERS 就是去做蘋果 MFi 認證,研究如何接上這個 30 針的連接器來傳輸資料,後來藍牙 4.0 出來、iPhone 4S 開始支援 BLE(低功耗藍牙),有位西班牙客戶就向他們建議,既然先前 30 針連接器的年代已經設計了一套通訊標準了,要不要乾脆也去藍牙協會(Bluetooth SIG)提案?
Ernest 指出,這次提案經驗對他們的團隊溝通與整合有很大的幫助。「因為藍牙協會他們在訂標準的邏輯就是,一開始要先寫一個 FRD(Feature Requirement Document),這份文件不是只給技術人看的,而是需要讓各領域的人,例如行銷、法務,甚至是海關(他們要負責檢查)等,都看得懂才行。事實上藍牙協會是制定標準的組織,組織內有很多的法務,要負責確保這套標準與各國法律規範的合規機制。團隊因此需要跟許多國際大廠的人打交道,也學習到參與制定通訊標準的流程與背後的精神。7
「我覺得這是軟體人『舉手』的時候,你可以去擴充自己世界。」Ernest 說。
在商業上,PAFERS 參與制定標準也有許多好處。以往使用 30 針連接器的年代,他們服務客戶都要針對不同品牌去寫 app,以處理健身器材跟手機之間的資料傳輸。「如果我們接了 10 個品牌,就要做 10 個 app。」「可是後來有了藍牙,就可以請廠商根據這個標準,找當地廠商去寫 app,我們供應這一塊 Fitness Module(Ernest 指向桌上的電路板),這個電子錶錶頭就可以擴充、得到與手機連線的功能。」
Ernest 説,如果你的屬性是喜歡學習新事物,又喜歡動手做的,那加入軟硬整合的團隊,應該蠻有機會玩到新東西。以 PAFERS 來說,當年他們玩藍牙,最近可能開始玩 Matter。8
管理者的視角
站在管理者的角度,Ernest 認為解決軟體和硬體團隊之間的問題,除了前面提到的幾個方案之外,其他還是要回歸一般的管理問題來思考。至於如果團隊要招募新的軟體工程師,那麼他要判斷一名軟體工程師能否融入軟硬整合團隊,就會去看對方是否曾有過跨領域溝通的經驗,例如他雖然是在電子商務網站寫軟體,但如果有跟倉儲或物流的團隊打過交道,有實際合作解決問題的經驗,像這樣能夠進行跨領域、有效地溝通,就符合 Ernest 的標準。
最後,我問 Ernest 擅長軟硬整合的工程師,在職涯發展上是否具備獨特的優勢呢?他認為這類型的工程師多半喜歡動手做,有動手做就更能去驗證,這就好比一個寫 iOS app 的工程師,在 Mac 上開發完之後是否有安裝到不同型號的 iPhone 實際運作。「一旦動手做了,你就可以走第一性原則、基於事實的去研究、檢討,就像在台積電一樣。」Ernest 說。9
因為此類工程師熟悉軟體和硬體,Ernest 認為若能抱持「利他」的心態,很有機會做一些事讓軟、硬體兩邊的團隊不要那麼累。比如說他知道如果藉由軟體降低記憶體使用量,那麼硬體這邊的成本也許就可以降下來,對公司整體而言更有利。這類工程師往往能以多元的視角和開放心態去分析問題、進行交叉檢查。而隨著跨領域經驗累積,技術人如果做更多溝通、承擔更多責任、看事情的視角更全面,那麼可以往上走成為總監或技術長,或是跨出技術部門領導產品團隊,職涯的走法就有更多選擇。
Ernest 還舉了一個例子,這位工程師很喜歡主動去了解新的客訴,因為這樣可以知道真實發生的應用場景或客戶工程部門回報的問題,是否能對應到一些來自客戶對技術的要求,後來他也成為領導團隊的工程師。「因為資訊都會到他那邊,所有人又都願意跟他溝通,當然他的機會就比較大。」
- 【獨家披露:台積IT關鍵新能力1】為何台積電大舉招募SRE和DevOps? | iThome ↩︎
- 軟體工程師:「軟體的工程師的產出物是虛擬的,用手是摸不到的,工作的過程中接觸的是用來寫程式的電腦。或者你可以說他的任務是靠寫程式來完成。」 ↩︎
- 硬體工程師:「以我們(PAFERS)來看的話,通常會有一個切分點,如果你的工作不是軟體,最後產出物是硬體,但不涉及裝置內的 CPU 或 MCU(微控制器),那麽就算是硬體工程師。反過來說,那些跟 CPU 或 MPU 有關的還是軟體。」 ↩︎
- 韌體工程師:「這個職位很有趣,韌體屬於軟體,只是韌體工程師需要來自硬體的「定義」才寫得出(可順利運作的)軟體。什麼是來自硬體的定義?舉例來說,一個螢幕就算尺寸一樣,只要是不同廠牌的,或是同一個廠牌但是型號不同,那一定有什麼參數是不一樣的,這樣就會在硬體那一層就有東西不同。韌體工程師需要去釐清這些硬體上的不同,去寫一個中間層、抽象層,讓軟體工程師寫出的來東西會動。你也可以說韌體工程師是面海的景觀第一排,是第一個要面對硬體的軟體工程師。」「韌體工程師的產出有另一種特性,通常難以修改,韌體就像地基一樣,當房子蓋好之後,要改地基是很困難的事情。」 ↩︎
- 軟硬整合:「一樣從產出來回推,大家知道的 iPhone、Garmin 手錶,或是以前的 Pebble 手錶,還有我們家在做的(搭配觸控螢幕與作業系統的)健身器材,都是軟硬整合下的產物,裡頭同時有前面提到的軟體、硬體和韌體。對應到團隊工作上,就是不同的工程師之間必須要能很好地交流、合作,願意彼此溝通,同時各自按照自己的專業去實作。」「我們用吃的來比喻。這有點像我們去餐廳用餐,你可以把看得見、摸得著的當作是硬體,例如餐點、桌椅等等,其他的像是引導入座、服務生的態度,就算是軟體。一頓飯吃下來,除了餐點好吃之外,假如從服務、入座、點餐、用餐到離開,整個過程你都覺得很滿意,那就是軟硬整合做得很好,就是『體驗很好』。今天假如主廚雖然把餐點做得很好吃,但器皿與擺盤都很隨便,或是上菜的時間抓得不好,都會影響用餐體驗。」「這種『體驗很好』的例子是 Amazon 的 Kindle 產品,早期的 Kindle 在推出時就具備 3G 連線能力,消費者購買 Kindle 電子書之後透過 Amazon Whispernet 將書籍傳送到 Kindle 中,使用者不需要先喚醒裝置、尋找 Wi-Fi、連線好之後才按下同步⋯⋯這種好的體驗就是有把軟硬整合做好。」 ↩︎
- 一句話惹怒硬體人!談加班文化 ↩︎
- Fitness Machine Service | Bluetooth® Technology Website ↩︎
- Matter (standard) – Wikipedia ↩︎
- 或是我們在另一篇文章提到的 Netflix,也特別強調基於事實的討論。 ↩︎