摘要
Unity 引擎升級如同「高速行駛中更換引擎」——產品不能停、開發不能斷,但底層技術必須全面更新。面對跨團隊協作分工不明確、歷史問題無文件可追溯、第三方套件權責模糊等三大挑戰,我透過主動分流工作、親自下場測試定位問題、以及推動跨團隊協調,讓引擎升級在不影響開發進度的情況下順利完成。
情境
公司決定對核心產品進行 Unity 引擎大版本升級,以支援後續技術需求與效能優化。此次升級涉及多個團隊協作——我們團隊負責產品功能開發,另有專責的引擎技術團隊協助處理引擎升級的技術層問題。升級期間產品仍持續開發,不能因此中斷。
挑戰
- 功能相容性斷裂:引擎功能調整導致大量已使用功能需要修改與測試(如圖片格式全面調整)
- 歷史問題無跡可循:升級後部分問題出現機率提升,但無文件記錄,無法判斷是升級導致還是原有問題
- 第三方套件依賴風險:公司內部其他團隊維護的第三方套件出現問題,但該團隊表示無暇處理
Case A:主動分流工作,讓引擎團隊專注技術瓶頸
引擎升級後大量功能相容性問題浮現。協作的引擎團隊不熟悉我們的產品功能;我們熟悉功能卻不熟引擎底層——直覺上會把問題全部交給引擎團隊,但這會讓真正的技術瓶頸被功能層問題拖住,風險大增。
行動
- 引擎團隊:專注處理引擎升級的技術面問題(底層相容性、引擎 Bug)
- 我們團隊:承接已知的功能面問題,分配給內部 RD 平行處理
- 讓兩邊各自發揮所長,而不是把所有問題都推到一方
結果與意義
引擎團隊得以專注突破技術瓶頸、縮短升級時程;我們同步消化功能面調整,也因此熟悉了引擎升級的問題類型,後續專案再遇到時具備自主判斷能力。
不是把問題都丟給「看起來最對口的團隊」,而是根據問題屬性與團隊能力做合理分流——讓每個團隊做最有價值的事,整體風險才可控。
Case B:親自下場定位問題,釐清升級前後的責任歸屬
升級後某個功能問題出現機率明顯提升,但沒有任何文件記錄、也沒人記得舊版是否就存在。團隊初步判斷是「正常現象」——但這個問題會導致遊戲卡住,不釐清就會直接影響上線評估。
行動
- 不接受「這是正常的」這個結論,親自下場協助測試,嘗試建立重現條件
- 幫忙定位問題發生的具體場景,縮小排查範圍
- 最終確認:這是升級前就存在的問題,升級後因環境變動導致出現機率提升
結果與意義
成功釐清問題歸屬,避免引擎團隊把大量時間花在非升級導致的問題上;問題定位後,團隊能對上線風險做出準確評估,也留下了可追溯的記錄。
當責任歸屬模糊時,最危險的是「各說各話、沒人深入」。PM 不只是分配工作——適時親自投入、用事實釐清狀況,才能避免問題被擱置成更大的風險。
Case C:推動跨團隊協調,解決第三方套件的責任僵局
產品用到公司內其他團隊維護的第三方套件,升級後出現異常。套件團隊說沒時間處理、請引擎團隊自行解決;引擎團隊認為那是套件問題、不在升級範圍。僵持超過兩週,即將撞上專案檢核點。
行動
- 技術面:與引擎團隊一起追查,先定位出明確問題——引擎更新導致部分資料的讀取順序異常
- 協調面:帶著定位結果去與套件團隊溝通,協調他們重新修改資料格式
- 讓對方看到我們已做完定位工作,不是單方面丟問題過去
結果與意義
套件團隊接受定位結果、配合修改,兩週僵局打破,檢核點未受影響,也建立了跨團隊處理相依問題的溝通模式。
當跨團隊責任模糊時,與其等對方行動,不如先做到能做的事——定位問題、提出方案,再帶著結果去協調。讓對方看到的不是「麻煩」,而是「已有解法,只需要你的配合」。
✔️ Cross-functional Communication ✔️ Problem Solving ✔️ Risk Management ✔️ Stakeholder Management