?他以為我在寫日記
他以為我在寫日記
我廢棄的技術(shù)方案存在致命缺陷,同事曲遠(yuǎn)竊取后當(dāng)成自己的拿去用,還因此升職加薪成了部門紅人。
項(xiàng)目驗(yàn)收那天,客戶技術(shù)總監(jiān)方巖盯著那個(gè)我三個(gè)月前就標(biāo)注過“高并發(fā)會(huì)死鎖”的緩存節(jié)點(diǎn),皺著眉簽了字。
系統(tǒng)上線不到一個(gè)月,月底結(jié)算時(shí)并發(fā)量沖到8900,底層算法直接崩潰,客戶損失280萬。
曲遠(yuǎn)在會(huì)議室里腿都在抖,外包團(tuán)隊(duì)發(fā)來的聊天記錄清清楚楚:“底層代碼我們看不懂,是你給的,我們只能表面修補(bǔ)?!?br>客戶方總經(jīng)理看著解約函,冷冷地說:“480萬賠償,三天內(nèi)到賬,否則法庭見?!?br>1
曲遠(yuǎn)站在投影前,遙控筆在手里轉(zhuǎn)得飛快。
“這套方案的核心是動(dòng)態(tài)負(fù)載均衡,大家看這個(gè)架構(gòu)圖——”
我盯著那張PPT,筆尖在本子上頓住。那個(gè)三層調(diào)度模型,包括中間那個(gè)多余的緩存節(jié)點(diǎn),跟我三個(gè)月前扔進(jìn)碎紙機(jī)的初稿一模一樣。連那個(gè)會(huì)導(dǎo)致高并發(fā)時(shí)數(shù)據(jù)倒灌的設(shè)計(jì)缺陷都原封不動(dòng)。
“曲遠(yuǎn)這方案思路很新啊。”佟??吭谝伪成?,手指敲著桌面。
“熬了三個(gè)通宵?!鼻h(yuǎn)按下翻頁鍵,“底層算法我做了優(yōu)化,比常規(guī)方案效率提升40%?!?br>我在筆記本上記下時(shí)間:11月19日10:47。
旁邊的老張湊過來看了眼投影,小聲說:“這個(gè)緩存層架構(gòu),好像在哪見過?”
曲遠(yuǎn)聽見了,笑著接話:“可能是行業(yè)通用思路吧,但實(shí)現(xiàn)方式完全不同。”
佟海打斷我們:“別討論細(xì)節(jié)了,客戶那邊催得緊。”他看向曲遠(yuǎn),“你有把握三個(gè)月交付?”
“沒問題?!鼻h(yuǎn)把遙控筆往桌上一放,“技術(shù)框架已經(jīng)跑通,就差開發(fā)實(shí)現(xiàn)?!?br>跑通。我差點(diǎn)笑出聲。那個(gè)緩存節(jié)點(diǎn)在并發(fā)超過5000次時(shí)會(huì)觸發(fā)死鎖,我當(dāng)初測(cè)了整整一周才定位到問題,最后選擇推翻重來。
“那就這么定了?!辟『U酒饋恚扒h(yuǎn),這個(gè)項(xiàng)目你來負(fù)責(zé),成了直接給你報(bào)晉升。”
會(huì)議室里響起零星的掌聲。曲遠(yuǎn)沖大家點(diǎn)頭致意,目光掃過我時(shí)停了半秒。
我合上筆記本,舉手:“佟主管,我能說句話嗎?”
“寧川你說?!?br>“我申請(qǐng)退出項(xiàng)目組。”
空氣凝固了兩秒。
佟海皺眉:“為什么?”
“個(gè)人原因,想調(diào)去后勤部門?!蔽野压P記本推到桌子中間,“技術(shù)崗不太適合我?!?br>曲遠(yuǎn)眼里閃過一絲意外,很快被笑意掩蓋:“寧川,不至于吧?大家一起做項(xiàng)目——”
“我考慮清楚了。”我打斷他,看向佟海,“人事調(diào)動(dòng)需要您簽字?!?br>佟海盯著我看了五秒,點(diǎn)頭:“行,下午來我辦公室辦手續(xù)?!?br>散會(huì)后,曲遠(yuǎn)追到走廊里:“兄弟,真不是因?yàn)榉桨副徊杉{你不高興吧?”
“不是?!蔽野聪码娞萱I,“恭喜你?!?br>電梯門打開,他攔住我:“要不晚上一起吃飯?我請(qǐng)客?!?br>“不了,要整理工位?!?br>電梯門在他臉前合上。鏡面反光里,我看見他站在原地,遙控筆還在手里轉(zhuǎn)。
下午三點(diǎn),佟海在調(diào)動(dòng)單上簽字。
“你確定?”他把筆帽蓋回去,“后勤部就是打雜,以你的資歷——”
“確定?!蔽医舆^文件,翻到第二頁交接清單,“我負(fù)責(zé)的技術(shù)文檔怎么處理?”
“按規(guī)定銷毀。”佟??戳搜垭娔X屏幕,“保密條例你知道的?!?br>我拿起他桌上的筆,在清單備注欄寫:“項(xiàng)目初稿相關(guān)文檔及測(cè)試數(shù)據(jù)已按保密規(guī)定銷毀,服務(wù)器已提交設(shè)備部報(bào)廢?!比缓蟀压P遞給他:“麻煩您簽字確認(rèn)。”
佟海掃了一眼,刷刷簽上名字。
“還有事嗎?”
“沒了?!蔽夷闷鹞募爸x謝佟主管這三年照顧?!?br>他擺擺手,我轉(zhuǎn)身出門時(shí),聽見他在打電話:“對(duì),曲遠(yuǎn)的項(xiàng)目定下來了,你準(zhǔn)備一下晉升推薦表……”
晚上七點(diǎn),曲遠(yuǎn)發(fā)了條朋友圈。
配圖是佟海簽字的晉升推薦表,文字只有四個(gè)字:“天道酬勤?!?br>點(diǎn)贊99+,評(píng)論區(qū)全是恭喜。
我給他點(diǎn)了個(gè)贊,然后放下手機(jī),繼續(xù)往紙箱里裝東西。工位上的榮譽(yù)證書、馬克杯、鍵盤,三十年的痕跡塞進(jìn)一個(gè)破紙箱剛剛好。
“還沒走?”曲遠(yuǎn)端著咖啡走過來,看了眼紙箱,“這些不要了?”
“后勤部有新工位。”我把最后一個(gè)相框放進(jìn)去。
他把咖啡放在我桌上:“別多想,以后有機(jī)會(huì)還能調(diào)回來?!?br>“不用。”我拎起紙箱,“我挺適合后勤的。”
他拍了拍我肩膀:“那行,以后有事隨時(shí)找我?!?br>我笑著點(diǎn)頭,目送他走進(jìn)項(xiàng)目組獨(dú)立辦公室。透過玻璃墻,能看見他把晉升推薦表貼在白板上,然后拍照。
紙箱有點(diǎn)重,我走到茶水間門口時(shí)停下來歇了歇。里面?zhèn)鱽韮蓚€(gè)實(shí)習(xí)生的聲音。
“曲工這方案真牛,佟主管當(dāng)場(chǎng)就拍板了?!?br>“人家有實(shí)力啊,聽說熬了三個(gè)通宵?!?br>“寧川那個(gè)老員工不是也在做方案嗎?怎么突然調(diào)走了?”
“肯定是競(jìng)爭(zhēng)不過唄,技術(shù)不行還死撐著。”
我推開門,兩個(gè)人立刻閉嘴。
“借過?!蔽野鸭埾浞旁诘厣希恿吮?,一口氣喝完,然后重新拎起箱子走出去。
身后傳來壓低的笑聲。
2
曲遠(yuǎn)的獨(dú)立辦公室在十樓,玻璃墻上貼著項(xiàng)目啟動(dòng)倒計(jì)時(shí)。
我現(xiàn)在的工位在負(fù)一層,設(shè)備庫房旁邊,沒窗戶,常年開著日光燈。桌上堆著各部門送來的設(shè)備采購申請(qǐng)表,最上面那張是曲遠(yuǎn)簽的——項(xiàng)目組要新增五臺(tái)服務(wù)器。
“寧川,這個(gè)批一下。”后勤部老劉把文件夾扔過來,“曲工那邊急著用。”
我翻開采購清單,配置參數(shù)那欄寫得很模糊:“用途呢?”
“項(xiàng)目啟動(dòng)會(huì)要用,具體問他去?!崩蟿⒋蛄藗€(gè)哈欠,“反正有佟主管簽字,你走流程就行?!?br>我看了眼佟海的簽名,蓋上文件夾:“行?!?br>樓上會(huì)議室里,曲遠(yuǎn)正在做項(xiàng)目啟動(dòng)匯報(bào)。
我從監(jiān)控室的屏幕上看見客戶方技術(shù)總監(jiān)方巖坐在第一排,對(duì)著PPT皺著眉。曲遠(yuǎn)講到架構(gòu)設(shè)計(jì)時(shí),方巖抬起手。
“這個(gè)緩存層的調(diào)度邏輯能詳細(xì)說說嗎?”
曲遠(yuǎn)笑了笑:“方總是擔(dān)心性能問題?我們做過壓力測(cè)試,完全沒問題?!?br>“測(cè)試報(bào)告能提供一份嗎?”
“當(dāng)然,會(huì)后發(fā)您郵箱?!?br>方巖點(diǎn)點(diǎn)頭,沒再說話,但眉頭一直沒松開。
監(jiān)控畫面切到佟海那邊,他正在跟客戶方運(yùn)營(yíng)總監(jiān)碰杯:“方案絕對(duì)靠譜,三個(gè)月保證交付?!?br>我關(guān)掉監(jiān)控,在采購單上簽了字。
第二天上午,曲遠(yuǎn)下樓找我。
“寧川,那個(gè)緩存節(jié)點(diǎn)的參數(shù)配置,你還記得嗎?”他把筆記本電腦放在我桌上,屏幕上是一串代碼。
我掃了一眼,那正是當(dāng)初我測(cè)試時(shí)觸發(fā)死鎖的那段邏輯:“不記得了,我已經(jīng)不負(fù)責(zé)技術(shù)。”
“就簡(jiǎn)單問問。”他往旁邊湊了湊,“你看這個(gè)超時(shí)閾值,設(shè)置多少合適?”
“這得看并發(fā)量。”我合上他的電腦,“但我現(xiàn)在真幫不了你,不在項(xiàng)目組,不方便干涉?!?br>他愣了一下:“至于嗎?”
“規(guī)矩?!蔽抑噶酥笁ι系谋C軛l例,“佟主管簽的調(diào)令上寫得很清楚?!?br>曲遠(yuǎn)盯著我看了三秒,拿起電腦:“行,那我自己研究?!?br>他走到門口又回頭:“對(duì)了,你當(dāng)初做方案時(shí)用的那批測(cè)試服務(wù)器還在嗎?”
“報(bào)廢了。”我翻出設(shè)備清單,“上個(gè)月剛處理完,都在這?!?br>他接過清單看了看,沒說話,轉(zhuǎn)身上樓。
下午四點(diǎn),我收到項(xiàng)目組的設(shè)備申請(qǐng)。
曲遠(yuǎn)要組建新團(tuán)隊(duì),申請(qǐng)了十個(gè)工位和配套設(shè)備。附件里是人員名單,我一個(gè)個(gè)看過去——八個(gè)應(yīng)屆生,兩個(gè)實(shí)習(xí)生。
我敲了敲老劉桌子:“曲工這團(tuán)隊(duì)配置,佟主管知道嗎?”
“知道啊,佟主管說讓年輕人多鍛煉?!崩蟿㈩^也不抬,“怎么了?”
“沒事?!蔽以谏暾?qǐng)單上簽字,“就是好奇。”
老劉這才抬頭:“你是不是還惦記著項(xiàng)目組?我跟你說,都調(diào)出來了就別多想,安心在后勤待著?!?br>我笑了笑,把文件放進(jìn)待辦箱。
晚上加班時(shí),技術(shù)部的老張來庫房找東西。
“你真待得?。俊彼ぞ呦?,“曲遠(yuǎn)那個(gè)團(tuán)隊(duì),全是新人,連個(gè)能帶隊(duì)的都沒有?!?br>“不關(guān)我事?!?br>“得了吧?!崩蠌堈业铰萁z刀,直起腰,“上周他來找我?guī)兔Γ艺f手頭有項(xiàng)目走不開。其實(shí)就是不想趟這渾水?!?br>我抬頭看他。
“你不覺得奇怪嗎?”老張壓低聲音,“部門里有經(jīng)驗(yàn)的,沒一個(gè)愿意進(jìn)他項(xiàng)目組。”
“可能是大家真的忙?!?br>“忙個(gè)屁?!崩蠌埮镜仃P(guān)上工具箱,“都不傻,那方案一看就有問題,誰愿意跟著背鍋?”
他走到門口又補(bǔ)了句:“就曲遠(yuǎn)自己看不出來,還以為撿著寶了。”
庫房重新安靜下來。
我打開電腦,調(diào)出上個(gè)月的設(shè)備報(bào)廢記錄。那批服務(wù)器的硬盤已經(jīng)做過消磁處理,測(cè)試數(shù)據(jù)徹底清空,但報(bào)廢單上的時(shí)間戳很清楚——就在佟海簽人事調(diào)動(dòng)的那天下午。
我把報(bào)廢單打印出來,放進(jìn)文件夾,標(biāo)簽上寫:“項(xiàng)目初稿相關(guān),已銷毀?!?br>3
周例會(huì)上,曲遠(yuǎn)把進(jìn)度報(bào)告投在屏幕上。
我坐在最后一排,桌上放著剛簽完的設(shè)備維保合同。會(huì)議室在十樓,我是上來送文件的,佟海讓我旁聽。
“底層算法實(shí)現(xiàn)遇到了點(diǎn)小問題?!鼻h(yuǎn)翻頁,“但不影響整體進(jìn)度?!?br>方巖放下筆:“什么問題?”
“就是……調(diào)度邏輯有些地方需要優(yōu)化?!鼻h(yuǎn)的遙控筆轉(zhuǎn)得更快了,“技術(shù)細(xì)節(jié)比較復(fù)雜,我們內(nèi)部在攻克。”
“能具體說說嗎?”方巖往前傾了傾身子,“我們技術(shù)團(tuán)隊(duì)可以配合排查。”
“不用?!鼻h(yuǎn)笑得有點(diǎn)僵,“下周例會(huì)我會(huì)提供完整測(cè)試數(shù)據(jù)?!?br>方巖盯著他看了三秒,在筆記本上寫了什么。
佟海打圓場(chǎng):“方總放心,曲遠(yuǎn)是我們部門最優(yōu)秀的技術(shù)骨干,肯定沒問題?!?br>散會(huì)后,佟海把我叫到茶水間。
“寧川,你跟曲遠(yuǎn)關(guān)系不錯(cuò)。”他往紙杯里倒咖啡,“他那邊遇到點(diǎn)技術(shù)難題,你幫幫忙?”
“我現(xiàn)在不負(fù)責(zé)技術(shù)?!?br>“就指點(diǎn)指點(diǎn),又不讓你回項(xiàng)目組。”佟海把咖啡遞給我,“大家都是老同事?!?br>我接過杯子,沒喝:“佟主管,當(dāng)初調(diào)崗申請(qǐng)是我自己寫的,上面寫得很清楚——技術(shù)能力不足?!?br>佟海的笑容頓了頓。
“既然能力不足,就不該誤導(dǎo)項(xiàng)目組?!蔽野芽Х确旁谧郎?,“這是對(duì)項(xiàng)目負(fù)責(zé)?!?br>他盯著我看了五秒,端起咖啡轉(zhuǎn)身走了。
第二天,曲遠(yuǎn)的采購申請(qǐng)又來了。
這次是追加預(yù)算,要新買三臺(tái)高配服務(wù)器。我看了眼金額,比常規(guī)采購貴了一倍。
“這配置有點(diǎn)高啊?!蔽夷弥暾?qǐng)單去找老劉,“是客戶要求的?”
“不知道,反正佟主管簽字了?!崩蟿⒖戳搜?,“你覺得有問題?”
“倒也不是?!蔽野褑巫臃畔?,“就是好奇為什么突然要追加?!?br>老劉湊過來,壓低聲音:“我聽說曲遠(yuǎn)找了外包團(tuán)隊(duì)幫忙,這錢可能是付給他們的?!?br>“外包?”
“對(duì)啊,技術(shù)搞不定嘛?!崩蟿⑵财沧欤安贿^這事別往外說,佟主管不想讓客戶知道?!?br>我點(diǎn)點(diǎn)頭,在申請(qǐng)單上簽了字。
下午,財(cái)務(wù)部的小王來找我對(duì)賬。
“寧川,這個(gè)設(shè)備采購數(shù)量,你確認(rèn)一下?!彼亚鍐瓮七^來,“曲工項(xiàng)目組報(bào)了十五臺(tái)服務(wù)器,但我看庫房入庫記錄只有十二臺(tái)?!?br>我調(diào)出入庫單,數(shù)字確實(shí)對(duì)不上:“可能是分批采購?”
“那也得有記錄啊?!毙⊥醢欀?,“要不你問問曲工?”
“行,我問問?!?br>我拿著清單上樓,曲遠(yuǎn)辦公室的門關(guān)著,里面?zhèn)鱽頎?zhēng)吵聲。
“這個(gè)邏輯根本跑不通!”一個(gè)陌生男聲,“你給的原始代碼就有問題?!?br>“那你們想辦法改啊?!鼻h(yuǎn)的聲音有點(diǎn)急,“我付錢不就是讓你們解決問題的嗎?”
“改不了,底層架構(gòu)有缺陷,我們只能在表面修補(bǔ)?!?br>“那就修補(bǔ)!反正演示的時(shí)候能跑起來就行?!?br>我敲了敲門,里面瞬間安靜。
曲遠(yuǎn)開門,看見是我,松了口氣:“寧川,什么事?”
“設(shè)備數(shù)量對(duì)不上?!蔽野亚鍐芜f給他,“財(cái)務(wù)讓確認(rèn)一下。”
他接過去掃了一眼:“哦,有三臺(tái)我放在家里測(cè)試了,過兩天拉回來。”
“那需要辦個(gè)出庫手續(xù)。”
“行行行,我明天補(bǔ)?!彼亚鍐稳亟o我,準(zhǔn)備關(guān)門。
我往辦公室里看了一眼,一個(gè)戴眼鏡的男人坐在電腦前,屏幕上密密麻麻的代碼,紅色報(bào)錯(cuò)占了半個(gè)屏幕。
曲遠(yuǎn)順著我的視線看過去,擋住我的視線:“那個(gè),是我請(qǐng)的顧問。”
“哦?!蔽尹c(diǎn)點(diǎn)頭,“那不打擾了?!?br>下樓時(shí),手機(jī)響了。老張發(fā)來消息:“聽說曲遠(yuǎn)找外包了?”
我回了個(gè)問號(hào)。
“技術(shù)部都傳遍了,說他根本搞不定那套算法,花了兩倍預(yù)算找人救場(chǎng)?!崩蠌堄职l(fā)來一條,“我就說那方案有問題吧?!?br>我沒回復(fù),把手機(jī)揣進(jìn)兜里。
晚上十點(diǎn),我還在庫房整理設(shè)備臺(tái)賬。電腦右下角彈出提醒——曲遠(yuǎn)項(xiàng)目組的服務(wù)器觸發(fā)了三次硬件故障預(yù)警。
我調(diào)出監(jiān)控日志,三臺(tái)服務(wù)器在過去一周里反復(fù)重啟,每次都是計(jì)算負(fù)載過高導(dǎo)致的過熱保護(hù)。
但設(shè)備維修記錄里,沒有任何報(bào)修信息。
我把預(yù)警報(bào)告打印出來,放進(jìn)文件夾,標(biāo)簽上寫:“曲遠(yuǎn)項(xiàng)目,設(shè)備異常,未報(bào)修?!?br>然后關(guān)掉電腦,鎖好庫房門,上樓去參加曲遠(yuǎn)的慶功宴。
他請(qǐng)全部門吃飯,包了酒店最大的包廂。我到的時(shí)候,佟海正在敬酒。
“曲遠(yuǎn)這小子,是我?guī)С鰜淼??!辟『еh(yuǎn)肩膀,“以后前途不可限量。”
曲遠(yuǎn)端著酒杯沖大家笑,目光掃到我時(shí)停了一下。
我舉起杯子,他走過來碰了碰:“寧川,謝謝你那天退出項(xiàng)目組?!?br>“客氣?!?br>“真的?!彼攘丝诰疲耙皇悄阕尦鑫恢?,我也沒這個(gè)機(jī)會(huì)?!?br>我笑了笑,把酒一飲而盡。
手機(jī)在兜里震動(dòng),是設(shè)備供應(yīng)商發(fā)來的故障詳細(xì)報(bào)告。我看了一眼,關(guān)掉屏幕,給曲遠(yuǎn)又敬了杯酒。
4
驗(yàn)收會(huì)那天,會(huì)議室坐滿了人。
我在門口簽完設(shè)備交接單,準(zhǔn)備離開時(shí),佟海叫住我:“寧川,進(jìn)來旁聽一下。”
客戶方來了五個(gè)人,方巖坐在中間,面前擺著一臺(tái)筆記本。
曲遠(yuǎn)站在投影前,西裝熨得筆挺:“各位,今天演示用的是完全模擬真實(shí)業(yè)務(wù)場(chǎng)景的測(cè)試數(shù)據(jù)……”
“等一下?!狈綆r打斷他,“能用我們提供的真實(shí)數(shù)據(jù)測(cè)試嗎?”
曲遠(yuǎn)手一頓:“方總,真實(shí)數(shù)據(jù)涉及商業(yè)機(jī)密,按合同流程,需要先簽保密協(xié)議?!?br>“保密協(xié)議我們帶了?!狈綆r從包里拿出文件,“現(xiàn)在可以簽。”
會(huì)議室安靜了三秒。
佟??攘艘宦暎骸胺娇?,驗(yàn)收流程是先看演示,通過后再做深度測(cè)試……”
“我們想先看看真實(shí)數(shù)據(jù)跑起來什么效果。”方巖看著曲遠(yuǎn),“可以嗎?”
曲遠(yuǎn)的遙控筆在手里轉(zhuǎn)了兩圈:“當(dāng)然可以,但真實(shí)數(shù)據(jù)接入需要配置環(huán)境,今天時(shí)間可能來不及——”
“那就改天?!狈綆r合上筆記本。
“別啊?!笨蛻舴竭\(yùn)營(yíng)總監(jiān)打圓場(chǎng),“曲工的演示我們先看看,技術(shù)細(xì)節(jié)后面慢慢調(diào)。”
方巖看了他一眼,沒再說話。
曲遠(yuǎn)松了口氣,按下遙控器。
大屏幕上,系統(tǒng)界面流暢運(yùn)行,各項(xiàng)數(shù)據(jù)指標(biāo)完美達(dá)標(biāo)。他提前準(zhǔn)備的演示數(shù)據(jù)跑得很漂亮,沒有一個(gè)報(bào)錯(cuò)。
“響應(yīng)時(shí)間控制在50毫秒以內(nèi)。”曲遠(yuǎn)指著監(jiān)控圖表,“完全符合合同要求。”
運(yùn)營(yíng)總監(jiān)點(diǎn)點(diǎn)頭:“不錯(cuò)?!?br>方巖盯著屏幕,突然問:“這個(gè)并發(fā)量是多少?”
“3000?!?br>“如果是5000呢?”
曲遠(yuǎn)笑了笑:“系統(tǒng)設(shè)計(jì)上限是8000,5000完全沒問題?!?br>“那能現(xiàn)場(chǎng)測(cè)一下嗎?”
“這個(gè)……”曲遠(yuǎn)看了眼佟海,“需要調(diào)整測(cè)試參數(shù),怕影響演示流程。”
“就簡(jiǎn)單跑一下?!狈綆r靠在椅背上,“我們想看看極限情況?!?br>佟海站起來:“方總,今**要是功能驗(yàn)收,性能壓測(cè)可以放在后期聯(lián)調(diào)——”
“沒關(guān)系,我們不著急?!边\(yùn)營(yíng)總監(jiān)擺擺手,“曲工,試試吧。”
曲遠(yuǎn)手指在鍵盤上頓了頓,輸入?yún)?shù),回車。
監(jiān)控圖表的曲線開始攀升,響應(yīng)時(shí)間從50毫秒漲到120毫秒,然后是350毫秒。
方巖盯著屏幕沒說話。
曲遠(yuǎn)額頭開始冒汗:“可能是測(cè)試環(huán)境網(wǎng)絡(luò)波動(dòng),實(shí)際部署不會(huì)有這個(gè)問題?!?br>話音剛落,屏幕右下角彈出一串報(bào)錯(cuò)信息。
會(huì)議室里的空氣凝固了。
曲遠(yuǎn)飛快地關(guān)掉報(bào)錯(cuò)窗口:“這是測(cè)試數(shù)據(jù)的問題,我們用模擬數(shù)據(jù)重新跑一遍——”
“不用了?!狈綆r合上筆記本,“我們看到想看的了?!?br>佟海臉色變了:“方總,這只是小問題,不影響系統(tǒng)整體——”
“佟主管。”運(yùn)營(yíng)總監(jiān)打斷他,“功能演示我們很滿意,就按流程驗(yàn)收吧。技術(shù)細(xì)節(jié)讓他們后面對(duì)接?!?br>他看了眼方巖,方巖沉默了三秒,拿起筆在驗(yàn)收單上簽了字。
但那支筆在紙上停頓了足足三秒。
散會(huì)后,我在走廊里碰到方巖。
他在打電話,聲音壓得很低:“記錄下來,所有異常數(shù)據(jù)都留檔……對(duì),我知道運(yùn)營(yíng)部急著上線,但技術(shù)風(fēng)險(xiǎn)必須報(bào)備……”
我從他身邊經(jīng)過,他抬頭看了我一眼,掛掉電話。
“你是后勤部的?”
“是?!?br>“這個(gè)項(xiàng)目你參與了嗎?”
“沒有,我只負(fù)責(zé)設(shè)備采購。”
方巖盯著我看了兩秒,點(diǎn)點(diǎn)頭,轉(zhuǎn)身離開。
下午,公司發(fā)了通報(bào)——項(xiàng)目通過驗(yàn)收,曲遠(yuǎn)獲得年度創(chuàng)新獎(jiǎng)。
人事部的公示欄里,曲遠(yuǎn)的晉升公告貼在最上面:主管級(jí),工資翻倍,獨(dú)立團(tuán)隊(duì),預(yù)算三百萬。
我站在公示欄前看了一會(huì)兒,手機(jī)響了。
老劉發(fā)來消息:“你那邊還有廢舊服務(wù)器嗎?曲遠(yuǎn)項(xiàng)目組又壞了兩臺(tái),讓我問問能不能臨時(shí)調(diào)配。”
我回復(fù):“庫房沒有現(xiàn)貨,需要走采購流程?!?br>“那算了,他說不著急,等系統(tǒng)正式上線再說?!?br>我收起手機(jī),又看了眼公示欄。
曲遠(yuǎn)的照片貼在那里,西裝筆挺,笑得很燦爛。
照片下方,佟海的簽名和公司公章并排蓋著。
我轉(zhuǎn)身下樓,經(jīng)過十樓時(shí),看見曲遠(yuǎn)辦公室里燈還亮著。
他坐在電腦前,屏幕上是那串熟悉的代碼,紅色報(bào)錯(cuò)還在閃爍。
我沒停留,直接回了庫房。
桌上放著設(shè)備故障統(tǒng)計(jì)表,曲遠(yuǎn)項(xiàng)目組的服務(wù)器,一周內(nèi)報(bào)錯(cuò)記錄已經(jīng)累積到47條。
但維修申請(qǐng)欄,依然是空白。
我把統(tǒng)計(jì)表放進(jìn)文件夾,標(biāo)簽上寫:“曲遠(yuǎn)項(xiàng)目,設(shè)備持續(xù)異常,未報(bào)修?!?br>然后鎖好柜子,關(guān)燈下班。
電梯門合上前,我最后看了一眼十樓。
曲遠(yuǎn)辦公室的燈還亮著。
5
****在公司禮堂舉行,**臺(tái)上擺著水晶獎(jiǎng)杯。
我坐在后排,手里的設(shè)備維保合同還沒簽完。佟海在臺(tái)上講話,聲音通過音響傳遍整個(gè)大廳。
“曲遠(yuǎn)同志用三個(gè)月時(shí)間,完成了行業(yè)內(nèi)首創(chuàng)的動(dòng)態(tài)負(fù)載系統(tǒng)?!彼D了頓,“這是我們部門未來的領(lǐng)**物。”
掌聲響起來,曲遠(yuǎn)從臺(tái)下走上去。
獎(jiǎng)杯遞到他手里時(shí),追光燈打在他臉上。他舉起獎(jiǎng)杯,鏡頭拉近,我看見獎(jiǎng)杯底座上刻著字:“年度創(chuàng)新獎(jiǎng)·曲遠(yuǎn)”。
人事部張經(jīng)理接過話筒:“根據(jù)公司決議,曲遠(yuǎn)同志晉升為技術(shù)主管,即日生效。”
她念完任命書,大屏幕上出現(xiàn)曲遠(yuǎn)的簡(jiǎn)歷。工資那欄,數(shù)字直接翻了一倍。
我旁邊的老劉碰了碰我:“看見沒?這才叫前途?!?br>“嗯。”
“你當(dāng)初要是不退出,說不定現(xiàn)在站臺(tái)上的就是你。”
我沒接話,在合同最后一頁簽了字。
散會(huì)后,曲遠(yuǎn)在公司門口攔住所有人:“晚上君悅大酒店,我請(qǐng)客?!?br>包廂里,佟海坐在主位。曲遠(yuǎn)給他倒酒,杯子滿得快溢出來。
“佟主管,沒有您就沒有我今天?!?br>“客氣?!辟『6似鸨?,“你有能力,我只是給了個(gè)機(jī)會(huì)。”
兩人碰杯,一飲而盡。
曲遠(yuǎn)轉(zhuǎn)向我這桌,坐到我旁邊:“寧川,你怎么坐這么遠(yuǎn)?”
“習(xí)慣了?!?br>他給我倒酒:“說真的,當(dāng)初你退出我還挺意外的?!?br>“是嗎?”
“對(duì)啊?!彼攘丝?,“不過現(xiàn)在想想,有些人就是不適合做技術(shù)。你看你現(xiàn)在在后勤,不也挺好?”
旁邊幾個(gè)人笑起來。
我端起杯子,跟他碰了碰:“曲主管說得對(duì)?!?br>他拍了拍我肩膀,起身去敬別桌。
老張湊過來,壓低聲音:“你聽出來沒?這是在踩你?!?br>“聽出來了?!?br>“你就這么忍了?”
我放下酒杯:“不然呢?”
老張搖搖頭,沒再說話。
第二天,總部來了通知。
韋松副總在述職會(huì)上聽了佟海的匯報(bào),當(dāng)場(chǎng)拍板:“這個(gè)項(xiàng)目模式推廣到其他客戶,部門預(yù)算追加30%?!?br>佟?;貋砗筮B開三個(gè)會(huì),每個(gè)會(huì)都提到曲遠(yuǎn)的名字。
“技術(shù)創(chuàng)新要成為常態(tài)?!彼钢队吧系募軜?gòu)圖,“曲遠(yuǎn)的方案就是標(biāo)桿?!?br>下午,我收到設(shè)備部轉(zhuǎn)來的報(bào)修單。
曲遠(yuǎn)項(xiàng)目組又有三臺(tái)服務(wù)器出故障,這次是硬件過熱導(dǎo)致主板燒毀。供應(yīng)商在備注里寫:“建議全面檢測(cè),疑似計(jì)算負(fù)載異常?!?br>我拿著報(bào)修單去找老劉:“這個(gè)需要曲主管確認(rèn)。”
“他現(xiàn)在忙著呢。”老劉看都不看,“你先走流程,報(bào)廢就報(bào)廢,反正預(yù)算多?!?br>“可是供應(yīng)商說——”
“供應(yīng)商想多賣設(shè)備唄?!崩蟿⒋驍辔?,“別想太多,簽字就行?!?br>我盯著報(bào)修單看了三秒,在最下面簽了名。
然后把單子復(fù)印一份,放進(jìn)文件夾。標(biāo)簽上寫:“曲遠(yuǎn)項(xiàng)目,第三批設(shè)備故障,主板燒毀。”
晚上加班時(shí),手機(jī)震動(dòng)。
曲遠(yuǎn)發(fā)了條朋友圈,配圖是他和佟海的合影,兩人手里拿著酒杯,**是君悅酒店的logo。
項(xiàng)目驗(yàn)收那天,客戶技術(shù)總監(jiān)方巖盯著那個(gè)我三個(gè)月前就標(biāo)注過“高并發(fā)會(huì)死鎖”的緩存節(jié)點(diǎn),皺著眉簽了字。
系統(tǒng)上線不到一個(gè)月,月底結(jié)算時(shí)并發(fā)量沖到8900,底層算法直接崩潰,客戶損失280萬。
曲遠(yuǎn)在會(huì)議室里腿都在抖,外包團(tuán)隊(duì)發(fā)來的聊天記錄清清楚楚:“底層代碼我們看不懂,是你給的,我們只能表面修補(bǔ)?!?br>客戶方總經(jīng)理看著解約函,冷冷地說:“480萬賠償,三天內(nèi)到賬,否則法庭見?!?br>1
曲遠(yuǎn)站在投影前,遙控筆在手里轉(zhuǎn)得飛快。
“這套方案的核心是動(dòng)態(tài)負(fù)載均衡,大家看這個(gè)架構(gòu)圖——”
我盯著那張PPT,筆尖在本子上頓住。那個(gè)三層調(diào)度模型,包括中間那個(gè)多余的緩存節(jié)點(diǎn),跟我三個(gè)月前扔進(jìn)碎紙機(jī)的初稿一模一樣。連那個(gè)會(huì)導(dǎo)致高并發(fā)時(shí)數(shù)據(jù)倒灌的設(shè)計(jì)缺陷都原封不動(dòng)。
“曲遠(yuǎn)這方案思路很新啊。”佟??吭谝伪成?,手指敲著桌面。
“熬了三個(gè)通宵?!鼻h(yuǎn)按下翻頁鍵,“底層算法我做了優(yōu)化,比常規(guī)方案效率提升40%?!?br>我在筆記本上記下時(shí)間:11月19日10:47。
旁邊的老張湊過來看了眼投影,小聲說:“這個(gè)緩存層架構(gòu),好像在哪見過?”
曲遠(yuǎn)聽見了,笑著接話:“可能是行業(yè)通用思路吧,但實(shí)現(xiàn)方式完全不同。”
佟海打斷我們:“別討論細(xì)節(jié)了,客戶那邊催得緊。”他看向曲遠(yuǎn),“你有把握三個(gè)月交付?”
“沒問題?!鼻h(yuǎn)把遙控筆往桌上一放,“技術(shù)框架已經(jīng)跑通,就差開發(fā)實(shí)現(xiàn)?!?br>跑通。我差點(diǎn)笑出聲。那個(gè)緩存節(jié)點(diǎn)在并發(fā)超過5000次時(shí)會(huì)觸發(fā)死鎖,我當(dāng)初測(cè)了整整一周才定位到問題,最后選擇推翻重來。
“那就這么定了?!辟『U酒饋恚扒h(yuǎn),這個(gè)項(xiàng)目你來負(fù)責(zé),成了直接給你報(bào)晉升。”
會(huì)議室里響起零星的掌聲。曲遠(yuǎn)沖大家點(diǎn)頭致意,目光掃過我時(shí)停了半秒。
我合上筆記本,舉手:“佟主管,我能說句話嗎?”
“寧川你說?!?br>“我申請(qǐng)退出項(xiàng)目組。”
空氣凝固了兩秒。
佟海皺眉:“為什么?”
“個(gè)人原因,想調(diào)去后勤部門?!蔽野压P記本推到桌子中間,“技術(shù)崗不太適合我?!?br>曲遠(yuǎn)眼里閃過一絲意外,很快被笑意掩蓋:“寧川,不至于吧?大家一起做項(xiàng)目——”
“我考慮清楚了。”我打斷他,看向佟海,“人事調(diào)動(dòng)需要您簽字?!?br>佟海盯著我看了五秒,點(diǎn)頭:“行,下午來我辦公室辦手續(xù)?!?br>散會(huì)后,曲遠(yuǎn)追到走廊里:“兄弟,真不是因?yàn)榉桨副徊杉{你不高興吧?”
“不是?!蔽野聪码娞萱I,“恭喜你?!?br>電梯門打開,他攔住我:“要不晚上一起吃飯?我請(qǐng)客?!?br>“不了,要整理工位?!?br>電梯門在他臉前合上。鏡面反光里,我看見他站在原地,遙控筆還在手里轉(zhuǎn)。
下午三點(diǎn),佟海在調(diào)動(dòng)單上簽字。
“你確定?”他把筆帽蓋回去,“后勤部就是打雜,以你的資歷——”
“確定?!蔽医舆^文件,翻到第二頁交接清單,“我負(fù)責(zé)的技術(shù)文檔怎么處理?”
“按規(guī)定銷毀。”佟??戳搜垭娔X屏幕,“保密條例你知道的?!?br>我拿起他桌上的筆,在清單備注欄寫:“項(xiàng)目初稿相關(guān)文檔及測(cè)試數(shù)據(jù)已按保密規(guī)定銷毀,服務(wù)器已提交設(shè)備部報(bào)廢?!比缓蟀压P遞給他:“麻煩您簽字確認(rèn)。”
佟海掃了一眼,刷刷簽上名字。
“還有事嗎?”
“沒了?!蔽夷闷鹞募爸x謝佟主管這三年照顧?!?br>他擺擺手,我轉(zhuǎn)身出門時(shí),聽見他在打電話:“對(duì),曲遠(yuǎn)的項(xiàng)目定下來了,你準(zhǔn)備一下晉升推薦表……”
晚上七點(diǎn),曲遠(yuǎn)發(fā)了條朋友圈。
配圖是佟海簽字的晉升推薦表,文字只有四個(gè)字:“天道酬勤?!?br>點(diǎn)贊99+,評(píng)論區(qū)全是恭喜。
我給他點(diǎn)了個(gè)贊,然后放下手機(jī),繼續(xù)往紙箱里裝東西。工位上的榮譽(yù)證書、馬克杯、鍵盤,三十年的痕跡塞進(jìn)一個(gè)破紙箱剛剛好。
“還沒走?”曲遠(yuǎn)端著咖啡走過來,看了眼紙箱,“這些不要了?”
“后勤部有新工位。”我把最后一個(gè)相框放進(jìn)去。
他把咖啡放在我桌上:“別多想,以后有機(jī)會(huì)還能調(diào)回來?!?br>“不用。”我拎起紙箱,“我挺適合后勤的。”
他拍了拍我肩膀:“那行,以后有事隨時(shí)找我?!?br>我笑著點(diǎn)頭,目送他走進(jìn)項(xiàng)目組獨(dú)立辦公室。透過玻璃墻,能看見他把晉升推薦表貼在白板上,然后拍照。
紙箱有點(diǎn)重,我走到茶水間門口時(shí)停下來歇了歇。里面?zhèn)鱽韮蓚€(gè)實(shí)習(xí)生的聲音。
“曲工這方案真牛,佟主管當(dāng)場(chǎng)就拍板了?!?br>“人家有實(shí)力啊,聽說熬了三個(gè)通宵?!?br>“寧川那個(gè)老員工不是也在做方案嗎?怎么突然調(diào)走了?”
“肯定是競(jìng)爭(zhēng)不過唄,技術(shù)不行還死撐著。”
我推開門,兩個(gè)人立刻閉嘴。
“借過?!蔽野鸭埾浞旁诘厣希恿吮?,一口氣喝完,然后重新拎起箱子走出去。
身后傳來壓低的笑聲。
2
曲遠(yuǎn)的獨(dú)立辦公室在十樓,玻璃墻上貼著項(xiàng)目啟動(dòng)倒計(jì)時(shí)。
我現(xiàn)在的工位在負(fù)一層,設(shè)備庫房旁邊,沒窗戶,常年開著日光燈。桌上堆著各部門送來的設(shè)備采購申請(qǐng)表,最上面那張是曲遠(yuǎn)簽的——項(xiàng)目組要新增五臺(tái)服務(wù)器。
“寧川,這個(gè)批一下。”后勤部老劉把文件夾扔過來,“曲工那邊急著用。”
我翻開采購清單,配置參數(shù)那欄寫得很模糊:“用途呢?”
“項(xiàng)目啟動(dòng)會(huì)要用,具體問他去?!崩蟿⒋蛄藗€(gè)哈欠,“反正有佟主管簽字,你走流程就行?!?br>我看了眼佟海的簽名,蓋上文件夾:“行?!?br>樓上會(huì)議室里,曲遠(yuǎn)正在做項(xiàng)目啟動(dòng)匯報(bào)。
我從監(jiān)控室的屏幕上看見客戶方技術(shù)總監(jiān)方巖坐在第一排,對(duì)著PPT皺著眉。曲遠(yuǎn)講到架構(gòu)設(shè)計(jì)時(shí),方巖抬起手。
“這個(gè)緩存層的調(diào)度邏輯能詳細(xì)說說嗎?”
曲遠(yuǎn)笑了笑:“方總是擔(dān)心性能問題?我們做過壓力測(cè)試,完全沒問題?!?br>“測(cè)試報(bào)告能提供一份嗎?”
“當(dāng)然,會(huì)后發(fā)您郵箱?!?br>方巖點(diǎn)點(diǎn)頭,沒再說話,但眉頭一直沒松開。
監(jiān)控畫面切到佟海那邊,他正在跟客戶方運(yùn)營(yíng)總監(jiān)碰杯:“方案絕對(duì)靠譜,三個(gè)月保證交付?!?br>我關(guān)掉監(jiān)控,在采購單上簽了字。
第二天上午,曲遠(yuǎn)下樓找我。
“寧川,那個(gè)緩存節(jié)點(diǎn)的參數(shù)配置,你還記得嗎?”他把筆記本電腦放在我桌上,屏幕上是一串代碼。
我掃了一眼,那正是當(dāng)初我測(cè)試時(shí)觸發(fā)死鎖的那段邏輯:“不記得了,我已經(jīng)不負(fù)責(zé)技術(shù)。”
“就簡(jiǎn)單問問。”他往旁邊湊了湊,“你看這個(gè)超時(shí)閾值,設(shè)置多少合適?”
“這得看并發(fā)量。”我合上他的電腦,“但我現(xiàn)在真幫不了你,不在項(xiàng)目組,不方便干涉?!?br>他愣了一下:“至于嗎?”
“規(guī)矩?!蔽抑噶酥笁ι系谋C軛l例,“佟主管簽的調(diào)令上寫得很清楚?!?br>曲遠(yuǎn)盯著我看了三秒,拿起電腦:“行,那我自己研究?!?br>他走到門口又回頭:“對(duì)了,你當(dāng)初做方案時(shí)用的那批測(cè)試服務(wù)器還在嗎?”
“報(bào)廢了。”我翻出設(shè)備清單,“上個(gè)月剛處理完,都在這?!?br>他接過清單看了看,沒說話,轉(zhuǎn)身上樓。
下午四點(diǎn),我收到項(xiàng)目組的設(shè)備申請(qǐng)。
曲遠(yuǎn)要組建新團(tuán)隊(duì),申請(qǐng)了十個(gè)工位和配套設(shè)備。附件里是人員名單,我一個(gè)個(gè)看過去——八個(gè)應(yīng)屆生,兩個(gè)實(shí)習(xí)生。
我敲了敲老劉桌子:“曲工這團(tuán)隊(duì)配置,佟主管知道嗎?”
“知道啊,佟主管說讓年輕人多鍛煉?!崩蟿㈩^也不抬,“怎么了?”
“沒事?!蔽以谏暾?qǐng)單上簽字,“就是好奇。”
老劉這才抬頭:“你是不是還惦記著項(xiàng)目組?我跟你說,都調(diào)出來了就別多想,安心在后勤待著?!?br>我笑了笑,把文件放進(jìn)待辦箱。
晚上加班時(shí),技術(shù)部的老張來庫房找東西。
“你真待得?。俊彼ぞ呦?,“曲遠(yuǎn)那個(gè)團(tuán)隊(duì),全是新人,連個(gè)能帶隊(duì)的都沒有?!?br>“不關(guān)我事?!?br>“得了吧?!崩蠌堈业铰萁z刀,直起腰,“上周他來找我?guī)兔Γ艺f手頭有項(xiàng)目走不開。其實(shí)就是不想趟這渾水?!?br>我抬頭看他。
“你不覺得奇怪嗎?”老張壓低聲音,“部門里有經(jīng)驗(yàn)的,沒一個(gè)愿意進(jìn)他項(xiàng)目組。”
“可能是大家真的忙?!?br>“忙個(gè)屁?!崩蠌埮镜仃P(guān)上工具箱,“都不傻,那方案一看就有問題,誰愿意跟著背鍋?”
他走到門口又補(bǔ)了句:“就曲遠(yuǎn)自己看不出來,還以為撿著寶了。”
庫房重新安靜下來。
我打開電腦,調(diào)出上個(gè)月的設(shè)備報(bào)廢記錄。那批服務(wù)器的硬盤已經(jīng)做過消磁處理,測(cè)試數(shù)據(jù)徹底清空,但報(bào)廢單上的時(shí)間戳很清楚——就在佟海簽人事調(diào)動(dòng)的那天下午。
我把報(bào)廢單打印出來,放進(jìn)文件夾,標(biāo)簽上寫:“項(xiàng)目初稿相關(guān),已銷毀?!?br>3
周例會(huì)上,曲遠(yuǎn)把進(jìn)度報(bào)告投在屏幕上。
我坐在最后一排,桌上放著剛簽完的設(shè)備維保合同。會(huì)議室在十樓,我是上來送文件的,佟海讓我旁聽。
“底層算法實(shí)現(xiàn)遇到了點(diǎn)小問題?!鼻h(yuǎn)翻頁,“但不影響整體進(jìn)度?!?br>方巖放下筆:“什么問題?”
“就是……調(diào)度邏輯有些地方需要優(yōu)化?!鼻h(yuǎn)的遙控筆轉(zhuǎn)得更快了,“技術(shù)細(xì)節(jié)比較復(fù)雜,我們內(nèi)部在攻克。”
“能具體說說嗎?”方巖往前傾了傾身子,“我們技術(shù)團(tuán)隊(duì)可以配合排查。”
“不用?!鼻h(yuǎn)笑得有點(diǎn)僵,“下周例會(huì)我會(huì)提供完整測(cè)試數(shù)據(jù)?!?br>方巖盯著他看了三秒,在筆記本上寫了什么。
佟海打圓場(chǎng):“方總放心,曲遠(yuǎn)是我們部門最優(yōu)秀的技術(shù)骨干,肯定沒問題?!?br>散會(huì)后,佟海把我叫到茶水間。
“寧川,你跟曲遠(yuǎn)關(guān)系不錯(cuò)。”他往紙杯里倒咖啡,“他那邊遇到點(diǎn)技術(shù)難題,你幫幫忙?”
“我現(xiàn)在不負(fù)責(zé)技術(shù)?!?br>“就指點(diǎn)指點(diǎn),又不讓你回項(xiàng)目組。”佟海把咖啡遞給我,“大家都是老同事?!?br>我接過杯子,沒喝:“佟主管,當(dāng)初調(diào)崗申請(qǐng)是我自己寫的,上面寫得很清楚——技術(shù)能力不足?!?br>佟海的笑容頓了頓。
“既然能力不足,就不該誤導(dǎo)項(xiàng)目組?!蔽野芽Х确旁谧郎?,“這是對(duì)項(xiàng)目負(fù)責(zé)?!?br>他盯著我看了五秒,端起咖啡轉(zhuǎn)身走了。
第二天,曲遠(yuǎn)的采購申請(qǐng)又來了。
這次是追加預(yù)算,要新買三臺(tái)高配服務(wù)器。我看了眼金額,比常規(guī)采購貴了一倍。
“這配置有點(diǎn)高啊?!蔽夷弥暾?qǐng)單去找老劉,“是客戶要求的?”
“不知道,反正佟主管簽字了?!崩蟿⒖戳搜?,“你覺得有問題?”
“倒也不是?!蔽野褑巫臃畔?,“就是好奇為什么突然要追加?!?br>老劉湊過來,壓低聲音:“我聽說曲遠(yuǎn)找了外包團(tuán)隊(duì)幫忙,這錢可能是付給他們的?!?br>“外包?”
“對(duì)啊,技術(shù)搞不定嘛?!崩蟿⑵财沧欤安贿^這事別往外說,佟主管不想讓客戶知道?!?br>我點(diǎn)點(diǎn)頭,在申請(qǐng)單上簽了字。
下午,財(cái)務(wù)部的小王來找我對(duì)賬。
“寧川,這個(gè)設(shè)備采購數(shù)量,你確認(rèn)一下?!彼亚鍐瓮七^來,“曲工項(xiàng)目組報(bào)了十五臺(tái)服務(wù)器,但我看庫房入庫記錄只有十二臺(tái)?!?br>我調(diào)出入庫單,數(shù)字確實(shí)對(duì)不上:“可能是分批采購?”
“那也得有記錄啊?!毙⊥醢欀?,“要不你問問曲工?”
“行,我問問?!?br>我拿著清單上樓,曲遠(yuǎn)辦公室的門關(guān)著,里面?zhèn)鱽頎?zhēng)吵聲。
“這個(gè)邏輯根本跑不通!”一個(gè)陌生男聲,“你給的原始代碼就有問題?!?br>“那你們想辦法改啊?!鼻h(yuǎn)的聲音有點(diǎn)急,“我付錢不就是讓你們解決問題的嗎?”
“改不了,底層架構(gòu)有缺陷,我們只能在表面修補(bǔ)?!?br>“那就修補(bǔ)!反正演示的時(shí)候能跑起來就行?!?br>我敲了敲門,里面瞬間安靜。
曲遠(yuǎn)開門,看見是我,松了口氣:“寧川,什么事?”
“設(shè)備數(shù)量對(duì)不上?!蔽野亚鍐芜f給他,“財(cái)務(wù)讓確認(rèn)一下。”
他接過去掃了一眼:“哦,有三臺(tái)我放在家里測(cè)試了,過兩天拉回來。”
“那需要辦個(gè)出庫手續(xù)。”
“行行行,我明天補(bǔ)?!彼亚鍐稳亟o我,準(zhǔn)備關(guān)門。
我往辦公室里看了一眼,一個(gè)戴眼鏡的男人坐在電腦前,屏幕上密密麻麻的代碼,紅色報(bào)錯(cuò)占了半個(gè)屏幕。
曲遠(yuǎn)順著我的視線看過去,擋住我的視線:“那個(gè),是我請(qǐng)的顧問。”
“哦?!蔽尹c(diǎn)點(diǎn)頭,“那不打擾了?!?br>下樓時(shí),手機(jī)響了。老張發(fā)來消息:“聽說曲遠(yuǎn)找外包了?”
我回了個(gè)問號(hào)。
“技術(shù)部都傳遍了,說他根本搞不定那套算法,花了兩倍預(yù)算找人救場(chǎng)?!崩蠌堄职l(fā)來一條,“我就說那方案有問題吧?!?br>我沒回復(fù),把手機(jī)揣進(jìn)兜里。
晚上十點(diǎn),我還在庫房整理設(shè)備臺(tái)賬。電腦右下角彈出提醒——曲遠(yuǎn)項(xiàng)目組的服務(wù)器觸發(fā)了三次硬件故障預(yù)警。
我調(diào)出監(jiān)控日志,三臺(tái)服務(wù)器在過去一周里反復(fù)重啟,每次都是計(jì)算負(fù)載過高導(dǎo)致的過熱保護(hù)。
但設(shè)備維修記錄里,沒有任何報(bào)修信息。
我把預(yù)警報(bào)告打印出來,放進(jìn)文件夾,標(biāo)簽上寫:“曲遠(yuǎn)項(xiàng)目,設(shè)備異常,未報(bào)修?!?br>然后關(guān)掉電腦,鎖好庫房門,上樓去參加曲遠(yuǎn)的慶功宴。
他請(qǐng)全部門吃飯,包了酒店最大的包廂。我到的時(shí)候,佟海正在敬酒。
“曲遠(yuǎn)這小子,是我?guī)С鰜淼??!辟『еh(yuǎn)肩膀,“以后前途不可限量。”
曲遠(yuǎn)端著酒杯沖大家笑,目光掃到我時(shí)停了一下。
我舉起杯子,他走過來碰了碰:“寧川,謝謝你那天退出項(xiàng)目組?!?br>“客氣?!?br>“真的?!彼攘丝诰疲耙皇悄阕尦鑫恢?,我也沒這個(gè)機(jī)會(huì)?!?br>我笑了笑,把酒一飲而盡。
手機(jī)在兜里震動(dòng),是設(shè)備供應(yīng)商發(fā)來的故障詳細(xì)報(bào)告。我看了一眼,關(guān)掉屏幕,給曲遠(yuǎn)又敬了杯酒。
4
驗(yàn)收會(huì)那天,會(huì)議室坐滿了人。
我在門口簽完設(shè)備交接單,準(zhǔn)備離開時(shí),佟海叫住我:“寧川,進(jìn)來旁聽一下。”
客戶方來了五個(gè)人,方巖坐在中間,面前擺著一臺(tái)筆記本。
曲遠(yuǎn)站在投影前,西裝熨得筆挺:“各位,今天演示用的是完全模擬真實(shí)業(yè)務(wù)場(chǎng)景的測(cè)試數(shù)據(jù)……”
“等一下?!狈綆r打斷他,“能用我們提供的真實(shí)數(shù)據(jù)測(cè)試嗎?”
曲遠(yuǎn)手一頓:“方總,真實(shí)數(shù)據(jù)涉及商業(yè)機(jī)密,按合同流程,需要先簽保密協(xié)議?!?br>“保密協(xié)議我們帶了?!狈綆r從包里拿出文件,“現(xiàn)在可以簽。”
會(huì)議室安靜了三秒。
佟??攘艘宦暎骸胺娇?,驗(yàn)收流程是先看演示,通過后再做深度測(cè)試……”
“我們想先看看真實(shí)數(shù)據(jù)跑起來什么效果。”方巖看著曲遠(yuǎn),“可以嗎?”
曲遠(yuǎn)的遙控筆在手里轉(zhuǎn)了兩圈:“當(dāng)然可以,但真實(shí)數(shù)據(jù)接入需要配置環(huán)境,今天時(shí)間可能來不及——”
“那就改天?!狈綆r合上筆記本。
“別啊?!笨蛻舴竭\(yùn)營(yíng)總監(jiān)打圓場(chǎng),“曲工的演示我們先看看,技術(shù)細(xì)節(jié)后面慢慢調(diào)。”
方巖看了他一眼,沒再說話。
曲遠(yuǎn)松了口氣,按下遙控器。
大屏幕上,系統(tǒng)界面流暢運(yùn)行,各項(xiàng)數(shù)據(jù)指標(biāo)完美達(dá)標(biāo)。他提前準(zhǔn)備的演示數(shù)據(jù)跑得很漂亮,沒有一個(gè)報(bào)錯(cuò)。
“響應(yīng)時(shí)間控制在50毫秒以內(nèi)。”曲遠(yuǎn)指著監(jiān)控圖表,“完全符合合同要求。”
運(yùn)營(yíng)總監(jiān)點(diǎn)點(diǎn)頭:“不錯(cuò)?!?br>方巖盯著屏幕,突然問:“這個(gè)并發(fā)量是多少?”
“3000?!?br>“如果是5000呢?”
曲遠(yuǎn)笑了笑:“系統(tǒng)設(shè)計(jì)上限是8000,5000完全沒問題?!?br>“那能現(xiàn)場(chǎng)測(cè)一下嗎?”
“這個(gè)……”曲遠(yuǎn)看了眼佟海,“需要調(diào)整測(cè)試參數(shù),怕影響演示流程。”
“就簡(jiǎn)單跑一下?!狈綆r靠在椅背上,“我們想看看極限情況?!?br>佟海站起來:“方總,今**要是功能驗(yàn)收,性能壓測(cè)可以放在后期聯(lián)調(diào)——”
“沒關(guān)系,我們不著急?!边\(yùn)營(yíng)總監(jiān)擺擺手,“曲工,試試吧。”
曲遠(yuǎn)手指在鍵盤上頓了頓,輸入?yún)?shù),回車。
監(jiān)控圖表的曲線開始攀升,響應(yīng)時(shí)間從50毫秒漲到120毫秒,然后是350毫秒。
方巖盯著屏幕沒說話。
曲遠(yuǎn)額頭開始冒汗:“可能是測(cè)試環(huán)境網(wǎng)絡(luò)波動(dòng),實(shí)際部署不會(huì)有這個(gè)問題?!?br>話音剛落,屏幕右下角彈出一串報(bào)錯(cuò)信息。
會(huì)議室里的空氣凝固了。
曲遠(yuǎn)飛快地關(guān)掉報(bào)錯(cuò)窗口:“這是測(cè)試數(shù)據(jù)的問題,我們用模擬數(shù)據(jù)重新跑一遍——”
“不用了?!狈綆r合上筆記本,“我們看到想看的了?!?br>佟海臉色變了:“方總,這只是小問題,不影響系統(tǒng)整體——”
“佟主管。”運(yùn)營(yíng)總監(jiān)打斷他,“功能演示我們很滿意,就按流程驗(yàn)收吧。技術(shù)細(xì)節(jié)讓他們后面對(duì)接?!?br>他看了眼方巖,方巖沉默了三秒,拿起筆在驗(yàn)收單上簽了字。
但那支筆在紙上停頓了足足三秒。
散會(huì)后,我在走廊里碰到方巖。
他在打電話,聲音壓得很低:“記錄下來,所有異常數(shù)據(jù)都留檔……對(duì),我知道運(yùn)營(yíng)部急著上線,但技術(shù)風(fēng)險(xiǎn)必須報(bào)備……”
我從他身邊經(jīng)過,他抬頭看了我一眼,掛掉電話。
“你是后勤部的?”
“是?!?br>“這個(gè)項(xiàng)目你參與了嗎?”
“沒有,我只負(fù)責(zé)設(shè)備采購。”
方巖盯著我看了兩秒,點(diǎn)點(diǎn)頭,轉(zhuǎn)身離開。
下午,公司發(fā)了通報(bào)——項(xiàng)目通過驗(yàn)收,曲遠(yuǎn)獲得年度創(chuàng)新獎(jiǎng)。
人事部的公示欄里,曲遠(yuǎn)的晉升公告貼在最上面:主管級(jí),工資翻倍,獨(dú)立團(tuán)隊(duì),預(yù)算三百萬。
我站在公示欄前看了一會(huì)兒,手機(jī)響了。
老劉發(fā)來消息:“你那邊還有廢舊服務(wù)器嗎?曲遠(yuǎn)項(xiàng)目組又壞了兩臺(tái),讓我問問能不能臨時(shí)調(diào)配。”
我回復(fù):“庫房沒有現(xiàn)貨,需要走采購流程?!?br>“那算了,他說不著急,等系統(tǒng)正式上線再說?!?br>我收起手機(jī),又看了眼公示欄。
曲遠(yuǎn)的照片貼在那里,西裝筆挺,笑得很燦爛。
照片下方,佟海的簽名和公司公章并排蓋著。
我轉(zhuǎn)身下樓,經(jīng)過十樓時(shí),看見曲遠(yuǎn)辦公室里燈還亮著。
他坐在電腦前,屏幕上是那串熟悉的代碼,紅色報(bào)錯(cuò)還在閃爍。
我沒停留,直接回了庫房。
桌上放著設(shè)備故障統(tǒng)計(jì)表,曲遠(yuǎn)項(xiàng)目組的服務(wù)器,一周內(nèi)報(bào)錯(cuò)記錄已經(jīng)累積到47條。
但維修申請(qǐng)欄,依然是空白。
我把統(tǒng)計(jì)表放進(jìn)文件夾,標(biāo)簽上寫:“曲遠(yuǎn)項(xiàng)目,設(shè)備持續(xù)異常,未報(bào)修?!?br>然后鎖好柜子,關(guān)燈下班。
電梯門合上前,我最后看了一眼十樓。
曲遠(yuǎn)辦公室的燈還亮著。
5
****在公司禮堂舉行,**臺(tái)上擺著水晶獎(jiǎng)杯。
我坐在后排,手里的設(shè)備維保合同還沒簽完。佟海在臺(tái)上講話,聲音通過音響傳遍整個(gè)大廳。
“曲遠(yuǎn)同志用三個(gè)月時(shí)間,完成了行業(yè)內(nèi)首創(chuàng)的動(dòng)態(tài)負(fù)載系統(tǒng)?!彼D了頓,“這是我們部門未來的領(lǐng)**物。”
掌聲響起來,曲遠(yuǎn)從臺(tái)下走上去。
獎(jiǎng)杯遞到他手里時(shí),追光燈打在他臉上。他舉起獎(jiǎng)杯,鏡頭拉近,我看見獎(jiǎng)杯底座上刻著字:“年度創(chuàng)新獎(jiǎng)·曲遠(yuǎn)”。
人事部張經(jīng)理接過話筒:“根據(jù)公司決議,曲遠(yuǎn)同志晉升為技術(shù)主管,即日生效。”
她念完任命書,大屏幕上出現(xiàn)曲遠(yuǎn)的簡(jiǎn)歷。工資那欄,數(shù)字直接翻了一倍。
我旁邊的老劉碰了碰我:“看見沒?這才叫前途?!?br>“嗯。”
“你當(dāng)初要是不退出,說不定現(xiàn)在站臺(tái)上的就是你。”
我沒接話,在合同最后一頁簽了字。
散會(huì)后,曲遠(yuǎn)在公司門口攔住所有人:“晚上君悅大酒店,我請(qǐng)客?!?br>包廂里,佟海坐在主位。曲遠(yuǎn)給他倒酒,杯子滿得快溢出來。
“佟主管,沒有您就沒有我今天?!?br>“客氣?!辟『6似鸨?,“你有能力,我只是給了個(gè)機(jī)會(huì)。”
兩人碰杯,一飲而盡。
曲遠(yuǎn)轉(zhuǎn)向我這桌,坐到我旁邊:“寧川,你怎么坐這么遠(yuǎn)?”
“習(xí)慣了?!?br>他給我倒酒:“說真的,當(dāng)初你退出我還挺意外的?!?br>“是嗎?”
“對(duì)啊?!彼攘丝?,“不過現(xiàn)在想想,有些人就是不適合做技術(shù)。你看你現(xiàn)在在后勤,不也挺好?”
旁邊幾個(gè)人笑起來。
我端起杯子,跟他碰了碰:“曲主管說得對(duì)?!?br>他拍了拍我肩膀,起身去敬別桌。
老張湊過來,壓低聲音:“你聽出來沒?這是在踩你?!?br>“聽出來了?!?br>“你就這么忍了?”
我放下酒杯:“不然呢?”
老張搖搖頭,沒再說話。
第二天,總部來了通知。
韋松副總在述職會(huì)上聽了佟海的匯報(bào),當(dāng)場(chǎng)拍板:“這個(gè)項(xiàng)目模式推廣到其他客戶,部門預(yù)算追加30%?!?br>佟?;貋砗筮B開三個(gè)會(huì),每個(gè)會(huì)都提到曲遠(yuǎn)的名字。
“技術(shù)創(chuàng)新要成為常態(tài)?!彼钢队吧系募軜?gòu)圖,“曲遠(yuǎn)的方案就是標(biāo)桿?!?br>下午,我收到設(shè)備部轉(zhuǎn)來的報(bào)修單。
曲遠(yuǎn)項(xiàng)目組又有三臺(tái)服務(wù)器出故障,這次是硬件過熱導(dǎo)致主板燒毀。供應(yīng)商在備注里寫:“建議全面檢測(cè),疑似計(jì)算負(fù)載異常?!?br>我拿著報(bào)修單去找老劉:“這個(gè)需要曲主管確認(rèn)。”
“他現(xiàn)在忙著呢。”老劉看都不看,“你先走流程,報(bào)廢就報(bào)廢,反正預(yù)算多?!?br>“可是供應(yīng)商說——”
“供應(yīng)商想多賣設(shè)備唄?!崩蟿⒋驍辔?,“別想太多,簽字就行?!?br>我盯著報(bào)修單看了三秒,在最下面簽了名。
然后把單子復(fù)印一份,放進(jìn)文件夾。標(biāo)簽上寫:“曲遠(yuǎn)項(xiàng)目,第三批設(shè)備故障,主板燒毀。”
晚上加班時(shí),手機(jī)震動(dòng)。
曲遠(yuǎn)發(fā)了條朋友圈,配圖是他和佟海的合影,兩人手里拿著酒杯,**是君悅酒店的logo。