創新業務孵化部在十九樓,整整一層。
與三樓技術部那種混雜著咖啡、汗水和熬夜氣味的氛圍完全不同,這裏的一切都透著“新”字——新裝修的淺灰色牆麵,新采購的人體工學椅,新鋪的靜音地毯,連空氣裏都是新傢俱特有的淡淡氣味。
林夕的工位在靠窗的位置,視野開闊,能俯瞰大半個科技園區。桌上放著一台最新款的MacBook Pro,旁邊立著部門歡迎信:“歡迎加入星雲科技最前沿的戰場。”
“林夕是吧?”一個紮著馬尾、穿著印花T恤的女生走過來,看起來比林夕還年輕,“我是產品經理小雨,負責‘星課堂’專案。以後咱們搭檔。”
“星課堂”是孵化部正在研發的線上教育產品,目標是為企業提供內部培訓解決方案。林夕被分配到這個專案,擔任後端開發。
“你的簡曆我看過了,在技術部做過積分係統?”小雨說話很快,像連珠炮,“那正好,我們需要處理高並發的課程報名和證書發放,你的經驗能用上。”
“我會盡力。”林夕說。
“不是盡力,是必須。”小雨笑了,露出兩顆虎牙,“咱們孵化部是賽馬機製,三個月一次評審,資料不達標就砍專案。壓力大,但機會也大——做成了,直接獨立成子公司,期權翻倍。”
她遞給林夕一份產品檔案:“這是‘星課堂’1.0的需求,下個月要上線。咱們後端組現在有三個人,你是第四個。組長叫老陳,下午開會你會見到。”
林夕接過檔案,很厚。他快速翻看:核心功能包括課程管理、使用者報名、視訊播放、線上測驗、證書生成……一個完整的教育SaaS平台。
“技術棧定了嗎?”
“微服務,Spring Cloud,MySQL分庫分表,Redis快取,訊息佇列用RabbitMQ。”小雨如數家珍,“架構師是外麵請的顧問,下週到位。咱們先按基礎版本開發。”
正說著,一個三十多歲、頭發稀疏的男人抱著膝上型電腦走過來:“新人?我是老陳,後端組長。電腦還順手嗎?”
“很順手,謝謝陳哥。”
“別客氣。咱們這兒不興叫哥叫姐的,直接叫名字。”老陳擺擺手,“下午兩點專案啟動會,你把環境搭好,程式碼倉庫地址我發你釘釘。”
林夕點頭,開始工作。開啟終端,git clone,maven構建,啟動本地服務……流程和他以前在技術部沒什麽不同,但這裏的一切都更快、更直接。
沒有曆史包袱,沒有陳年程式碼,沒有複雜的人事關係——至少表麵上是這樣。
中午,林夕去食堂吃飯。在三樓碰到了李工。
“調過去了?”李工端著餐盤在他對麵坐下,“動作真快。”
“今天第一天。”林夕說。
“也好,換個環境。”李工吃了口菜,壓低聲音,“你走之後,技術部開了個會。周凱宣佈要啟動‘積分係統三年重構計劃’,預算申請已經報上去了。”
林夕筷子停了一下:“什麽時候的事?”
“昨天下午,你調令剛生效。”李工笑了笑,“很巧,對吧?你一提要重構,他就啟動重構計劃。你走了,他來做。”
“計劃詳細嗎?”
“很詳細,分三期,總預算三百萬,週期一年。”李工看著林夕,“用的很多思路,跟你優化方案裏提的長期建議……很像。”
林夕明白了。周凱用他的方案,申請了預算,啟動了專案。但專案負責人不會是林夕,而是周凱自己。這樣既解決了問題(至少是開始解決),又拿到了功勞,還調走了可能繼續挖掘曆史的人。
一舉三得。
“張總監批準了?”林夕問。
“還沒,但在走流程。”李工頓了頓,“另外,有件事你可能不知道——張維投資部那邊,最近在接觸一家做分散式資料庫的初創公司,叫‘海量資料’。聽說技術很強,周凱也在對接。”
“對接什麽?”
“可能想引入新技術,替換掉現在的MySQL單點架構。”李工說,“如果成了,又是他的功勞。”
林夕沒說話,繼續吃飯。食堂的嘈雜聲裏,他能聽見自己的心跳聲,平穩而清晰。
《孫子兵法·九變篇》:“是故智者之慮,必雜於利害。”
聰明人考慮問題,一定會兼顧利與害。
周凱的每一步,都在最大化自己的“利”:調走潛在威脅,啟動能立功的專案,對接前沿技術。而且每一步都合情合理,無可指摘。
那麽“害”呢?隱藏在哪裏?
下午兩點,專案啟動會。
孵化部的會議室也是新的,智慧白板、無線投屏、環繞音響。參會的大概二十人,產品、設計、前後端、測試。老陳主持會議,小雨主講產品方案。
林夕坐在後排,聽著。他的任務很明確:負責使用者係統和證書發放模組。不算核心,但也不邊緣。
會開到一半,會議室門開了。一個穿著休閑西裝、戴著無框眼鏡的中年男人走進來,身後跟著孵化部的總監。
“打擾一下。”總監拍拍手,“給大家介紹,這是咱們請的技術顧問,楊帆老師。前阿裏P9,現在自己創業做技術諮詢。接下來三個月,他會指導‘星課堂’的技術架構。”
楊帆點點頭,笑容溫和:“大家繼續,我聽聽就好。”
會議繼續,但氣氛明顯變了。有人坐直了,有人偷偷整理衣領,有人發言時聲音更大了。
林夕注意到,楊帆聽得很認真,偶爾在筆記本上記點什麽。當小雨講到“證書發放要支援十萬級並發”時,他抬起頭:
“這個需求,技術方案有了嗎?”
所有人的目光看向林夕——他是這個模組的負責人。
林夕站起來:“初步方案是用Redis做快取,MySQL做持久化,通過訊息佇列非同步生成證書檔案,避免同步阻塞。”
“考慮過資料一致性嗎?”楊帆問,“比如使用者完成課程,但證書生成失敗?”
“考慮過。我們會記錄中間狀態,有補償任務定時重試。”
“十萬並發下,Redis可能成為瓶頸。考慮過分片嗎?”
“考慮過。計劃用Redis Cluster,按使用者ID分片。”
楊帆點點頭,沒再追問。會議繼續。
散會後,林夕收拾東西準備離開。楊帆走過來:“林夕是吧?你以前做過高並發係統?”
“在技術部做過會員積分係統,量級差不多。”
“嗯。”楊帆看著他,“下午有空嗎?我想跟你聊聊技術細節。”
“有的。”
“四點,小會議室。”
楊帆離開後,小雨湊過來,眼睛發亮:“可以啊,第一天就被大佬看中。楊帆可是真大神,他要是看上你,以後帶帶你,前途無量。”
林夕笑了笑,沒說話。他知道,這未必是好事。
下午四點,小會議室。
楊帆已經在了,麵前的膝上型電腦開著,螢幕上是一張架構圖。
“坐。”他指了指對麵,“我看過你的資料,普通二本畢業,在技術部待了一個月,然後調到這裏。為什麽?”
問題很直接。
“公司的人才培養計劃。”林夕用官方回答。
“培養計劃。”楊帆笑了,“我做了十幾年技術,大公司小公司都待過。‘培養計劃’通常有兩種:一種是真培養,一種是調離。你是哪種?”
林夕沒回答。
“沒關係,我不需要知道。”楊帆擺擺手,“我看重的是技術能力。你今天會上說的方案,基礎是對的,但不夠深入。我問你:如果證書生成依賴第三方服務——比如電子簽章平台,網路抖動或服務不可用,怎麽保證最終一致性?”
林夕思考了幾秒:“可以用本地事務表加訊息佇列,結合定時任務補償。”
“具體怎麽實現?”
“使用者完成課程時,先在資料庫插入一條‘待生成證書’記錄,狀態為pending。然後發訊息到佇列。消費者處理訊息,呼叫第三方服務。如果成功,更新狀態為success;如果失敗,保持pending,定時任務會定期掃描pending記錄重試。”
“重試策略呢?”
“指數退避,最多重試24小時。超過24小時轉人工。”
楊帆點點頭,在筆記本上記了幾筆:“理論過關。但實際編碼時,要注意事務邊界和冪等性。尤其是訊息佇列的消費者,一定要做好冪等,防止重複處理。”
“明白。”
“好。”楊帆合上電腦,“從明天開始,你除了負責你的模組,還要參與整體架構設計評審。我會帶你,但要求很高。能接受嗎?”
“能。”
“那就這樣。”楊帆站起身,“對了,周凱是你原來的領導?”
林夕心裏一緊:“是。”
“他昨天給我打了個電話,讓我多關照你。”楊帆說得很隨意,“說你是個好苗子,但年輕,需要打磨。”
林夕不知道該怎麽接話。
“我答應他會關照。”楊帆看著他,“但我的‘關照’可能跟他想的不一樣。我會用最高的標準要求你,做不好就批評,做得差就換人。你能接受嗎?”
“能。”
“那就好。”楊帆走到門口,又回頭,“還有,在公司裏,師徒關係是暫時的,技術能力是永久的。別把希望寄托在任何一個人身上,包括我。”
門關上了。
林夕一個人坐在會議室裏,很久。
窗外,夕陽開始西沉,給城市鍍上一層金邊。十九樓的高度,能看到很遠的地方——車流如織,高樓林立,更遠處是模糊的山影。
他想起周凱的電話,想起楊帆的話,想起那份調動申請表。
一切看似都很好:新環境,新專案,大佬指導,前途光明。
但他總覺得,有什麽東西在暗處移動。像棋盤上的棋子,在看不見的地方調整位置。
他開啟手機,看了一眼郵箱。
沒有新郵件。
陳啟明還沒回複。
也許不會回複了。
他把手機收起來,收拾東西準備下班。走出會議室時,路過孵化部的展示牆。牆上貼著各個專案的願景和裏程碑,“星課堂”那一欄還空著,等待填充。
在牆的最下方,貼著一行小字,是孵化部的口號:
“從零到一,改變發生。”
林夕盯著那行字,看了很久。
然後他轉身,走向電梯。
電梯從一樓上來,門開了。裏麵站著一個人,是張維。
兩人都愣了一下。
“調到孵化部了?”張維先開口,語氣平常。
“今天第一天。”
“挺好。楊帆是個狠角色,跟著他能學到真東西。”張維走進電梯,按了一樓,“周凱給你安排的?”
“算是。”
電梯開始下降。狹小的空間裏,隻有機械運轉的聲音。
“陳啟明回你郵件了嗎?”張維忽然問。
林夕心裏一震:“還沒。”
“他會的。”張維看著樓層數字跳動,“隻是需要時間。畢竟,有些人離開一個地方,不是不想回頭,而是不敢回頭。”
電梯到達一樓。門開了,大廳裏人來人往。
張維走出去,又回頭:“對了,海量資料那家公司,下週來做技術分享。你有空可以來聽聽,挺有意思的。”
“在哪兒?”
“三樓大會議室。”張維笑了笑,“不過你可能要請假,畢竟現在不歸技術部管了。”
他揮揮手,融入下班的人流。
林夕站在原地,看著他的背影消失。
海量資料。分散式資料庫。周凱在對接。
而張維特意告訴他這件事。
是提醒?是試探?還是別的什麽?
大廳的玻璃門外,城市的晚高峰已經開始。車燈匯成流動的河,霓虹漸次亮起。
林夕走出大樓,深吸了一口夏夜微熱的空氣。
第一天的結束。
也是某種開始的開始。
他回頭望了一眼大廈。十九樓的某個視窗還亮著燈——可能是楊帆,也可能是其他還在加班的人。
而三樓的燈光,他已經不屬於那裏了。
但有些東西,比如那327次衝突,比如那份加密的報告,比如周凱桌上列印的報表,它們不會因為他的離開而消失。
它們還在那裏,像埋在地下的種子,等待合適的溫度和水,就會發芽。
林夕走向地鐵站。揹包裏,那本《孫子兵法》隨著步伐輕輕晃動。
祖父的聲音在記憶裏響起,這一次是《兵法》裏最簡單也最深奧的一句:
“凡戰者,以正合,以奇勝。”
常規作戰,用正兵當敵;出奇製勝,用奇兵取勝。
他現在在“正”的位置——新專案,新團隊,按部就班成長。
那麽“奇”在哪裏?
在陳啟明可能回複的郵件裏?在張維看似隨意的提醒裏?在周凱正在推進的重構計劃裏?
他不知道。
但他知道,這場棋局,他還沒有出局。
他隻是換了一個位置,繼續觀察,繼續等待。
地鐵站入口的燈光照亮了台階,一級一級,向下延伸。
像通往地底的根係,也像通往未來的路。
林夕走進去,身影消失在光影交界處。
而城市的夜空上,第一顆星星亮了起來。
微弱,但堅定。