接下來的一週,林夕像一根被擰緊的發條。
白天,他按照周凱的要求修改優化方案——不再提曆史問題,不再提架構重構,隻聚焦在“可快速落地的修複點”:防重複提交引數調回5秒、增加關鍵介麵的冪等性校驗、優化資料庫連線池配置。每個方案都附上工作量評估和風險分析,嚴謹得像一份手術計劃。
晚上,他繼續在測試環境裏模擬各種異常場景。那327次衝突的資料像一道未解開的數學題,他試圖找到公式:在什麽樣的並發量、什麽樣的網路延遲、什麽樣的使用者操作序列下,會觸發那個隱藏的bug。
週四下午,距離技術評審會還有三天,趙磊帶來了新訊息。
“內部郵件看到了嗎?”他端著咖啡湊過來,“下週評審會的參會名單,張總監親自定的。”
林夕開啟郵箱。果然,一封會議邀請,標題:“會員積分係統優化方案評審”。參會人名單很長,除了技術部,還有產品、運營、測試的代表,甚至包括戰略投資部的一個人。
投資部那欄的名字是:張維。
林夕盯著那個名字,想起檔案室照片裏那個站在邊緣的側臉。
“這個張維是誰?”他裝作隨意地問。
“投資部的大佬,聽說是公司創始團隊成員之一,早年做技術出身,後來轉做投資了。”趙磊壓低聲音,“平時很少參加這種技術評審,這次居然來了。有人說,是因為公司要融資,投資部要評估技術風險。”
“評估技術風險……”林夕重複著這句話,心裏卻想:真的隻是這樣嗎?
週五,周凱把林夕叫進辦公室。
“方案我看了,改得很好。”周凱把列印稿放在桌上,語氣溫和,“簡潔、聚焦、可執行。這樣在評審會上講,大家容易達成共識。”
“謝謝凱哥。”林夕說。
“不過,”周凱話鋒一轉,“有幾點我想再跟你確認一下。第一,關於防重複提交引數從60秒改回5秒——這個改動,你有沒有評估過對使用者體驗的具體影響?”
“評估了。”林夕開啟自己的筆記本,“我分析了最近三個月的使用者操作日誌,發現95%的使用者在兌換失敗後,會在3秒內重試。超過5秒才重試的比例不到1%。所以改成5秒,對絕大多數使用者沒有影響。”
“那1%呢?”
“那1%通常是網路異常或頁麵卡頓的情況。即使時間視窗是60秒,他們也可能會重新整理頁麵重新操作,本質上是一樣的。”林夕停頓了一下,“而且,維持60秒視窗的風險更大。資料顯示,在促銷期間,這個視窗會放大重複提交的概率至少三倍。”
周凱點點頭,手指在桌麵上輕輕敲擊:“資料很紮實。那第二點,關於增加冪等性校驗——這個改動需要後端配合,工作量不小。你評估需要多少人天?”
“如果隻改造兌換介麵,兩個後端工程師,一週時間。如果要做成公司級的冪等性框架,可能需要一個月。”林夕如實回答。
“一週……時間有點緊。”周凱想了想,“這樣,評審會上,我們先推動兌換介麵的改造。公司級框架可以作為一個長期規劃提出來,但不作為本次優化的強製要求。”
“好的。”
“第三點,”周凱摘下眼鏡,揉了揉鼻梁,這個動作讓他看起來有些疲憊,“也是最重要的一點。在評審會上,如果有人問起這次問題的根本原因,你怎麽回答?”
林夕看著他,等待下文。
“我的建議是:聚焦在技術層麵。”周凱重新戴上眼鏡,“就說,是係統在高並發場景下的一個邊界情況,加上新上線的彈窗功能放大了這個問題。不要提曆史,不要提架構缺陷,更不要提三年前的事故。明白嗎?”
這是命令,不是建議。
林夕沉默了兩秒:“明白。”
“很好。”周凱露出笑容,“你準備一下,下週一好好表現。這是你第一次在這麽多領導麵前匯報,是個很好的機會。”
機會。林夕想起李工的話:“讓你去講,如果順利,功勞有他一份;如果出問題,責任是你的。”
他走出辦公室時,手裏拿著那份列印的方案。紙張邊緣被捏得微微發皺。
週六,林夕沒有加班。他回了趟家,那個三小時車程外的小城。
父母很高興,做了一桌菜。飯桌上,父親說起學校新來的年輕老師,連基本的文言文都講不清楚;母親抱怨菜市場又漲價了,排骨快四十塊一斤。這些瑣碎的煩惱,在日光燈下顯得真實而溫暖。
晚飯後,父親泡了茶,問他:“新工作怎麽樣?跟同事處得好嗎?”
“挺好的。”林夕說,“有個師兄很照顧我。”
“那就好。”父親點點頭,“不過啊,工作上,該堅持的原則還是要堅持。你爺爺常說,做人要正直,做事要踏實。別看現在有些人走捷徑好像很快,但路走不遠。”
母親在旁邊補了一句:“但也別太較真,該柔和的時候柔和點。職場不是學校,人際關係複雜。”
林夕喝著茶,沒說話。父母的話像兩個方向的力,拉扯著他。
夜裏,他躺在自己從小睡到大的床上,看著天花板上熟悉的水漬痕跡。手機亮了一下,是趙磊發來的截圖——公司內部論壇的一個匿名帖子。
標題:“技術部又出事故了?聽說積分係統偷偷摸摸在補償使用者。”
內容很簡短:“上週積分兌換出問題,好多人被重複扣款。技術部沒發公告,私下聯係使用者補償。這是不是瞞報?@技術部負責人出來走兩步。”
下麵有十幾條回複,有的說“我也遇到了”,有的說“難怪我賬戶多了積分”,還有的說“技術部現在越來越水”。
截圖時間是半小時前。現在,帖子已經不見了——被刪了。
林夕盯著暗掉的手機螢幕,在黑暗裏睜著眼睛。
周凱想壓,但壓不住了。資訊像水,總會找到裂縫滲出來。
週日傍晚,林夕回到出租屋。開啟電腦,郵箱裏有一封新郵件,發件人是陌生的內部賬號。
標題:“關於您查詢的曆史檔案許可權申請”。
正文隻有一句話:“您申請訪問的《2019年雙十一積分兌換係統故障複盤報告》許可權已開通,有效期至下週五。請妥善使用。”
沒有落款。
林夕愣了幾秒,然後心跳開始加速。他明明沒有申請過這個許可權——唯一相關的,是上週那封抄送張總監的郵件,但那隻是申請資料許可權,不是檔案許可權。
誰給他開的許可權?張總監?還是……
他登入內網知識庫,找到那份報告。果然,“訪問許可權”那欄的紅色鎖形圖示變成了綠色的勾。
他點開檔案,重新下載。這一次,沒有障礙。
檔案內容和他在檔案室看到的一樣,但多了一個附件——一個加密的壓縮包,檔名是“supplementary_materials.zip”,密碼提示:“啟動會照片日期”。
2018年3月。
林夕輸入密碼,解壓。裏麵有三份檔案:
1. 一份郵件往來記錄,時間跨度從2019年10月到11月,是陳啟明和周凱、張總監關於資料庫擴容申請的溝通。
2. 一張更清晰的團隊合影掃描件,背麵所有名字都對應標注了。
3. 一個txt檔案,標題:“給後來者”。
林夕先開啟了txt檔案。
“如果你看到這個,說明你拿到了許可權。可能是你自己爭取的,也可能是有人想讓你看到。
我不知道你是誰,但我想告訴你三件事:
第一,2019年的事故不是意外,是必然。我提前一個月預警,提供了完整的擴容方案,但被以‘成本’和‘時機’為由駁回。周凱當時說:‘雙十一不能動搖,先扛過去再說’
第二,事故後,我想公開真相,全額補償使用者,徹底重構係統。但周凱說服了張總監,選擇‘控製影響’——分批補償、淡化處理、責任歸咎於‘技術團隊’而非個人。
第三,我離開不是因為事故本身,而是因為我知道,同樣的問題還會再發生。因為根本原因不是技術,是決策機製:短期利益壓倒長期安全,個人前程壓倒使用者信任。
我已經離開三年,這些話本不該再說。但上週我聽說,積分係統又出了問題。我想,可能又有人走到了我當年的位置。
所以,我把這些資料留在這裏。如果你需要,可以用它們。但記住:真相是武器,也是負擔。用它之前,想清楚你要保護什麽,又要對抗什麽。
祝你好運。
陳啟明
2020年1月(於海外)”
檔案的最後,有一個海外郵箱地址。
林夕關掉檔案,很久沒有說話。窗外的夜色完全降臨,城市的燈光像一片倒置的星空。
陳啟明知道會有後來者。他留下了證據,留下了警示,也留下了選擇。
現在,這些都在林夕手裏。
距離評審會還有兩天。
他手上有:一份被修改過的優化方案、一份記錄了真實曆史的秘密報告、一個已經離開三年的人的聯係方式、一次在高層麵前匯報的機會。
還有,那個隱藏在327次衝突背後的、尚未完全浮出水麵的係統性問題。
《孫子兵法·勢篇》:“故善戰者,求之於勢,不責於人,故能擇人而任勢。”
善於作戰的人,會努力創造有利的態勢,而不是苛求下屬,所以能選擇合適的人去利用態勢。
現在,勢在哪兒?
在周凱試圖維持的表麵平靜下,裂痕已經出現:使用者開始質疑,投資部介入,張總監關注,陳啟明的警告像幽靈一樣回歸。
而他,林夕,被推到了這個勢的中心。
週一早上,他將走進那間會議室,麵對周凱、張總監、張維,以及所有想知道真相和想掩蓋真相的人。
他將講一份方案,但心裏裝著另一份真相。
祖父的聲音在耳邊響起,這一次不是《孫子兵法》,而是一句更簡單的話:
“小夕,人這一生,總會遇到幾次必須站直了說話的時刻。那時候,別低頭。”
林夕關掉電腦,走到窗邊。
夜空無月,隻有厚重的雲層。天氣預報說,明天有雷陣雨。
他忽然想起陳啟明報告裏的最後一句話:“當補丁失效時,問題會以更嚴重的形式回來。”
那麽,當掩蓋失效時,真相會以什麽樣的形式回來?
他也不知道。
但他知道,自己已經拿到了開啟那扇門的鑰匙。
接下來,是選擇推開它,還是轉身離開。
窗玻璃上,映出他自己的臉。平靜的,但眼神裏有種從未有過的東西。
像卒子過了河,再也回不了頭。
而河對岸,是整片等待廝殺的戰場。