創(chuàng)作聲明:本文為虛構創(chuàng)作,請勿與現(xiàn)實關聯(lián)
職場就像一場沒有劇本的戲,每個人都在扮演著自己的角色。有人選擇圓滑處世,有人堅持原則底線。當真話和利益發(fā)生沖突時,說真話的人往往要付出代價。但命運有時候很奇怪,它會在你最意想不到的時候,讓那些曾經(jīng)被忽視的聲音變成最珍貴的答案。
“林昊,公司現(xiàn)在需要你。”
“許總,我負責老系統(tǒng)維護,新項目不歸我管。”
這樣的對話,在那個午后的辦公室里響起時,空氣仿佛都凝固了。
01
我叫林昊,今年35歲,在這家互聯(lián)網(wǎng)公司干了6年技術開發(fā)。說起來也算是老員工了,從一個普通程序員做到資深開發(fā)工程師,技術方面沒得說,就是性格有點直,該說的話總是要說,不該說的話也經(jīng)常忍不住。
那是去年十月份的事兒,公司接了個大單子,一家傳統(tǒng)零售企業(yè)要做電商轉型,系統(tǒng)要求兩個月內上線。項目獎金豐厚,許總高興得合不攏嘴,連續(xù)開了三天慶祝會。
許總是我們老板,45歲,銷售出身,能說會道,最擅長的就是畫餅和灌雞湯。在他眼里,技術就是工具,能用就行,沒必要搞得那么復雜。“客戶要的是結果,不是過程。”這是他的口頭禪。
技術這邊的頂頭上司是王峰,38歲,我的直屬領導。說實話,王峰技術一般,但特別會向上管理,許總說什么他都能接得住,從來不會唱反調。在公司待了5年,一路升到技術經(jīng)理,靠的就是這張嘴。
還有項目經(jīng)理劉敏,32歲,負責協(xié)調各部門。劉敏和王峰走得很近,經(jīng)常一起吃飯開會,有人說他們有一腿,但我覺得更像是利益同盟。
十月二十三號,技術評審會。會議室里坐了十幾個人,許總親自主持,王峰做技術匯報,我作為核心開發(fā)人員參與討論。
“按照客戶需求,系統(tǒng)要支持同時在線用戶數(shù)十萬級別,日訂單處理量百萬級。”王峰指著PPT說道,“我們的方案是基于現(xiàn)有架構快速開發(fā),預計兩個月內完成所有功能模塊。”
我聽著覺得不對勁。十萬并發(fā),百萬日單,這可不是小數(shù)目。我舉手說:“王經(jīng)理,我看了一下技術方案,有幾個問題想確認一下。”
“你說。”王峰顯然不太高興被打斷。
“按現(xiàn)在這個架構設計,在高并發(fā)情況下,數(shù)據(jù)庫的讀寫會出現(xiàn)競態(tài)條件,可能導致數(shù)據(jù)不一致。特別是訂單和庫存模塊,一旦出現(xiàn)臟數(shù)據(jù),后果很嚴重。”我拿出自己做的技術分析,“建議增加一個月時間,先把架構優(yōu)化一下,引入分布式鎖和消息隊列機制。”
會議室安靜了幾秒鐘。
王峰臉色有點難看:“林昊,你說的這些都是小問題,可以在上線后慢慢優(yōu)化。現(xiàn)在最重要的是按時交付,不能因為一些假設性的風險就拖延進度。”
“這不是假設性風險。”我堅持道,“高并發(fā)下的數(shù)據(jù)一致性是分布式系統(tǒng)的核心問題,如果不提前解決,上線后出問題就來不及了。”
許總不耐煩了:“林昊,客戶等不了三個月。他們的雙十一促銷已經(jīng)定了檔期,系統(tǒng)必須十二月底前上線。”
“許總,我理解時間緊迫,但技術債總是要還的。現(xiàn)在多花一個月,總比將來系統(tǒng)崩潰強。”我試圖解釋。
“你就是想太多!”許總擺擺手,“系統(tǒng)有那么容易崩潰嗎?我們公司做過多少項目了,哪次出過大問題?”
“可是以前的項目規(guī)模都沒這么大...”
“行了,就這么定了。”許總直接拍板,“按原計劃執(zhí)行,兩個月內上線。王峰,你們技術部門回去好好規(guī)劃一下,別總是找問題,要學會解決問題。”
我還想再說什么,王峰已經(jīng)站起來:“好的許總,我們保證按時完成任務。”
散會后,王峰把我單獨留下:“林昊,你剛才在會上唱反調是什么意思?”
“我不是唱反調,我是在提技術風險。”
“什么技術風險?你說的那些問題我們遇到了再解決不行嗎?現(xiàn)在許總都拍板了,你還在這兒較什么勁?”
“王哥,咱們做技術的,總得對代碼負責吧。”
“對代碼負責?”王峰冷笑一聲,“你先對公司負責再說。林昊,我提醒你一句,公司要的是能解決問題的人,不是制造問題的人。你好好想想自己的定位。”
那天晚上,劉敏找到我,語重心長地說:“林昊,你技術沒問題,但情商需要提高。王經(jīng)理也是為了你好,許總那個人你又不是不了解,最討厭下屬質疑他的決定。今天這事兒就算了,以后注意點。”
我苦笑:“敏姐,我真的不是故意唱反調,只是覺得這個風險太大了。”
“風險是有,但也不一定就會出問題對不對?而且就算出了問題,還有我們在呢,總能解決的。”劉敏拍拍我肩膀,“別想那么多,好好干活就行了。”
可我心里還是不踏實。回到家,我又仔細分析了一遍技術方案,越看越覺得問題嚴重。高并發(fā)下的數(shù)據(jù)競態(tài)、緩存穿透、數(shù)據(jù)庫連接池耗盡...這些都是定時炸彈,隨時可能爆炸。
我寫了一份詳細的技術分析報告,把可能出現(xiàn)的問題和解決方案都列了出來,第二天一早發(fā)給了王峰。
王峰看都沒看,直接回復:“林昊,我昨天說的話你沒聽明白嗎?專心干好自己的活,別胡思亂想。”
那一刻我知道,這事兒沒戲了。
02
果然,從第二周開始,我就感受到了微妙的變化。
首先是工作安排。原本我是核心開發(fā)組的骨干,負責系統(tǒng)架構設計和關鍵模塊開發(fā)。現(xiàn)在王峰把我調到了邊緣崗位,去維護公司的老系統(tǒng)——一套用了五年的內部辦公平臺。
“林昊,老系統(tǒng)最近有些小毛病,你去負責維護一下。”王峰說得很輕松,好像這是什么重要任務似的。
“王哥,那新項目...”
“新項目有小李他們就夠了,你先把老系統(tǒng)搞穩(wěn)定。”
小李是去年剛畢業(yè)的實習生,技術還不如我一半。讓他負責核心開發(fā),讓我去修bug,這擺明了是打壓。
接下來是會議。以前的技術例會、項目討論會,都不再通知我參加。我主動問起,王峰總是說:“沒什么重要的,就是例行匯報。”或者“你專心搞老系統(tǒng),新項目的事兒不用操心。”
最過分的是年終考核。我辛辛苦苦干了一年,技術能力和工作態(tài)度都沒問題,結果考核等級是“需要改進”。
王峰在考核反饋中寫道:“林昊同志技術能力尚可,但團隊協(xié)作能力有待提升,經(jīng)常在會議中提出不合時宜的意見,影響團隊決策效率。建議加強大局觀念培養(yǎng),提高配合意識。”
看到這個評語,我氣得想當場辭職。但理智告訴我不能沖動,房貸還有十五年,孩子還要上學,家里老人身體不好,我承受不起失業(yè)的后果。
辦公位置也被調整了。原來我坐在核心開發(fā)區(qū),現(xiàn)在被安排到角落里,連網(wǎng)絡都不太穩(wěn)定。新來的實習生都比我受重視,經(jīng)常有人來請教問題,而我就像個隱形人。
最難受的是同事們的態(tài)度變化。以前大家關系還不錯,現(xiàn)在都開始疏遠我。
小張是我?guī)н^的新人,以前叫我林哥,現(xiàn)在見面都不怎么打招呼。有一次我主動跟他聊天,他支支吾吾地說:“林哥,我覺得你...有時候確實太較真了。公司的決定肯定是有道理的,我們執(zhí)行就好了,干嘛非要提那么多意見呢?”
小劉更直接:“林昊,你是不是跟王經(jīng)理有什么矛盾啊?感覺他對你意見挺大的。你要不找個機會道個歉?大家都是打工的,何必搞得這么僵呢?”
連食堂阿姨都察覺出不對勁:“小林,你最近怎么老是一個人吃飯啊?以前不是經(jīng)常和同事一起來嗎?”
我苦笑著搖搖頭,不知道該怎么解釋。
三個月過去了,我就像公司里的空氣,存在但沒人注意。新項目進展得熱火朝天,每天都有各種會議討論,各種慶祝小聚,但這一切都與我無關。
我的工作內容變成了修修補補老系統(tǒng)的小毛病,偶爾幫助新人解決一些基礎問題。這些事情確實需要人做,但對于一個有六年經(jīng)驗的資深工程師來說,實在是大材小用。
不過我也有自己的想法。既然要我維護老系統(tǒng),那就把它維護到最好。我重新梳理了整個系統(tǒng)架構,優(yōu)化了數(shù)據(jù)庫查詢,修復了幾十個歷史遺留bug,還寫了詳細的維護文檔。
老系統(tǒng)從來沒有這么穩(wěn)定過,響應速度提升了30%,故障率降到了幾乎為零。但沒人關心,甚至沒人知道我做了這些工作。
我的心態(tài)也在慢慢變化。從最初的憤怒,到后來的失落,再到現(xiàn)在的麻木。我開始明白什么叫“職場現(xiàn)實”,什么叫“大局觀念”。
有時候我也會想,是不是真的是我錯了?是不是我確實太較真,不懂變通?但每當想起那個技術方案存在的問題,我還是覺得自己當初的堅持是對的。
時間長了,我學會了在這種邊緣化的環(huán)境中生存。上班按時到崗,完成分配的任務,下班準時回家,不多說一句話,不多管一件事。
同事們對我的評價也從“太較真”變成了“佛系”。有人說我“看開了”,有人說我“成熟了”。只有我自己知道,這不是成熟,是認命。
新項目那邊偶爾會傳來一些消息。系統(tǒng)開發(fā)得挺順利,功能模塊基本完成,準備進入測試階段。王峰在項目會議上意氣風發(fā),許總也經(jīng)常夸獎技術團隊執(zhí)行力強。
看起來,沒有我的參與,一切都在按計劃進行。也許我真的是多余的,也許我當初的擔心完全是杞人憂天。
直到十二月底,系統(tǒng)正式上線的那一天。
03
十二月二十八號,系統(tǒng)正式上線。
許總在全公司大會上宣布:“經(jīng)過我們技術團隊兩個月的努力,新的電商系統(tǒng)今天正式上線!這是我們公司技術實力的體現(xiàn),也是我們團隊執(zhí)行力的證明!”
臺下掌聲雷動,王峰春風得意,劉敏笑容滿面。我坐在角落里,沒有鼓掌,心情復雜。
系統(tǒng)上線的前兩個月運行得還算平穩(wěn)。客戶的日常業(yè)務量不大,偶爾有些小問題也能快速解決。王峰在每周例會上都要匯報系統(tǒng)運行情況,數(shù)據(jù)看起來很漂亮。
許總滿意極了:“看看,我就說技術沒那么復雜。王峰,你們團隊干得不錯,年終獎翻倍!”
我繼續(xù)在角落里維護老系統(tǒng),偶爾聽到新項目組傳來的笑聲和討論聲,心里五味雜陳。也許真的是我想多了,也許那些技術風險根本不會出現(xiàn)。
但命運喜歡開玩笑。
二月十四號,年后復工促銷活動,客戶準備了大規(guī)模的營銷活動,預計流量會比平時高出十倍。
上午十點,促銷活動正式開始。
我正在調試老系統(tǒng)的一個小功能,突然聽到新項目組那邊傳來急促的喊聲:
“系統(tǒng)響應很慢!”
“數(shù)據(jù)庫連接數(shù)快滿了!”
“有用戶反映訂單異常!”
王峰的聲音蓋過了所有人:“別慌,先查一下具體問題在哪里。”
我抬頭看了一眼,王峰正在緊張地盯著監(jiān)控大屏,小李在瘋狂地敲鍵盤,劉敏拿著電話不停地安撫客戶。
十一點,情況更加惡化。
“數(shù)據(jù)庫鎖等待超時!”
“訂單表出現(xiàn)大量重復數(shù)據(jù)!”
“庫存數(shù)據(jù)不對,有商品顯示負庫存!”
王峰的額頭開始冒汗:“趕緊回滾到昨天的備份!”
“回滾失敗!數(shù)據(jù)關聯(lián)太復雜!”
“那就重啟數(shù)據(jù)庫!”
“重啟也不行,一啟動就死鎖!”
我聽著這些熟悉的問題描述,心里很清楚是什么情況。高并發(fā)下的數(shù)據(jù)競態(tài)條件,正是我三個月前預警的那些問題。但我沒有過去幫忙,也沒有說話,繼續(xù)低頭干自己的活。
許總匆匆趕到技術部:“怎么回事?客戶那邊快要瘋了!”
王峰滿頭大汗:“許總,系統(tǒng)遇到了一些技術問題,我們正在緊急處理。”
“什么技術問題?不是說系統(tǒng)很穩(wěn)定嗎?”
“是...是并發(fā)量太大了,超出了我們的預期。”
“那趕緊解決啊!”
“我們在想辦法,可能需要一些時間。”
許總急得直跺腳:“客戶的促銷活動正在進行,每分鐘損失都是幾萬塊!你們到底行不行?”
下午兩點,系統(tǒng)徹底崩潰。
數(shù)據(jù)庫出現(xiàn)了大量臟數(shù)據(jù),訂單金額錯亂,部分客戶被重復扣費,庫存數(shù)據(jù)完全混亂。最嚴重的是,系統(tǒng)無法重啟,一啟動就死機。
客戶的客服電話被打爆了,投訴如潮水般涌來。社交媒體上開始有用戶抱怨,說這家公司的系統(tǒng)有問題,購物體驗極差。
許總徹底急眼了:“王峰,你給我想辦法!今天必須把系統(tǒng)修好!”
王峰已經(jīng)慌了神:“許總,這個問題比較復雜,可能需要外請專家...”
“那就趕緊請!不管花多少錢!”
晚上七點,外聘的技術專家到了公司。一個看起來五十多歲的老工程師,據(jù)說是某知名互聯(lián)網(wǎng)公司的前技術總監(jiān)。
專家查看了系統(tǒng)架構和代碼,皺著眉頭說:“這個問題很嚴重,是典型的分布式系統(tǒng)數(shù)據(jù)一致性問題。你們的架構設計存在根本性缺陷,高并發(fā)下必然出現(xiàn)競態(tài)條件。”
王峰臉色蒼白:“那...那怎么辦?”
“短期內很難徹底解決,需要重新設計數(shù)據(jù)庫架構,引入分布式鎖機制。至少需要一周時間。”
許總一聽就炸了:“一周?客戶等得了一周嗎?”
專家無奈地搖搖頭:“這種問題本來應該在設計階段就考慮到的,現(xiàn)在出了問題再修復,就是這么復雜。”
那一瞬間,我感受到了周圍投來的目光。有些同事想起了我三個月前的預警,開始竊竊私語。
王峰注意到了這些目光,臉色更加難看。
晚上九點,系統(tǒng)依然癱瘓。客戶那邊已經(jīng)下了最后通牒:明天中午前不恢復系統(tǒng),就解除合作協(xié)議,并要求賠償損失。
許總召集了緊急會議,所有管理層都參加,包括我。這是三個月來我第一次參加這種級別的會議。
“現(xiàn)在情況你們都清楚了,”許總沉著臉說,“客戶給了我們最后期限,如果明天中午前解決不了問題,我們不僅要失去這個大客戶,還要面臨巨額賠償。大家都想想辦法。”
銷售總監(jiān)說:“客戶那邊我再去溝通,看能不能爭取更多時間。”
運營總監(jiān)說:“我聯(lián)系媒體公關,先控制一下輿論影響。”
技術總監(jiān)王峰支支吾吾:“技術方面...我們會繼續(xù)努力,爭取早日修復。”
會議室里一片沉默。
這時,人事總監(jiān)開口了:“許總,要不要查一下當初的技術評審記錄?看看是不是有什么遺漏的地方?”
許總點點頭:“好,你去查一下所有技術文檔,看看有沒有什么線索。”
散會后,我回到自己的工位繼續(xù)維護老系統(tǒng),心情已經(jīng)完全平靜了。該來的總會來,該發(fā)生的總會發(fā)生。
深夜十一點,公司里還燈火通明,技術團隊在拼命搶修,銷售團隊在瘋狂溝通,管理層在焦頭爛額地開會。
只有我在角落里,安靜地寫著代碼,就像這場風暴與我無關一樣。
04
第二天上午十點,人事總監(jiān)拿著一摞文件匆匆走進許總辦公室。
“許總,我查到了一些很重要的東西。”
許總抬起疲憊的雙眼:“什么東西?”
“這是三個月前技術評審會的會議記錄,還有...林昊當時提交的技術分析報告。”
許總接過文件,開始仔細閱讀。越看臉色越難看,最后整個人都呆住了。