創作聲明:本文為虛構創作,請勿與現實關聯
「你這種寫法還停留在10年前,在我們清華實驗室早就淘汰了。」
新任CTO李總當著全部門30多人的面,指著我的代碼冷笑道。
「公司要發展,就不能被這種落后思維拖累。」他直接任命一個號稱阿貍P8的王浩然為核心架構師,把我調到基礎開發組寫增刪改查。
更過分的是,他竟然要求我簽署「不干預新架構開發」的承諾書,威脅不簽就調到客服部做技術支持。
我被迫簽了字,但私下保存了一份詳細的風險評估報告。果然,新架構上線第一天系統就全面崩潰,用戶無法登錄,訂單無法處理,公司每小時損失200萬!
李總滿頭大汗地跑來求我:「建國,快幫忙看看!」
我冷靜地回答:「抱歉,根據承諾書,核心系統我不能碰。」
可誰也沒想到,三天后發生的事情,徹底顛覆了所有人的認知!
01
周五下午四點,我正埋頭修復一個支付模塊的緊急bug。系統昨天晚上開始偶發性報錯,用戶投訴電話已經響了一上午。
「張建國,你停一下。」
我抬起頭,新任CTO李總站在我工位后面,身邊跟著一個三十歲左右的年輕人。整個技術部三十多號人的目光瞬間聚焦過來。
李總指著我的屏幕:「你這種寫法不利于后期升級維護。你看,這里直接寫SQL拼接,沒有用ORM框架;這里的異常處理還在用try-catch包一大段,現在都用函數式編程的方式處理了。」
我的手指在鍵盤上停住。我來這家公司10年了,作為一個干了快20年開發的程序員,這套代碼我從零寫到現在,穩定運行,處理過億萬級的交易數據,從沒出過大問題。
李總轉向其他同事:「大家看看,這就是技術債務。代碼能跑不代表代碼好,我們要的是可擴展、可維護的現代化架構。」
「李總,這個模塊涉及復雜的業務邏輯,直接寫SQL是為了性能考慮...」
「你先別說話,我還沒說完。」李總擺擺手,「性能?現在硬件這么便宜,我們追求的是開發效率和代碼優雅性。你這種思維還停留在十年前資源緊張的時代。」
十多年來第一次懷疑自己的判斷。
李總拍拍身邊年輕人的肩膀:「給大家介紹一下,這位是王浩然,前阿貍P8,我們的技術專家。接下來公司要進行技術架構全面升級。」
我握緊拳頭。這個王浩然從進門開始就沒看過我一眼,仿佛我這個老員工根本不值得他注意。
「現在宣布一下新的組織架構。」李總清了清嗓子,「王浩然擔任核心系統架構師,負責用戶系統、支付系統、訂單系統的重構。原來參與核心開發的同事,暫時調到基礎開發組。」
基礎開發組?那不就是寫增刪改查的地方嗎?
旁邊的小陳低下頭,不敢看我。他跟我搭檔三年,對這套系統的每個模塊都了如指掌。現在卻要被一個外來的人指手畫腳。
「當然。」李總掃視全場,最后目光落在我身上,「如果老員工能證明自己跟得上時代,我們也歡迎。」
這話聽起來像是給了機會,實際上是在宣判死刑。一個在公司干了十年的老員工,被當眾質疑技術水平,還要"證明自己"?
我站起身,直視李總的眼睛:「李總,我來這家公司10年了,作為一個干了快20年開發的程序員,這套系統我從零開始寫到現在,每一行代碼的業務邏輯我都清楚。性能優化、故障處理、數據遷移,這些都不是理論知識能替代的。」
「建國,時代在變,技術在進步。」李總的語氣緩和了一些,但話里的意思沒變,「你的經驗很寶貴,但我們需要用更現代的方式來管理代碼。王浩然會帶領團隊,用微服務架構重新設計整個系統。」
王浩然終于開口了:「老張,你這套代碼確實該淘汰了。但是單體架構確實已經不適合公司現在的發展規模了。」
感情?他用這個詞來形容我十年的技術積累?
我收拾桌上的筆記本,起身往外走。在門口,我回頭看了一眼。三十多個同事,有的低頭看手機,有的假裝整理文件,沒人敢跟我對視。
只有小陳抬起頭,沖我苦笑了一下。
李總的聲音從身后傳來:「會后大家把現有代碼整理一下,準備交接給王浩然團隊。新架構預計三個月內完成開發,六個月內上線。」
三個月?我用了十年才把這套系統打磨成現在的樣子,他們三個月就要推倒重來?
走出辦公室,我在樓梯間點了根煙。手機響了,是老婆打來的。
「怎么樣?新領導還好相處嗎?」
我深吸一口煙:「挺好的,就是要證明一下自己跟得上時代。」
「那就證明給他們看唄,你這么厲害。」
我沒再說話。電話那頭,老婆還在關心地問著什么,但我的注意力已經回到剛才那個場景。
證明自己?好,我倒要看看,你們能玩出什么花樣來。
02
周三上午,李總召集了全部門技術評審會。王浩然在大屏幕上展示他的微服務架構圖,密密麻麻的模塊連接線看得人眼花。
我翻著手里的技術方案,越看越皺眉。用戶認證服務只部署一個實例?這要是掛了,整個系統都得癱瘓。
「有什么問題嗎?」王浩然注意到我的表情。
我放下文件:「這個用戶認證服務存在單點故障風險。一旦這個節點出問題,所有業務都會受影響。」
「張工,你這是用十年前的思維看現在的技術。」王浩然點擊PPT翻到下一頁,「現在的容器技術已經很穩定了,而且我們用的是云原生架構,自動擴縮容,不會有你擔心的問題。」
我直接站了起來:「容器再穩定也是跑在物理機上的。網絡故障、磁盤損壞、機房斷電,這些問題容器解決不了。」
「那是運維的事,不是架構設計要考慮的。」王浩然擺擺手,「我們要關注的是業務邏輯的解耦,不是這些底層的細節。」
會議室里安靜得能聽到空調的嗡嗡聲。小陳和幾個老同事互相看了看,沒人敢說話。
李總敲敲桌子:「建國,王浩然說得對。現在的云計算技術已經很成熟了,我們要相信新技術的能力。」
我拿起桌上的水杯,一口氣喝完:「李總,三年前我們處理過一次類似的故障。當時就是因為認證服務單點故障,導致整個系統癱瘓了四個小時,損失了兩百萬。」
「那是三年前的技術水平。」李總的語氣有些不耐煩,「建國,你不能總是用過去的經驗來否定新的方案。技術在進步,我們的思維也要進步。」
王浩然補充道:「而且我們這次用的是分布式架構,跟三年前的單體系統完全不一樣。」
我看著這兩個人,一個是學院派的CTO,一個是空降的專家,都沒在這個系統上真正流過血流過汗。
「那好,我建議至少部署三個認證服務實例,做負載均衡。」我退一步,「這樣成本不會增加太多。」
「張工,你還是不理解微服務的精髓。」王浩然搖搖頭,「過度設計是大忌,我們要的是輕量級、敏捷開發。」
李總看看手表:「好了,這個方案就這么定了。建國,你的意見我們記錄下來了,但是最終決策權在技術委員會。」
技術委員會?就李總和王浩然兩個人,還叫什么委員會。
散會后,李總把我單獨留下:「建國,有件事需要你配合一下。」
他從文件夾里抽出一張紙:「為了保證新架構開發的獨立性,需要原來參與核心系統的同事簽個承諾書。」
我接過來看了看,上面寫著"不干預新架構開發,不對新方案提出質疑"等條款。
「李總,這是什么意思?」
「就是說,新系統開發期間,你們專心做基礎開發的工作,不要對王浩然的團隊指手畫腳。」
我把紙放在桌上:「我不簽。」
李總的臉色沉了下來:「建國,這是公司的決定。」
「哪條公司制度規定技術人員不能提出技術意見?」我盯著他的眼睛,「這個承諾書本身就是違法的。」
門口走進來一個人,是人事部的張主任。顯然是李總提前安排好的。
張主任坐下來,打開筆記本:「建國,公司現在要進行技術轉型,需要每個人都配合。如果你覺得現在的崗位不合適,我們可以考慮調整。」
03
周末在家整理技術資料時,我突然想起一件事。王浩然說自己是阿貍P8,但他對阿貍的技術棧好像并不熟悉。
我打開微信,找到大學同學老劉。他在阿貍待了七年,現在是P9級別的技術專家。
我發了個語音過去:「老劉,幫我查個人,王浩然,說是你們那邊出來的P8架構師。」
半個小時后,老劉回復:「查了,沒這個人。P8級別的架構師我基本都認識,從來沒聽過這個名字。」
我又問了企鵝和字節的幾個朋友,都說沒有這個人。
周一上午,我敲響了李總辦公室的門。
「李總,我需要跟你聊聊王浩然的事情。」
李總頭也不抬:「有什么問題?」
「他的簡歷有問題。我通過朋友核實過,阿貍那邊根本沒有這個人。」
李總停下手中的筆,抬頭看我:「建國,你這是在做什么?」
「我在履行技術人員的職責。」我把手機里的聊天記錄截圖放在他桌上,「這些都是阿貍、企鵝、字節的朋友幫我核實的。王浩然所謂的P8經歷完全是編造的。」
李總拿起截圖看了看,然后冷笑一聲:「你有什么直接證據嗎?就憑幾張聊天記錄?」
「這些朋友都是各大廠的技術專家,他們的話還不夠可信?」
「就算是真的,那又怎么樣?」李總把截圖推回給我,「改變不了你技術落后的事實。王浩然的方案得到了我的認可,這就夠了。」
我握緊手機:「李總,你這是在包庇。」
「建國,我警告你,不要再搞這些小動作了。」李總站起身,「專心做好你的基礎開發工作,別的事情不要多管。」
我看著他的眼睛:「那如果新架構出了問題,你負責嗎?」
「不會出問題的。即使出了問題,也有應急預案。」
走出辦公室,我在樓梯間點了根煙。王浩然簡歷事情,李總明顯是知道的,但他選擇了裝聾作啞。這說明什么?說明在他眼里,趕走我比維護公司利益更重要。
下午開周會,王浩然在匯報新架構的進展。
「目前用戶模塊和支付模塊已經完成了基本框架,預計下周可以進入聯調階段。」
小陳舉手發言:「王專家,這個進度確實很快,比我們之前的開發效率高多了。」
我轉頭看小陳,他避開我的目光。這個跟我搭檔三年的兄弟,現在開始公開表態支持王浩然了。
王浩然笑了笑:「微服務架構的優勢就在這里,模塊化開發,并行推進。」
「建國哥,時代變了,我們也要變。」小陳突然看向我,「新技術確實有它的優勢,我們不能總是抱著老思想不放。」
會議室里十幾雙眼睛看著我。小陳這話等于是在眾人面前劃清界限,宣布他站隊王浩然。
我什么話都沒說,起身離開了會議室。
在茶水間遇到另一個老同事小李,他端著咖啡走過來:「建國,聽說你在查王浩然的底細?」
「你也覺得我多管閑事?」
「我不是這個意思。」小李四下看了看,壓低聲音,「但是現在風頭不對,我們這些老員工都在觀望。你這樣沖在前面,萬一出事了...」
「什么萬一出事了?」
「萬一出事了,沒人能保你。」
我喝了口水:「那你覺得我應該怎么辦?」
「低頭認錯,主動配合新架構。現在公司明擺著要換血,咱們這些老員工,能保住工作就不錯了。」
晚上回到家,老婆坐在沙發上,臉色很難看。
「怎么了?」
「今天我們公司的技術對接出問題了。」老婆看著我,眼圈泛紅,「你們那邊的API接口不穩定,我負責的項目上線又要延期。」
我坐下來:「什么接口?用戶認證那個?」
「對!今天下午開始頻繁超時。」老婆突然提高音量,「我們技術總監說,你們公司正在做架構升級,系統很不穩定。我的KPI考核就看這個項目,延期意味著年終獎沒了!」
我伸手想拉她,被她甩開:「這不應該啊,現在用的還是老系統,怎么會不穩定?」
「不管什么系統!」老婆站起來,在客廳里來回走,「因為你們的問題,我的項目要推遲一個月。你知道我們老板今天怎么說的嗎?說你們公司技術部管理混亂,以后要重新評估合作關系。」
我也站了起來:「我沒有拖后腿,我只是在堅持技術原則。」
「什么技術原則!」老婆轉身對著我喊,「建國!你到底要鬧到什么時候?房貸車貸孩子上學,這些你想過嗎?」
我看著老婆通紅的眼睛,一時間不知道說什么。她說得對,我的堅持確實影響了她的工作。但是,技術人員如果連最基本的職業操守都沒有了,那還算什么技術人員?
老婆坐回沙發上,把臉埋在手里:「建國,我求求你,別再跟他們斗了。我們斗不過的,真的斗不過。」
我走到窗邊,看著樓下車水馬龍的街道。十年前剛進這家公司的時候,我充滿斗志,覺得只要技術過硬,就能在這個行業站穩腳跟。
現在我才明白,技術過硬只是基礎,更重要的是要會看風向,會站隊,會低頭。
但是,讓我向一個如此假的人低頭,我做不到。
我回到書房,繼續完善那份風險評估報告。不管別人怎么看我,這份報告就是我的態度。
04
接下來的兩周,我選擇了妥協。
老婆那天晚上哭得很厲害,我意識到自己的堅持確實影響了家人。第二天上班,我主動找到王浩然。
「王專家,如果有需要我協助的地方,盡管說。」
王浩然看起來有些意外:「張工,你愿意配合我們的工作了?」
「技術無國界,也無派別。能把系統做好,我當然愿意幫忙。」
我確實幫了不少忙。數據庫遷移腳本是我寫的,老系統的API兼容方案也是我提供的。小陳私下跟我說:「建國哥,你這樣配合,大家都看在眼里。」
團隊氛圍緩和了很多。李總路過我工位時,甚至還點了點頭。
但我心里很清楚,這種表面的和諧改變不了什么。那份風險評估報告,我依然在更新,依然在完善。
三周后的周一上午,李總召集全公司大會,宣布新架構正式上線。
「經過三個月的努力,我們的技術架構全面升級完成。新系統將為公司帶來更高的性能和更好的擴展性。」
臺下掌聲雷動。我坐在最后一排,鼓掌的動作很輕。
上午十點,新系統正式切換。
十點十五分,客服部開始接到用戶投訴電話。
十點三十分,運維組長跑到技術部:「系統出問題了!用戶登錄失敗率超過50%!」
王浩然在自己電腦上敲著命令:「應該是負載問題,我馬上調整服務器配置。」
十一點,情況更糟了。訂單系統開始報錯,支付流程完全卡死。
李總站在王浩然旁邊,額頭開始冒汗:「到底怎么回事?」
「可能是數據庫連接池的配置有問題。」王浩然的聲音有些發抖,「我需要時間排查。」
十一點三十分,整個系統徹底癱瘓。用戶無法登錄,商家無法接單,客服電話被打爆。
我坐在工位上,看著大屏幕上飛速滾動的錯誤日志。每一條錯誤信息,都在我的風險評估報告里提到過。
認證服務單點故障,數據庫連接池溢出,緩存雪崩效應。一個接一個,就像多米諾骨牌。
李總滿頭大汗地跑到我面前:「建國,你最熟悉底層邏輯,快幫我們看看!」
我緩緩抬起頭,看著這個三周前還在質疑我技術水平的CTO:「抱歉李總,根據承諾書,我只負責基礎代碼維護。核心系統的問題,我不能碰。」
「現在不是說這些的時候!」李總的聲音有些尖銳,「公司每分鐘都在損失錢!」
我打開計算器,按了幾個數字:「按照我們的日均交易量,系統癱瘓一小時,直接損失大概120萬。加上客戶流失和品牌影響,一小時200萬差不多。」
李總愣住了:「你...你早就知道會出這種問題?」
「我在技術評審會上提過,在風險評估報告里寫過。」我從抽屜里拿出那份報告,放在桌上,「但是你說我技術落后,不懂新技術。」
王浩然從另一邊跑過來,臉色慘白:「張工,我承認之前態度不好。現在能不能先幫忙解決問題?」
我看了看手表,距離系統癱瘓已經過去一個半小時了:「王專家,你不是說容器技術很穩定,不會有我擔心的問題嗎?」
「我...我確實低估了復雜度。」王浩然的聲音小得像蚊子,「但現在最重要的是修復系統。」
辦公室里安靜得可怕。三十多個同事都看著我們三個人,等著看這出戲怎么收場。
我站起身,走到窗邊,看著樓下的車流。十年來,我第一次感受到了什么叫做技術人員的尊嚴,那種被需要、被依賴的感覺。
但我也知道,這種尊嚴是用公司的損失換來的。每多等一分鐘,損失就多幾萬塊。
我轉身面對李總:「我可以出手,但有兩個條件。」
李總急切地說:「什么條件?你說!」
「第一,這次修復由我全權負責,任何人不得干預我的技術決策。第二,等問題解決后,我要在全公司技術大會上做技術復盤,把這次故障的原因詳細分析一遍。」
李總毫不猶豫地點頭:「沒問題!我現在就宣布,張建國全權負責系統修復!」
我開始在鍵盤上飛速敲擊命令。十年的經驗,讓我對每個模塊的依賴關系都了如指掌。
首先關閉非核心服務,釋放數據庫連接。然后重啟認證服務,恢復用戶登錄。接著調整緩存策略,防止雪崩再次發生。
一個小時后,系統開始逐步恢復。
兩個小時后,所有功能完全正常。
李總癱坐在椅子上,長長地出了一口氣:「建國,辛苦了。」
我保存了修復日志,關上電腦:「李總,三個小時的停機時間,按最保守估計,公司損失600萬。這就是不聽技術建議的代價。」
辦公室里依然很安靜。每個人都在思考一個問題:如果當初聽了我的建議,今天的災難是不是就不會發生?
但我知道,這只是個開始。我在修復系統的同時,也收集了一些有趣的證據...