cover

換工作第一天,面前是幾十萬行 code。你的直覺是從 main.ts 開始讀。恭喜,你選了最慢的方式。

先講結論

不要逐行讀 code——你不知道什麼重要、什麼不重要。先建立全景,再深入細節,就像看地圖不會從左上角一個像素一個像素看。三天就能從「完全陌生」到「能自信做小改動」。

Day 1:建立全景

目標:能在白板上畫出系統的粗略架構圖。

先看「外面」,不看 code

README.md        → 專案目的、怎麼跑
package.json     → 什麼框架、什麼套件
docker-compose   → 幾個組件
.env.example     → 連了哪些外部服務
CI/CD config     → 怎麼部署

從這些檔案你能知道:前端/後端/全端、什麼框架、monolith 還是 microservice、依賴哪些外部系統。

看目錄結構

tree -L 2 -d

目錄結構反映架構:controllers/models/routes/ 是 MVC、users/orders/payments/ 是 domain-driven、packages/api/web/shared/ 是 monorepo。

畫架構圖

不用完美。30 分鐘畫出主要組件、怎麼連接、資料流向:

[使用者] → [前端 Next.js] → [API Express] → [PostgreSQL]
                                    ↓
                              [Redis Cache]
                                    ↓
                            [Stripe 支付]

這張圖接下來三天會反覆修正。第一版不對很正常。

把系統跑起來

Day 1 結束前一定要讓系統跑起來,不管用多髒的方式。跑起來之後用瀏覽器走一遍主要功能的 happy path。

跑不起來卡在哪?那些坑本身就是很有價值的資訊。

Day 2:追蹤一條關鍵路徑

目標:理解一個核心功能從 request 到 response 的完整流程。

選對路徑

選系統最核心的功能。電商 → 下訂單、SaaS → 登入看 Dashboard、API 服務 → 收 webhook 處理。不要選最簡單的(太淺)也不要選最複雜的(太深)。

從入口往內追

路由定義 → Controller → Service → Repository → Database。

大量使用 IDE 的「跳到定義」和「查找引用」。在重要的地方加書籤或註解。

搭配測試理解

測試是可執行的文件。 如果有測試,先看測試再看實作——測試告訴你預期輸入輸出、邊界條件、商業規則。

更新架構圖

Day 2 結束後你的架構圖應該豐富很多了,從「粗略的方塊」變成「有具體的 Controller、Service、Repo」。

Day 3:擴展理解 + 記錄盲點

目標:理解 2-3 條路徑,能自信做小改動。

再追 1-2 個重要功能,第二條通常快很多。

識別地雷區

每個 codebase 都有:

  • God Class:一個檔案 2000+ 行,用 wc -l 排序找到
  • 無人敢動區:git log 很久沒改、或只有特定人改
  • 高 churn 區:經常被修改,不穩定或設計不好
  • workaround 集中地grep -r "TODO\|HACK\|FIXME" src/

記錄你的發現

給自己(也給未來的新人)寫筆記:架構概覽、核心流程、關鍵檔案、地雷區、還不懂的東西。那些「還不懂的」就是你接下來要問原作者的。

AI 在這裡能幫什麼

AI 可以加速資訊收集:理解目錄結構、解釋 function 做什麼、追蹤呼叫鏈、理解 if-else 的商業意義。

AI 不能幫你的:判斷架構設計的「為什麼」(要問原作者或看 ADR)、理解不在 code 裡的商業規則、判斷哪裡是地雷(需要 git history + 經驗)。

用 AI 加速資訊收集,但自己做判斷和整合。不要盲信 AI 對 code 的解讀——它可能漏掉 side effect 或誤解商業邏輯。

常見錯誤

  • 從第一行逐行讀:沒有全景,不知道什麼重要 → 先看結構再看細節
  • 試圖一次理解所有東西:會資訊過載 → 一次只追一條路徑
  • 只看 code 不跑起來:行為可能跟你想的不同 → Day 1 一定要跑起來
  • 不敢問問題:最快的文件是人 → 記下問題集中問
  • 不做筆記:三天後你會忘記 Day 1 的發現

延伸閱讀


你能在 10 分鐘內畫出目前專案的架構圖嗎?如果不能——你已經在這個專案工作多久了?也許是時候退一步看看全景了。