第十二章B〈地板下面〉
港版 v1
地點:鏡界・翠鏡島 / 大陸代工廠區 / 書房 時間:1024年(交叉時間線) 視角:阿強 / 林昭明
阿強收到新case嗰日,冇覺得有咩特別。
能芯嘅新模組。第三代。架構同上兩代唔同——以前嘅模組,核心運算同周邊對接係分開嘅,你處理你嘅,我處理我嘅,中間靠標準協議溝通。第三代唔係。佢將運算同周邊整合埋一齊。一粒模組做晒。效率高。但對接嘅方式,同以前完全唔同。
呢個唔係秘密。行內嘅人都知。規格書公開嘅。技術論壇討論咗幾年。
阿強接到case,第一件事係睇靈韻合成嘅firmware。
佢做咗十五年,呢個動作係本能。你要知道自己企喺邊度,先知道問題喺邊度。
佢睇咗兩日。
唔係因為難。係因為佢要確認自己冇睇錯。
成個firmware嘅核心邏輯——唔係某一段,係成個——由boot sequence到power management到peripheral handshake,每一層嘅assumption都係寫死咗傾向舊架構。舊架構嘅意思係:以某間主流晶片商為中心。邊個係primary,邊個係secondary,成個code嘅邏輯係建立喺呢個不平等嘅前提上面。新模組唔行呢套。
阿強企喺廠房嘅走廊,望住窗外嘅天。佢知道正常嚟講應該點做——重構。至少rewrite同新架構對接嗰幾層。唔係推倒重嚟。但核心嗰幾層,你要改。因為前提變咗。你唔改,上面疊幾多嘢——不斷出update去修補——都只係喺一個傾斜嘅地基上面起樓。
佢等住靈韻合成嗰邊嘅方案。
等咗兩個禮拜。
方案嚟咗。
Workaround。
唔係一個。係一串。喺舊architecture上面,加一層translation layer,將新模組嘅protocol轉做舊格式,再餵畀firmware。中間嘅timing mismatch,用delay buffer頂住。Power state嘅差異,用一個lookup table硬map。
阿強坐喺自己嘅位,望住嗰份方案。
佢做咗十五年。佢見過workaround。間間都有。有時候deadline趕,你冇時間做proper fix,workaround係合理嘅。臨時嘅。過渡嘅。你寫嘅時候心裡面知道——呢個之後要改返。
但佢睇得出。
呢個唔係臨時嘅。
靈韻合成好勤力咁寫workaround,但冇任何計劃去改核心邏輯。冇roadmap。冇timeline。冇人提過。呢個複雜到極點嘅workaround就係「方案」。唔係過渡。係終點。
佢望住嗰份文件嘅最後一頁。「建議方案」四個字。冇附錄。冇「Phase 2:核心邏輯調整」。冇「長期規劃」。
呢個就係全部。
Workaround行唔行?
行。大部分時候行。
但有邊角case。有timing issue。有啲情況下power state會唔同步。唔係成日發生。但會發生。
發生咗點算?
靈韻合成嘅答案:叫供應商查。
阿強查。查完。唔係供應商嘅問題。係translation layer嘅timing mismatch。佢寫喺報告入面。用字好小心。冇直接話「你哋嘅workaround有問題」。佢寫:「經分析,偏差來源與新舊協議轉換過程中的時序差異相關。建議評估base code層面的調整方案。」
回覆:「已收到。請繼續監測。」
佢繼續監測。問題再出現。佢再寫報告。
回覆:「請提供更多數據以供分析。」
佢提供。
然後靜咗。
過幾日。Firmware有一個minor update。Changelog:「穩定性優化。」
問題暫時冇再出現。
阿強知道佢哋做咗咩。佢哋做咗極之複雜嘅補救——調咗delay buffer嘅參數,加多幾條例外處理。好勤力。但治標唔治本。根本嘅核心邏輯偏向仲喺度。下次換一個邊角case,又會出嚟。然後又叫佢查。然後又加補水code。然後又「穩定性優化」 。循環。
佢望返自己嗰句「建議評估base code層面的調整方案」。
喺回覆入面,呢句話冇被提及。
好似佢冇寫過。
佢之後再寫報告,冇再寫呢句。
阿強記得第一年問過一個問題。
唔係好正式嘅。係一個會議尾聲,大家收緊嘢,佢順口問咗一句。
「點解firmware只圍繞舊架構設計?新模組嗰邊嘅support⋯⋯」
佢未講完。
唔係有人打斷佢。係氣氛變咗。好微妙。好似有人喺房間入面開咗冷氣,但你搵唔到冷氣喺邊。
靈韻合成嗰邊嘅人,有一個答咗。
「呢個架構喺市場上嘅份額好細。品質仲有好多問題。我哋嘅重點係服務主流用戶。呢啲嘢交畀ODM自己handle就得。」
阿強點頭。合理。
之後另一個人喺email入面提過類似嘅嘢。用字唔同,意思一樣:「呢個架構嘅兼容性問題係已知嘅。品質同穩定性同主流方案有距離。ODM嗰邊有經驗處理。」
再之後,一個私下嘅場合,仲有人同佢講過。語氣唔同。唔係解釋。係一種⋯⋯佢嗰陣搵唔到詞。
後來佢搵到了。
嗰個語氣唔係安撫。係警告。
「呢個唔係你要理嘅嘢。」
冇人用呢句話。但每一個人嘅語氣都係呢句話。
阿強嗰陣以為係公司政策。正常嘅。每間公司都有佢嘅focus。你唔可能support晒所有嘢。呢個佢理解。
佢冇再問。
但後來——好耐之後——佢偶爾會諗返呢件事。
唔同嘅人。唔同嘅場合。一樣嘅答案。一樣嘅措辭。一樣嘅語氣。
正常嘅公司,你問一個技術問題,唔同人會有唔同角度嘅答案。有人從成本講。有人從技術講。有人從schedule講。因為每個人企嘅位唔同,睇到嘅嘢唔同。
但佢問嘅呢個問題——所有人嘅答案一樣。
阿強唔知道呢個代表咩 。可能只係公司嘅official position好清晰。可能只係大家都認同呢個判斷。
可能。
阿強有一次同林昭明食飯。出差。晚餐。一間普通嘅餐廳。
公事傾完。飯食到一半。唔知點解傾到firmware。可能係因為阿強嗰日做嘅case——又係一個兼容性issue,又係workaround,又係「供應商查一查」。佢有啲攰。攰嘅時候人會講多咗。
「林先生,你有冇留意過⋯⋯靈韻合成嘅firmware update,過去兩年,出咗幾多個?」
林昭明搖頭。
「我數過。六十幾個。」阿強飲咗啖嘢。「六十幾個。好勤力。每隔幾個禮拜就有。Feature改咗。Performance tuning做咗。Bug fix做咗。你睇changelog,好長。好詳細。好似好努力咁。」
佢停咗。
「但你知唔知——六十幾個update,改咗咁多嘢——核心嗰套邏輯有冇變過?」
林昭明望住佢。
「冇。」
阿強放低個杯。
「你要喺入面做先知。或者你要識睇數據。公開嘅changelog唔會話你。佢寫住『穩定性優化』『兼容性改善』『效能提升』——你睇完覺得好正常。但你拎住數據去對,你會發現:新架構嘅問題仲喺度。每一次改完,嗰啲邊角case仲係會出現。改咗六十幾次,核心嘅timing mismatch冇變過。因為佢改嘅嘢全部係圍繞住舊嗰套邏輯轉。」
佢望住枱面。
「佢唔係冇做嘢。佢做咗好多嘢。但做嘅所有嘢都係喺同一個框架入面。框架本身——邊個係primary,邊個係secondary——冇人掂過。」
林昭明問:「你覺得係做唔到,定係唔想改?」
阿強望住佢。呢個問題好直接。直接到佢要諗一陣先答。
「⋯⋯做唔到嘅嘢我見過。做唔到係有原因嘅。你睇得出邊度卡住,邊度資源唔夠,邊度技術仲未到。做唔到嘅樣係——有人喺度試,但未得。」