第十八章〈最後拒絕〉
台版 v1
地點:鏡界・翠鏡島(霧谷科技園) 時間:1025年1月 主角:林昭明
Calendar 上出現了一個 invite。
一月某天。下午。林昭明坐在 hot-desk。灰岩模式的日子裡,每一天都差不多——上班,坐下,做那些分配給他的事(越來越少),開那些 叫他開的會(越來越沒什麼好說),然後走。
他已經不反應了。不主動提問。不爭論。不解釋。做完就走。這個狀態讓他們沒東西可以用——因為灰岩不產出材料。沒有情緒可以記錄成「態度問題」。沒有反駁可以記錄成「抗拒管理」。他的存在變成一塊沒有質地的石頭。你推不動他,但你也拿不到任何東西。
PIP 十月底 deadline 過了。結論是「未能達到改善目標」。他預料到了。但之後的動作——預期中的即時終止——沒有來。
十一月。有人死了。
十二月。KTV。
一月。他還在。
然後 Calendar 上出現了那個 invite。
Subject:「下世代核心架構——銜接評估啟動會」
他看著那行字。
下世代核心架構。
他知道這個 project。
整個行業都知道。下一代運算核心的架構會由一個全新的供應商主導。不是改良。是換血。舊的核心架構跑了十幾年,整個生態系統——韌體、驅動、接口協議、測試流程——全部圍著它轉。業界的人早就知道遲早要切換。問題不是「會不會換」。是「換的時候會死多少東西」。
林昭明知道得更多。
因為他花了三年追蹤的那個問題——UIP 時脈缺陷——根源就在舊架構的時脈設計。CLK 的速度、並行處理的方式、系統管理匯流排的通訊協議——全部和新架構不同。
舊架構底下,UIP 時脈缺陷已經存在。他見過。他寫過報告。他的報告變成附錄 B。問題被 workaround 撐住。沒有人 fix root cause。因為 fix root cause 等於承認 root cause 存在。承認 root cause 存在等於——很多東西會連環爆。
現在要換新架構。
新的 CLK timing 會不同。新的並行方式會不同。系統管理匯流排的通訊協議會完全不同。
也就是說:所有舊的 workaround——那些花了 幾年、用無限測試、用「綜合問題難以釐清」堆出來的 workaround——全部會失效。
之前的替代架構已經試過。連那個相對接近的替代方案都搞不定相容性。新的這個,距離更遠。
林昭明不用算都知道:這個 project,以目前的系統設計,是災難。
他知道。
老細也知道。
因為老細從幾個月前就開始秘密在做這件事。
這不是新消息。
林昭明一直知道下世代架構的事。行業的 newsletter 有提。Town hall 講過。老細偶爾在 meeting 裡暗示「有些新方向要開始準備」。
但他被擋在外面。
「這個暫時由我 handle。」
「你不用管這邊。」
「專心做你手上的事。」
他手上的事越來越少。核心的工作被搬走。例會變成表演。他的 scope 縮到只剩文件和 VLOOKUP。與此同時,下世代架構的準備工作——接口評估、相容性測試、供應商溝通——這些本來應該有他的事——全部在另一個他進不去的 channel 裡進行。
他知道。他不問。灰岩不問東西。
但他有耳朵。
走廊上的碎片。茶水間的半句話。Meeting 裡有人不小心提到「新核心那邊的 timeline」然後馬上收聲。阿強那邊——廠商——有一次 send 了一份關於系統管理匯流排相容性的測試報告給他。可能是誤發。可能是阿強用這種方式遞的消息。他看了。
報告裡的數字很難看。相容性測試的 fail rate 高到不合理。時脈同步的誤差比舊架構大三倍。系統管理匯流排的 handshake protocol 和舊的完全不同——舊的 driver、舊的韌體、舊的接口邏輯,全部對不上。
林昭明看完。沒有回覆。
因為回覆 = 確認他接收了這份資料 = 確認他參與了這個 project = 入甕。
他不回。但他記得每一個數字。
現在,Calendar 上出現了 一個 invite。他的名字在與會者名單裡。
會議室 B。三點。
他走進去的時候,房裡有三個人。老細坐在正中間。旁邊是 Derek——那個幾個月前說「你 commitment 好強」的 Derek。另一邊坐著一個他面熟的人,新調來的,叫 Kevin。乾淨的。沒有歷史的。稀釋機制的產物。
桌上攤著幾張印出來的 slide。
老細看著他進來。沒有寒暄。沒有客氣。灰岩之後的互動都是這樣——stripped 到只剩指令和應答。
「昭明,坐。」
他坐下。
「下世代核心架構的銜接,你應該知道。」
「知道。行業都知道。」
「我們內部的準備工作做了幾個月。」老細翻開第一張 slide。一個 timeline。色彩繽紛的。每一段都有名字。「Phase 1:需求定義。Phase 2:相容性評估。Phase 3:系統整合。Phase 4:驗證和量產。」
四個 Phase。每一個都有一大堆 sub-task。
「現在的狀況是——」老細頓了一下。在選用詞。「Phase 1 和 Phase 2,某些部分進展比預期慢。我們需要有人專門 lead Phase 2 的後半段——接口相容性評估、系統管理匯流排的 protocol 對齊、以及韌體層的 timing 校準。」
韌體層的 timing 校準。
林昭明坐在那裡。面無表情。
他聽到的是:timing 校準。
他知道的是:UIP 時脈缺陷。CLK 快了。並行架構不同。系統管理匯流排的 protocol 和舊的完全不相容。這些東西不是「進展比預期慢」。是根本沒辦法在舊框架底下解決。因為舊框架本身就有一個從未被正式承認的缺陷在那裡。
現在你在舊框架上面加一個新的架構。舊的缺陷不只沒有修好——它會被新架構的 timing 差異放大。放到多大?看阿強 send 的那份報告的數字——三倍。至少三倍。
但這些東西他說不出口。
因為 UIP 時脈缺陷「從來不存在」。這是十一月之後的共識。不只沒有人承認——連提都沒人提。Ticket 消失。Comment 被 edit。「什麼 null pointer?」
他如果要說的話會是:「這個 project 的核心難點在韌體 timing。而 timing 的問題,不是新的——舊架構已經有了。只不過被 workaround 撐住。新架構會讓所有 workaround 失效。要真正解決,要回去 fix root cause。而 root cause⋯⋯」
而 root cause 從來不存在。
所以他說出口的任何東西,都會變成:一個有「溝通問題」的員工,再一次提出沒有 data support 的推斷。
老細繼續說。
「Timeline 是三月底交 Phase 2 report。資源方面——」
Derek 接過來:「我和 Kevin 會 support 你。但主力是你。你的韌體背景——」Derek 笑著,很 friendly 的笑。「這是你的強項嘛。」
我的強項。
他們 cut 了他所有核心工作。擋了他在這個 project 外面好幾個月。斷了他的支援。PIP 的時候叫他「停掉所有工作,專心提升自己」。現在說——這是你的強項。
Derek 繼續說。說 timeline。說 milestone。說「stakeholder alignment」。說「cross-functional collaboration」。
Kevin 坐在旁邊,沒有出聲。一個新人在一個不關他事的會議裡的標準姿勢。
林昭明看著 slide。
Phase 2 的 scope 裡面,有一行字:「韌體 timing alignment across legacy and next-gen interface protocols」。
Legacy and next-gen。
Legacy 的 timing——他追了三年。寫過 report。Report 變成附錄 B。附錄 B 在一份沒有人翻開的文件裡面。
Next-gen 的 timing——阿強 send 的報告。Fail rate。誤差。Handshake protocol 不同。他看了,沒有回覆。
現在這行字要他在兩個月內 align。
兩個月。沒有團隊。沒有後台 log。沒有 data。沒有任何人在過去三年正式承認過 legacy timing 有問 題。
他要從「這個問題從來不存在」開始,在兩個月內,解決它。
老細說完了。
房間靜了一下。
「昭明,你有沒有問題?」
林昭明看著桌上那幾張 slide。
他想起很多事情。
想起第一個禮拜,阿文在牆上用手指點了兩個位置。那兩個位置正好是韌體版本切換的節點。阿文看到的東西和他看到的一樣。然後阿文帶著他的規則進來,把地圖翻譯成附錄 B。
想起平安夜。陳工的聲音。「想過死」。四個小時的會議。他一個人打電話叫停。叫停沒有記錄。
想起中介島。母親的病床邊。耳機裡的會議。六點到八點。所有的 DM 都排在這個時段。
想起三十九天。年終晚宴場地。福利委員會會議記錄。VLOOKUP。「什麼都做一點。」
想起 PIP。一年推不動的數位化,變成一季做不到的目標。他想修正的混亂,變成懲罰他的工具。
想起灰岩。不反應。不給材料。不產出任何他們可以用的東西。
現在——他們要他反應。要他產出。要他做一件不可能的事。他做不到,就有新的材料。新的 report 可以寫。新的「故事」可以製造。
這不是一個任務。
是一個新的 PIP。只不過這次不是行政的——是技術的。他拒絕不了的——因為「這是你的強項」。他做不到的——因為三年的 root cause 被確保「從來不存在」。
完美的陷阱。
他知道。
「有。」林昭明說。
老細看著他。
「Phase 2 的 scope——timing alignment——需要 legacy 的完整 log。後台的系統運行記錄。韌體版本的完整修訂歷史。各個接口的 timing profile。」
他一項一項說。聲音很平。很慢。每一項都是他追了三年沒有拿到的東西。
「這些 log 我從來沒有存取權限。如果要做 alignment, 首先要——」
「Log 的事,我跟 IT 那邊談。」老細打斷他。「你先列個清單出來。」
「第二,」林昭明繼續,好像沒有聽到。「Legacy 的 timing 問題——如果有的話——在過去的報告裡沒有被獨立記錄。也就是說,我要做 alignment,首先要重新建立 legacy timing 的 baseline。這個工作量本身就超過兩個月。」
老細的臉微微變了一下。很細的變化。Derek 看了老細一眼。
「第三。系統管理匯流排的 protocol 差異。舊的 protocol 和新的完全不同。這不是 alignment 的問題。是重寫的問題。重寫需要開發團隊。開發團隊的人力——」
「昭明,」老細的聲音很平。「你說的這些,我都知道。所以才找你。」
林昭明停了。
他看著老細。
「我評估過 scope 和 timeline。」他的聲音沒有變。沒有提高。沒有壓低。和灰岩一樣的質地——但這次多了一樣東西。清晰。「這個 scope,以現有的條件——沒有 log 權限、沒有 legacy baseline、沒有開發團隊——在兩個月內交 Phase 2 report,做不到。」
房間很安靜。
「我可以做一個評估:需要什麼條件、多少時間、多少人才可以做到。這份評估我可以交。但這個版本——」他指著 slide。「這個版本我接不了。」
老細沒有馬上出聲。
Derek 看著桌面。Kevin 看著窗外。
「你的意思是——」老細開始說。
「我的意思是,這個 scope 需要的條件不存在。如果硬接,出來的 report 品質我負不起責。而你需要的是一份能 defend 的 report。不是一份掛著我的名字、裡面沒有 substance 的東西。」
最後那句,他知道老細會聽得懂。
一份能 defend 的 report。
老細的工作,一直都是製造能 defend 的文件。沒有 substance 的文件他見過很多。他不需要多一份。
但他需要的,是一份掛著林昭明名字的失敗報告。
林昭明不給他。
「你確定?」老細問。
「我確定。」
靜了幾秒。
老細把 slide 收回文件夾。
「OK。我們再 arrange。」
會議結束。
林昭明走出會議室。
走廊很長。午後的光從窗口照進來,在地面拖出一條一條的影子。
他走過 open area。有人打電話。有人敲鍵盤。有人對著螢幕皺眉。正常的辦公室。正常的下午。
沒有人知道他剛才做了什麼。
沒有人知道會議室 B 裡面發生了什麼。
Calendar 上那個 invite,三十分鐘,已經結束。如果有人查,那個 invite 的內容是「下世代核心架構——銜接評估啟動會」。沒有會議紀錄。沒有 email 跟進。沒有任何東西記錄林昭明說過「接不了」。
如果將來有人問,老細的版本會是:「我們和他 discuss 過。他的 capability 不 match 這個 role 的 requirement。我們決定另行安排。」
沒有一句是假的。
他走到洗手間。關上門。站在洗手台前面。看著鏡子。
鏡子裡那個人很累。
他開水。洗手。洗臉。水很冰。
他看著水流進排水孔。
走出來的時候,走廊還是一樣。什麼都沒有變。
他知道自己做了一個決定。這個決定不會留下任何痕跡。沒有文件。沒有錄音。沒有 email。就好像沒有發生過。
就好像平安夜那次。叫停。沒有記錄。
就好像他的 report。附錄 B。沒有人翻到。
這間公司最擅長的事——不是製造產品,是製造「沒有發生過」。
他回到座位。坐下。繼續做事。
灰岩繼續。
★ 閃回D〈Sorry,不公平〉
那一天突然回來了。
不是因為會議室的光。不是因為老細的臉。是因為那句「你確定?」。