簡潔版的架構圖畫到晚上八點。
林夕故意畫得很慢,每一個線條都反複斟酌。不是追求完美,而是在拖延——他在等一個機會。
辦公室的人走得差不多了,隻剩下幾個加班的程式設計師和遠處周凱辦公室裏透出的燈光。林夕儲存檔案,傳送到周凱郵箱,然後關機,起身。
他沒有直接離開,而是走向走廊盡頭的另一個方向。
技術部的檔案室在樓層最角落,平時很少有人去。公司推行無紙化辦公已經好幾年,但一些重要的曆史檔案、合同、設計圖紙,還是會列印出來存檔。門是老式的木門,鎖是傳統的機械鎖。
林夕有這裏的鑰匙——作為管培生,他的門禁許可權很低,但檔案室的鑰匙是通用的,放在前台保管,登記就能借。上週他幫行政部整理過一批廢舊裝置清單,順便借了鑰匙,忘了還。
現在,這把銅鑰匙在他口袋裏,微微發燙。
《孫子兵法·虛實篇》:“進而不可禦者,衝其虛也。”
進攻而敵人無法抵禦,是因為衝擊了敵人空虛的地方。
檔案室,就是此刻最“虛”的地方。沒人注意,沒人看守,裏麵堆著被遺忘的曆史。
他走到門前,左右看了看。走廊空無一人,隻有安全出口的綠燈幽幽亮著。他插入鑰匙,轉動,哢嗒一聲輕響。
門開了,灰塵的味道撲麵而來。
房間不大,二十平米左右,三麵牆都是鐵皮檔案櫃,按年份排列。中間一張長桌,堆著些雜物。林夕開啟燈,昏黃的光線讓一切顯得更陳舊。
他直接走向2019年的櫃子。標簽上寫著“技術檔案/運維記錄/事故報告”。櫃子沒鎖,他拉開,裏麵是整齊的藍色資料夾。
手指在資料夾脊背上劃過,灰塵簌簌落下。很快,他找到了目標——《2019年“雙十一”積分兌換係統故障複盤報告》。
抽出資料夾,很厚。林夕把它放在長桌上,開啟。
第一頁是標準的報告封麵:標題、時間、責任人。責任人那欄,手寫著兩個名字:陳啟明(技術負責人)、周凱(技術經理)。周凱的名字後麵有個括號:(審核)。
翻到第二頁,是事故概述。林夕快速瀏覽:
“2019年11月11日00:00-00:23,會員積分兌換係統出現大規模服務不可用。核心故障點:資料庫主庫因連線數暴增導致死鎖,從庫同步延遲超過30分鍾,最終主從切換失敗……”
“影響範圍:約12萬使用者兌換失敗,其中3.7萬使用者積分被扣除但未獲得商品……”
“直接經濟損失:預估180萬元(積分補償及商譽損失)……”
林夕的心跳加快了。這和李工說的“一百七十萬”吻合,但規模更大——影響12萬使用者,不是小數目。
繼續往下翻,是根因分析部分。陳啟明用紅筆標出了幾個關鍵點:
1. 架構缺陷:核心資料庫單點,從庫同步機製存在設計問題。
2. 容量評估失誤:壓力測試模型未考慮真實使用者行為中的“恐慌性重試”。
3. 應急方案缺失:主從切換流程存在長達5分鍾的人工確認環節。
這些林夕都猜到了。但下一頁,他停住了。
那是手寫的一頁紙,釘在列印的報告後麵。字跡潦草,是陳啟明的筆跡:
“補充分析:
1. 事故前一週(11月4日),我提交了資料庫緊急擴容方案,申請增加三個從庫節點。方案被駁回,理由:成本超預算。
2. 事故前一天(11月10日)下午,我再次郵件預警,指出根據最新流量預測,現有架構在峰值時99%概率崩潰。郵件抄送周凱、張總監。周凱回複:‘已評估風險,在可控範圍內。先按原方案上線,後續優化’
3. 事故發生後,我建議立刻公開說明、全量補償使用者。周凱建議:分批補償、控製影響範圍、對外口徑為‘係統短暫波動’。最終采用後者。
4. 複盤會議結論:技術側負主要責任(我),管理側負次要責任(周凱)。但對外通報中,隻提‘技術團隊’整體責任,未明確個人。
5. 我接受技術責任,但無法接受掩蓋事實的做法。已提交辭職報告。”
紙張的末尾,有一行很小的字,幾乎看不清:
“如果後來者看到這份報告:資料庫的問題還在,隻是被臨時補丁掩蓋了。當補丁失效時,問題會以更嚴重的形式回來。小心。”
林夕盯著那行字,呼吸有些急促。
他翻到報告最後,果然看到了陳啟明的辭職信影印件——日期是2019年11月20日,也就是這份報告最後修改的日期。
還有一張紙,是周凱的批複:“同意離職申請。感謝在職期間的貢獻。希望未來有合作機會。”
標準得近乎冷漠。
林夕合上資料夾,靠在檔案櫃上,感覺渾身發冷。三年前的那場事故,根本不是“技術不成熟”,而是一次被預見的、被忽視的、最終被掩蓋的災難。
陳啟明看到了問題,提出了警告,但被駁回。事故發生後,他想坦誠處理,但被要求“控製影響”。他承擔了主要責任,然後離開。
而周凱呢?他駁回了擴容方案,忽視了預警,選擇了掩蓋。然後,他留了下來,並且——升職了。
林夕想起周凱桌上那份列印著“327”的報表,想起他溫和的笑容,想起他說“時機最重要”。
原來所謂的“時機”,就是選擇在什麽時候掩蓋問題,什麽時候轉移責任,什麽時候讓自己安全上岸。
他把資料夾放回原處,仔細抹掉桌上的灰塵痕跡。正準備離開時,餘光瞥見旁邊2018年的櫃子裏,有一個熟悉的標簽:“會員積分係統-初版設計檔案”。
鬼使神差地,他拉開了那個櫃子。
檔案很厚,是專案的起始。林夕快速翻閱,想找到最初的設計思路。翻到中間時,一張夾在裏麵的照片滑了出來,掉在地上。
他撿起來。是一張團隊合影,七八個年輕人站在還沒裝修完的辦公區裏,背後是裸露的水泥牆和腳手架。照片背麵有手寫的名字和日期:2018年3月,積分係統專案啟動會。
林夕認出了幾個人:最左邊是年輕的陳啟明,戴著黑框眼鏡,笑得有點靦腆。中間是周凱,頭發比現在多,意氣風發。右邊還有一個熟悉的麵孔——李工,那時候還很瘦。
但最讓林夕注意的是照片邊緣的一個人。他站在最旁邊,幾乎要出框,側著臉,看不清全貌。但那個側臉的輪廓……
林夕忽然想起,他在公司的榮譽牆上見過這張臉。技術部早期的核心成員之一,後來轉崗去了其他部門,現在好像是……戰略投資部?
他把照片翻過來,找對應的名字。找到了,在那個人的位置旁邊,寫著兩個小字:
張維。
姓張。技術總監也姓張。
林夕快速搜尋記憶。技術總監叫張海峰,不是張維。但公司裏姓張的高層不止一個……
他拿出手機,想拍下照片,但想了想又放下了。檔案室可能有監控,他不能留下證據。
他把照片小心地夾迴檔案,放回櫃子。關燈,鎖門,鑰匙放回口袋。
走廊裏依然安靜。周凱辦公室的燈還亮著,但百葉窗完全拉下來了,看不見裏麵。
林夕走向電梯,腦子裏全是剛纔看到的資訊碎片:陳啟明的警告、周凱的批複、那張合影、照片邊緣的張維……
電梯門開啟時,他遇到了李工。
“這麽晚?”李工拎著公文包,看起來很疲憊。
“畫完圖,剛走。”林夕說,“您也加班?”
“嗯,處理點善後。”李工按了電梯按鈕,忽然壓低聲音,“那封郵件,張總監回複了。”
林夕心頭一緊:“怎麽說?”
“很簡單:已知悉,請技術部內部先處理,後續向他匯報。”李工笑了笑,“典型的領導話術。不表態,不介入,但留了個口子——‘後續匯報’。”
“周凱知道嗎?”
“知道。他下午去找張總監了,談了一個小時。”李工看著電梯數字跳動,“出來的時候臉色不太好。我估計,張總監雖然沒直接插手,但給了壓力。”
電梯到達一樓。兩人走出去,夏夜的熱浪湧來。
“小林。”李工在門口停下,“你查曆史資料,我能理解。但有些事,知道得太多未必是好事。陳啟明就是例子。”
林夕轉頭看他:“李工,您認識陳啟明?”
李工沉默了很久,久到林夕以為他不會回答了。
“認識。”他最後說,“我們一起進的星雲,都是第一批技術。他是個理想主義者,覺得技術應該純粹,問題應該直麵。但職場不是實驗室。”
“所以他走了。”
“所以他走了。”李工重複道,“有時候我覺得,他可能是對的。但對的又怎樣?公司還在運轉,使用者還在增長,投資人在數錢。誰在乎三年前的一場事故,或者今天那327個使用者?”
這話裏有一種深深的疲憊,甚至虛無。
“我在乎。”林夕說。
李工看著他,眼神複雜:“年輕人都這麽說。但等你再待幾年,可能就不會這麽想了。”
他揮揮手,走向停車場。
林夕站在公司門口,看著李工的車尾燈消失在夜色裏。手機震動,是母親發來的微信,問他這個週末回不回家。
他打字:“這週末要加班,下週回。”
傳送。
抬頭看大廈,三樓的燈光還亮著。周凱還沒走。
林夕忽然想到一個問題:如果周凱知道張總監在關注這件事,他接下來會做什麽?繼續掩蓋?還是改變策略?
《孫子兵法·軍爭篇》:“故兵以詐立,以利動,以分合為變者也。”
用兵打仗以詭詐為根本,根據利益決定行動,以分散和集中兵力作為變化。
周凱的“利”是什麽?保住位置,爭取升職。那麽他的“詐”會是什麽?他的“分合”又會是什麽?
林夕不知道。但他知道一點:當對手開始變化時,正是觀察其真實意圖的最好時機。
他走回地鐵站的路上,腦子裏反複出現檔案室裏的畫麵——陳啟明的手寫字跡,那張團隊合影,照片邊緣的側臉。
還有那份報告末尾,那行幾乎看不清的小字:
“當補丁失效時,問題會以更嚴重的形式回來。”
今天那327次衝突,就是補丁失效的征兆嗎?
還是說,這隻是冰山最頂上的一小塊冰?
地鐵進站的風吹亂了他的頭發。他走進車廂,在擁擠的人群中找到一個角落站定。
手機又震動了一下,這次是趙磊:
“哥們兒,聽說下週的技術評審會,張總監點名要你參加,講優化方案。周凱好像不太高興。”
林夕盯著這行字。
張總監點名要他參加。
這不是李工說的“留了口子”,這是直接介入。
而周凱“不太高興”。
形勢正在發生變化。微妙地,但確實地。
他回複:“知道了,謝謝。”
收起手機,地鐵在隧道中疾馳,車窗上倒映出自己模糊的臉。
他想起祖父常說的另一句話:“善戰者,求之於勢,不責於人。”
善於作戰的人,會努力創造有利的態勢,而不是苛求下屬。
現在,勢開始動了。
而他,這個剛過河的卒子,被推到了棋盤上一個意想不到的位置。
接下來,是進,是退,還是——