正式到 X BU 報到的第一週,我做了一件每個韌體工程師到新單位都會做的事——把 S 裝置接上 console 線,開機,看 kernel log 從頭跑一遍。
這是我的習慣。就像搬進新家第一件事不是擺家具而是檢查水電一樣,韌體工程師進新團隊的第一步,是先搞清楚這台機器活著的時候長什麼樣子。serial console 吐出來的訊息很正常。U-Boot 跑完、kernel 起來、init script 一條一條執行,最後停在 login prompt。嵌入式 Linux,標準流程,沒什麼意外。
我看了一下 ifconfig,裝置拿到了 IP。
然後我做了第二件每個工程師都會做的事——打開瀏覽器,輸入裝置的 IP。
頁面一片空白。
不是那種「載入中」的空白,也不是 404 Not Found。是純粹的、絕對的、什麼都沒有。瀏覽器轉了幾秒圈圈之後,冷冰冰地吐出一行字:
無法連線到這個網站
我愣了一下。
重新確認 IP——沒打錯。ping 一下——通的。telnet port 80——connection refused。
這台裝置沒有開 HTTP server。
一台企業級網路設備。一台要賣給 MIS 部門、讓人家拿來管理網路的裝置。沒有 Web 介面。
這就好比你買了一台冷氣,結果它沒有遙控器,你要設定溫度的話——請到我們公司來,用我們專屬的那台電腦,才能幫你調。
我轉頭問坐在隔壁的小張:「S 裝置的 Web UI 在哪?我怎麼連不上?」
小張那時候剛從茶水間回來,手上端著一杯便利商店的美式咖啡,聽到我的問題,露出一種「你終於發現了」的表情。
「沒有,」他說,語氣平靜得像在說今天天氣不錯,「S 裝置沒有 Web 介面。」
「沒有?」
「沒有。要設定的話,得用阿哲寫的 Windows Tool。」
他從桌上翻出一條 USB 隨身碟,上面用標籤機貼了一行字:S Device Config Tool v2.7。
「裝在 Windows 上,開啟之後它會用 TCP 連到裝置的一個 proprietary port,你在軟體上勾一勾、填一填,它就把設定寫進去了。」
「proprietary port?」
「對,阿哲自己定義的協定。port 多少我忘了,反正不是標準的東西。封包格式也是他自己搞的,沒有文件,或者說,文件在他腦子裡。」
我盯著那條隨身碟看了好幾秒。
在嵌入式系統的世界裡,Web UI 幾乎是標配。不管你是做路由器、交換器、NAS、還是什麼奇奇怪怪的 IoT 設備,只要這台機器有 IP,使用者的第一反應就是打開瀏覽器、輸入 IP、看到管理頁面。這不是什麼高深技術——嵌入式 HTTP server 的方案一大堆,lighttpd、mini_httpd、甚至自己用 socket 刻一個最陽春的都行。
但 S 裝置選擇了不做。
而且不是「來不及做」或「技術上做不到」那種不做。
是「故意不做」。
真相是小張告訴我的。
不是在辦公室裡告訴我的——在辦公室裡,有些話不能說。他帶我去園區旁邊一家賣乾麵的小攤子。中午十二點半,攤子前面排了一條竹科工程師的隊伍,每個人都低頭看手機,沉默地往前挪動,像一條產線上的零件。
「你知道為什麼 S 裝置只有 Windows Tool 沒有 Web UI 嗎?」小張夾了一塊豆干,壓低聲音說。
「技術債?」我猜。
「權力債。」
我筷子停了。
「阿哲寫那個 Windows Tool 的時候,就是故意不做 Web 的,」小張說,「你想想看——如果有 Web UI,任何人拿到 IP 就能連進去改設定。業務可以自己 demo、客戶可以自己操作、新來的工程師可以自己摸。大家都有鑰匙,誰還需要看門的?」
他喝了一口湯,繼續說。
「但如果只有 Windows Tool 呢?那個 Tool 只有阿哲有完整版本。你要設定裝置,得找阿哲。你要 demo 給客戶看,得找阿哲。你要跑測試,得找阿哲。客戶那邊出了問題需要改設定,還是得找阿哲。」
「所以——」
「所以所有的路都經過他。用 Windows Tool,所有人都得來拜碼頭。用 Web UI,就變成大家都有鑰匙。你覺得他會選哪一個?」
我嚼著乾麵,一時之間不知道該佩服還是該憤怒。
從純技術的角度來看,阿哲的 Windows Tool 其實做得不差。自訂 TCP 協定、binary payload、CRC 校驗、重送機制,該有的都有。他把裝置的每一個設定項目都包進了自己的封包格式裡,GUI 上用 tab 分類,看起來整整齊齊。
但從產品的角度來看,這東西完全是反人類的。
你要設定一台 S 裝置,首先你得有一台 Windows 電腦。然後你得裝阿哲的 Tool。然後你得知道裝置的 IP——但因為沒有 Web UI,你沒辦法用最直覺的方式去找到它,你得在 Tool 裡面做 broadcast scan。然後你要輸入阿哲設的預設帳密。然後你才能開始動手。
每一步都是一道門。而每一道門的鑰匙,都在阿哲手上。
這是我進 X BU 之後學到的第一課。
跟技術無關。跟程式碼無關。
跟人有關。
那天下午回到辦公室,我特意觀察了一下阿哲。
他的座位在辦公區的角落,但那個角落的人流量出奇地高。下午兩點到五點之間,我看到至少四個人走過去找他——一個業務問 demo 怎麼設定、一個 QA 問測試環境怎麼連、一個新來的工程師問 Tool 裝不起來怎麼辦、還有一個我不認識的人拿著一台 S 裝置問為什麼設定寫不進去。
阿哲每次都是同一個反應:先微微嘆一口氣,然後用一種「你們怎麼連這個都不會」的耐心語氣,慢慢地講解。有時候他會直接拿過對方的筆電操作,那個動作很自然,自然到像是他本來就應該坐在那個位子上,而所有人都應該排隊來找他。
我突然明白了一件事。
阿哲不是不願意做 Web UI。他是太清楚 Web UI 做出來之後會發生什麼。
他花了兩年時間,用一個 Windows Tool 建立起一個以他為中心的資訊節點。每個人要用裝置,都得經過他。每個人遇到問題,都得來問他。他不需要什麼響亮的職稱——他的不可替代性,就寫在那個沒有文件的 proprietary protocol 裡面。
如果有了 Web UI,這一切就歸零了。
任何人打開瀏覽器就能操作。不需要裝 Tool,不需要問阿哲,不需要排隊等在他座位旁邊。
他從「唯一的看門人」變成「眾多工程師之一」。
那天晚上開車回竹北的路上,我在國一上塞車塞了四十分鐘。收音機在放什麼我沒在聽,腦子裡一直轉著小張的那句話——
「用 Windows Tool,所有人都得來拜碼頭。用 Web UI,就變成大家都有鑰匙。」
我以前以為,工程師的世界是純粹的。你寫 code,code 能不能跑就是能不能跑,沒有灰色地帶。compiler 不會因為你跟它關係好就幫你通過 syntax error。CPU 不會因為你請它吃飯就多給你幾個 clock cycle。
但阿哲讓我看到了另一個面向。
在他的世界裡,技術不是目的,是手段。寫程式不是為了解決問題,是為了確保問題只有他能解決。
這不叫厲害。
這叫佈局。
而我在 S 公司待了四年,竟然從來沒看過這種東西。
也許是因為在韌體部門的時候,我面對的敵人只有 kernel panic 和 memory leak。那些敵人雖然討厭,但至少是公平的——它們不會搞政治。
但人會。
許主任大概看出了我那幾天的表情不太對。
週三下午他經過我座位的時候停了一下,問:「怎麼了?看起來像吃到壞掉的便當。」
「沒事,」我說,「只是發現 S 裝置沒有 Web 介面,有點驚訝。」
許主任推了一下眼鏡,露出一種「這件事我早就知道但不方便先跟你講」的微笑。
「技術上的問題,都能解決,」他說,壓低了聲音,「但解決之前,你得先搞清楚那個問題為什麼存在。」
「我大概搞清楚了。」
「那你就比大部分人快。」他拍了拍我的肩膀,走了。
我看著他的背影,突然有一種感覺——許主任把我拉進 X BU,也許不只是因為我會寫韌體。
也許是因為他需要一個還沒被這裡的遊戲規則馴化的人。
一個還會因為「沒有 Web 介面」而驚訝的人。
這到底是信任,還是算計?
在竹科,這兩個字有時候長得一模一樣。
字數:約 2600 字














