禮拜四,阿偉一推開咖啡廳的門就直奔我這桌,手上還握著手機。
「先跟你報告一個好消息!」他一屁股坐下來,眼神發亮,「記得上個月我跟老黃那個重構專案嗎?我們真的成功了!」
我還沒來得及恭喜他,他就繼續說:「你知道嗎,現在系統穩定多了,那個隨時會爆炸的核心服務終於不會讓我半夜被叫起來救火了。更神奇的是,老黃現在會主動幫我 review code 耶,完全不會再丟那種『請重寫』的冷血 comment了。」
聽起來確實是個大進步。上次見面時,阿偉還在抱怨老黃的完美主義讓他快瘋了。
「那你今天怎麼看起來有點...複雜?」我點了兩杯咖啡。
阿偉的表情瞬間垮了下來。
「唉,老楊昨天突然跟我說,要我在下禮拜三的跨部門季度報告上,代表技術團隊匯報這次重構的成果。」
「這不是好事嗎?可以讓高層看見你和老黃共同的成果啊。」
「好事個屁!」阿偉翻了個白眼,聲音有點激動,「我又不是業務,憑什麼要我上台表演?我就想安安靜靜寫我的Code,現在卻要我變成那種會做簡報、會講故事的人。這根本不是我啊。」
他停了一下,又補充:「而且我昨天晚上很認真地寫了簡報,把整個重構的來龍去脈都寫進去了。結果你知道老楊怎麼回我嗎?」
阿偉拿出手機,念著螢幕上的訊息:「『阿偉,你寫得太深了。請用高層聽得懂的語言再寫一遍。』」
他抬起頭,滿臉困惑:「我不是一直在學習怎麼展現自己的價值嗎?我把我們做的技術工作都實實在在地寫出來了,為什麼還說聽不懂?」
咖啡送上來了,阿偉還在氣頭上,用力攪著咖啡。
「阿偉,你有想過到時候台下會坐著誰嗎?」
「嗯...應該是高層主管、業務部門、行銷部門這些人吧。還有財務那邊的人。」阿偉說著,但語氣聽起來像在背書。
「OK,那我問你,如果現在老黃坐在你對面,你要怎麼跟他解釋這次重構?」
阿偉想也不想:「直接拿 code 給他看啊,講架構設計、解耦方式、還有我們怎麼處理資料庫的connection pool...」
「那如果是老楊呢?」
「嗯...」阿偉頓了一下,「我會說我們解決了什麼技術風險,花了多少時間,現在系統穩定性提高了多少...」
「很好,那如果是你媽呢?」
阿偉愣住了:「我媽?我媽又聽不懂程式設計...」
「對啊,」我笑了笑,「那你會怎麼跟她說?」
阿偉搔搔頭,有點不好意思:「我大概會說...嗯...我把一個很容易壞掉的東西修好了,現在它不會隨便壞掉,也不會半夜叫我起來加班了?」
「現在回到下禮拜三,」我說,「台下那些高層主管,你覺得他們比較像老黃、老楊,還是你媽?」
阿偉盯著咖啡,沉默了好一會兒。
「...比較像我媽。」他小聲說道,然後抬起頭,「但是這樣不會太...太不專業嗎?我現在是工程師要去做簡報耶,又不是平常在跟鄰居瞎扯淡。」
我看得出阿偉心裡在掙扎。
「阿偉,你覺得什麼叫做『聽得懂』?」
「就是...知道我在說什麼啊。」
「你確定嗎?」我問,「如果我現在跟你說『我今天做了一個很棒的投資組合再平衡』,你聽得懂嗎?」
阿偉皺眉:「呃...聽得懂個屁,我又不懂投資。」
「但如果我說『我今天把一些賠錢的股票賣掉,買了一些比較穩的股票,這樣我的錢比較不會一夕之間蒸發掉』呢?」
「這個我就懂了。」阿偉點頭,然後突然停住,「等等...你是想說...」
「對,兩句話講的是同一件事,但第二句話可以讓你立刻知道『為什麼這件事對我有意義』。」
阿偉若有所思地點點頭,但還是有點猶豫:「可是我做的技術工作,真的有那麼重要嗎?感覺說得太嚴重會像在吹牛...」
「你們的系統如果真的崩潰了,會發生什麼事?」
阿偉想了想:「所有使用者都沒辦法正常用我們的產品,客服會被抱怨電話淹沒,業務那邊也沒辦法成交新案子...」
「那大概會持續多久?」
「至少幾個小時吧,搞不好要到隔天才能完全修復。」
「你覺得這幾個小時公司會損失多少錢?」
阿偉瞪大眼睛:「這...我從來沒算過耶。但應該...很多?」
咖啡廳裡的音樂換成比較輕柔的爵士樂,我讓阿偉自己想了一下。
「所以你覺得,『我們拆除了可能導致系統無法運作的未爆彈』這樣的說法,算吹牛嗎?」
阿偉搖搖頭,聲音裡有點驚訝:「不算...這是事實沒錯。我只是從來沒有這樣想過而已。」
「那我們來練習一下,」我說,「你剛才提到的重構,最重要的成果是什麼?」
阿偉思考著:「嗯… 系統穩定性大幅提升,不會再隨機crash了。」
「OK,現在想像台下坐著的是業務部的主管,你會怎麼說?」
阿偉皺著眉頭,像是在努力翻譯:「呃...我們修好了一個很容易壞掉的系統,所以...客戶不會再因為系統當掉而抱怨了?」
「不錯,還有呢?」
「還有...業務同事也不用擔心在跟客戶 demo 的時候系統突然掛掉?」
我笑了:「很好!你看,這樣說是不是比『採用DDD重構,確保系統架構優雅性』更有畫面?」
阿偉也笑了,但馬上又嚴肅起來:「但是這樣感覺...我好像沒有展現出我的技術能力耶。他們會不會覺得我只是在修修補補而已啊?」
「阿偉,你覺得一個能夠預見災難、規劃解決方案、並且在不影響現有服務的情況下完成複雜重構的工程師,技術能力如何?」
「呃...應該還不錯?」
「那為什麼你要藏起這些能力,只講技術細節呢?」我問,「當你說『我們在三週內消除了系統崩潰風險,過程中沒有影響任何現有功能』,這不是更能展現你的全局觀和技術實力嗎?」
阿偉慢慢點頭,眼神裡開始有點亮光。
「而且,」我繼續說,「這樣的表達方式,其實更實在地反映了你工作的真實價值。你做重構,真的只是為了讓程式碼變漂亮嗎?」
「當然不是啊,」阿偉說得很肯定,「我是為了解決實際問題,像是系統不穩定、維護困難、隨時可能出狀況… 這些都是啊。」
「那你為什麼不直接這樣說呢?」
阿偉愣住了,像是第一次意識到這個問題。
「對喔...我為什麼要把重點放在手段上,而不是目的?」他喃喃自語,「就像你說的,我應該告訴別人我蓋了一棟房子,而不是只說我買了什麼材料、用了什麼工具才對。」
阿偉拿出手機,開始在記事app上打字。
「所以我可以這樣說:『一個月前我們發現核心服務隨時可能崩潰,一旦發生會嚴重影響所有使用者,也會對公司營收造成重大損失。』」他邊打邊念。
「嗯,然後呢?」
「然後...『為了在最短時間內解決這個風險,我跟資深工程師合作制定了重構計畫,確保在不影響現有服務的前提下,逐步提升系統穩定性。』」
「很好!成果呢?」
阿偉越打越有勁:「『重構完成後,不只消除了崩潰風險,更重要的是為未來功能開發打下了穩固基礎。現在新功能的開發速度可以提升30%以上,這表示我們能更快回應市場和客戶的需求。』」
我看著阿偉專注打字的樣子,忍不住笑了:「阿偉,你有發現嗎?你現在說的這些話,聽起來還是很像你。」
他停下來,抬頭看我:「什麼意思?」
「你剛才擔心會變成『那種會做簡報、講故事的人』,好像那不是真正的你。但你現在講的每一句話,都是從你的專業角度出發的。你沒有變成業務,你還是工程師。」
阿偉若有所思地點頭。
「只是現在你不只展現了技術能力,還展現了你對業務的理解,對風險的判斷,對專案的掌控能力。這些不都是優秀工程師應該具備的嗎?」
「對欸...」阿偉說,聲音裡有種恍然大悟的興奮,「我不是在偽裝成什麼推銷員,我只是在用更完整的方式呈現我的工作。」
「沒錯。而且你知道嗎?當高層真正理解你們在做什麼的時候,他們也會更尊重你們的專業判斷,給你們更合理的資源和時程。這對大家都有好處喔。」
阿偉收起手機,喝了口咖啡,臉上的緊張表情已經完全不見了。
「說不緊張還是騙人的,」他笑了笑,「但至少現在我知道,我不是要去表演什麼,我是要去分享我們真正創造了哪些價值。」
他站起身走到咖啡廳門口,回頭對我說:「下次見面,我再跟你說台下的人有沒有聽懂吧!」