第一份的結束
4 月 20 日。在 Cmoney 擔任後端開發工程師實習生九個月後,最後一天。
第一份實習很奇特。你不知道自己不知道什麼,所以你無法分辨哪些是正常的,哪些是這個地方特有的。現在回頭看,我覺得自己在最關鍵的地方運氣很好:我落腳在一個有真實程式碼、真實規模,以及一個把教導這件事認真看待的導師的地方。
Cmoney 是什麼樣的地方
Cmoney 是台灣最大的金融資訊平台——700 萬 App 下載量,股市資料、投資組合追蹤和散戶投資人廣泛使用的金融分析工具的核心基礎設施。這裡的後端不是新創公司的乾淨程式碼。它是十年的生產歷史、累積的決策和繼承下來的限制。在這裡工作,你會感受到那份重量。
我在核心後端積極進行微服務重構期間加入。目標是把業務邏輯從單體架構中抽出來,放進有版本管理的服務合約。我的工作是為旗艦產品的九個後端 API 實作這些重構。
用艱難的方式學 OOP
我從課本學過物件導向程式設計。Cmoney 教了我 OOP 實際上能帶來什麼。
我繼承的程式碼沒有清楚的關注點分離。業務邏輯直接在 Controller 裡。資料存取散落各處。狀態在層次之間洩漏。測試全綠——程式碼無法維護。
重構它意味著在改善之前先理解它為什麼這樣寫。而要理解這件事,我首先需要搞懂 ASP.NET Core、C# 的型別系統,以及本該存在但不在的那些模式。
Tom——我的導師——在這件事上展現了我後來才完全體會的耐心。他沒有只告訴我要改什麼。他解釋為什麼原本的設計會造成問題,原本的模式應該是什麼,以及如何在不影響另一端 700 萬用戶的情況下逐步遷移過去。這是一種和懂得那些模式不同的能力。它是知道這些模式在什麼時候重要。
到了第三個月,我已經從問「這裡我該怎麼做」,變成問「這段程式碼假設了什麼,這個假設現在還成立嗎」。這個轉變才是真正的收穫。
規模下的金融 API
這個領域有它自己的挑戰。金融資料在開盤時不是一般流量。數百萬用戶同時刷新投資組合、執行選股器、查看即時股價。只有在那個規模和那個時間窗口才會出現的並發邊緣案例。你很快就學到「測試時可以跑」和「真實負載下可以跑」是兩種不同的主張。
我深入熟悉了 C# 的高並發模式——async/await、連線池、時效性資料的快取策略——因為替代方案是在交易日早上九點發生事故。
最後一個「真正手寫程式碼」的年代
我在 2025 年 4 月離開 Cmoney。兩三個月後,產業開始快速移動。
Agentic Programming——AI Agent 從頭到尾處理從 Spec 到程式碼到測試的完整實作——從 Demo 變成了真實工程師使用的真實工作流程。「初階開發工作」的樣貌開始即時改變。
我還不確定這對早期職涯工程師意味著什麼。但我知道,那九個月手動繼承破損的生產程式碼、在早上九點追著 Bug 穿越三個服務層、和導師爭論這個抽象層到底值不值得那個間接性——這類學習不會被 Agent 抽象掉。理解程式碼在做什麼,以及設計是否合理,仍然是難的那個部分。
也許改變的是,機械性的部分變快了。判斷力這個部分沒有。
感謝
感謝 Tom,用應有的方式教我 ASP.NET、C# 和 OOP——透過有真實後果的真實程式碼。感謝在每一步都解釋「為什麼」的耐心。
感謝整個團隊,以及在我到來之前流過 Cmoney 歷史的大量工作,讓我能貢獻其中一小部分。
這一章結束了。繼續前行。
