軟體專案管理的核心循環是:釐清需求 → 拆解任務 → 估算時間 → Sprint 規劃 → 執行與追蹤 → Review → Retrospective,然後回到下一輪。每一步都有可能出錯,而大部分專案 delay 不是因為工程師寫程式慢,而是需求沒搞清楚、估時太樂觀、或 scope creep。這篇把 project-mgmt、process、system-design 三個系列裡跟專案管理相關的文章串成一個完整的循環。


Level 0:全景圖

flowchart LR
    A[需求] --> B[拆解]
    B --> C[估算]
    C --> D[Sprint 規劃]
    D --> E[執行 & 追蹤]
    E --> F[Review]
    F --> G[Retrospective]
    G -->|下一輪| A

    style A fill:#e3f2fd,stroke:#1976d2
    style B fill:#e3f2fd,stroke:#1976d2
    style C fill:#e8f5e9,stroke:#388e3c
    style D fill:#e8f5e9,stroke:#388e3c
    style E fill:#ede7f6,stroke:#5e35b1
    style F fill:#fff3e0,stroke:#f57c00
    style G fill:#fce4ec,stroke:#c62828

需求 → 拆解 → 估算 → Sprint 規劃 → 執行追蹤 → Review → Retro,循環往復。每一輪的 Retro 結論會改善下一輪的流程。

看起來很簡單?每一步展開都有很多眉角。


Level 1:需求——搞清楚「到底要做什麼」

大部分專案 delay 的根本原因不是技術問題,是需求沒搞清楚。Stakeholder 說「做一個購物車」,工程師聽到的是「加入購物車的按鈕」,PM 想的是「包含優惠碼、運費計算、庫存檢查的完整購物流程」。

需求拆解:Epic → Story → Task 的拆法

產品定義 — 在寫程式之前,先確認「為什麼要做這個」。 → 產品定義(一):使用者需求到 PRD → 產品定義(二)產品定義(三)產品定義(四)產品定義(五)

系統規劃 — 需求轉成技術方案。 → 系統規劃(一):從需求到架構 → 原型規劃(一):快速驗證可行性 → 原型規劃(二)原型規劃(三)


Level 1:估算——為什麼永遠不準

工程師被問「這個要做多久」的時候,想的是最順利的情況。但現實有文件不全的 API、莫名其妙的 bug、突然插進來的緊急需求。

工時估算:Story Points、Planning Poker、歷史速率

估算不準不是你的問題——這是整個軟體業的問題。重點不是估「準」,而是估完之後有機制來應對偏差(buffer、scope 調整、風險管理)。


Level 1:優先排序——不是所有東西都要做

Backlog 永遠比你的產能多。學會說「不」,或者更精確地說,學會排「先做什麼」。

Backlog 優先排序:RICE、MoSCoW、Impact/Effort Matrix


Level 1:Sprint 規劃與執行

兩週一個 Sprint,每個 Sprint 要有明確的目標、拆好的 task、估好的 points。

flowchart TD
    SP[Sprint Planning] --> GOAL[Sprint Goal]
    SP --> TASKS[Task 分配]
    TASKS --> DAILY[Daily Standup]
    DAILY --> TRACK[進度追蹤]
    TRACK --> BLOCK{有阻塞?}
    BLOCK -->|是| RESOLVE[排除阻塞]
    BLOCK -->|否| CONTINUE[繼續開發]
    RESOLVE --> DAILY
    CONTINUE --> REVIEW[Sprint Review]

    style SP fill:#e8f5e9,stroke:#388e3c
    style GOAL fill:#e8f5e9,stroke:#388e3c
    style DAILY fill:#ede7f6,stroke:#5e35b1
    style TRACK fill:#ede7f6,stroke:#5e35b1
    style REVIEW fill:#fff3e0,stroke:#f57c00

Sprint Planning 定目標和分 task,Daily Standup 同步進度和阻塞,有阻塞就排除,最後 Sprint Review 展示成果。

規劃與追蹤: → Sprint 規劃:怎麼規劃一個兩週的 Sprint → 進度追蹤:Burndown Chart、風險指標、進度儀表板 → Agile 實務:Scrum 和 Kanban 的差異和實際操作

開發流程 — Sprint 裡的工程實踐。 → Feature Lifecycle:一個功能從 branch 到上線 → Feature Lifecycle(二)Feature Lifecycle(三)環境規劃:Dev / Staging / Production → Release 方法論:版本發布策略 → Release 方法論(二)Monorepo vs Multi-repo:專案結構決策

品質保證 — 不能只追速度,品質掉了後面會花更多時間修。 → 測試策略:測試金字塔 → 測試策略(二)Commit Lint:規範化的 commit → Code Review:有效的 review 流程 → SDD:測試驅動開發


Level 1:Stakeholder 溝通

專案管理有一半是「管理期望」。老闆問「做完了嗎」的時候,最好的回答不是「快了」,而是「還有三個 API、一個頁面、測試還沒跑」。

Stakeholder 溝通:向上管理、期望管理、進度報告


Level 1:Review & Retrospective

Sprint 結束後兩件事:Review(展示成果給 stakeholder 看)和 Retro(團隊內部檢討流程)。

Postmortem & Retro:事後檢討和持續改進

事故管理 — 線上出事了怎麼辦。 → 事故管理(一):事故分級、On-call → 事故管理(二):根因分析 → 事故管理(三):Blameless Postmortem


Level 1:支撐工具——CI/CD、監控、技術債

專案管理不只是流程,還需要工具和基礎設施的支撐。

CI/CD — 自動化測試和部署,減少人為失誤。 → CD PipelineCD 核心:概念和工具鏈 → Git + CI + Release:從 commit 到上線

監控 — 上線之後才是開始。 → 好的監控系統Alerts & ChatOps:告警分級和通知

技術債 — 每個專案都有,關鍵是「什麼時候還」。 → 技術債:辨識、量化、排優先 → 取捨框架:在速度和品質之間做決定


閱讀路徑

新手 PM / 剛開始管專案

需求拆解 開始,學會把模糊的需求變成可執行的 task。然後看 Agile 實務 了解 Scrum 的基本運作。

工程師想了解 PM 在幹嘛

Sprint 規劃工時估算。理解「為什麼 PM 一直追你進度」背後的邏輯。

Tech Lead 想改善團隊流程

Postmortem & Retro 開始——先搞清楚現在的問題在哪。然後看 Feature Lifecycle 設計從需求到上線的標準流程。


知識缺口

缺口為什麼重要建議放在哪
⚠️ 遠端團隊的專案管理後疫情時代的必備能力project-mgmt/
⚠️ OKR 實務目標管理框架,很多公司在用project-mgmt/
⚠️ 跨部門協作前端 / 後端 / 設計 / QA 怎麼協作project-mgmt/
⚠️ 專案管理工具比較Jira vs Linear vs Notion vs ClickUpproject-mgmt/
⚠️ 接手爛專案新上任的 PM / Tech Lead 最常遇到的情況project-mgmt/ 或 career/

FAQ

Q: Scrum 跟 Kanban 差在哪? A: Scrum 有固定的 Sprint(通常 2 週),有角色(PO、Scrum Master),有儀式(Planning、Daily、Review、Retro)。Kanban 更彈性——沒有固定週期,用 WIP limit 控制在做的事不會太多。需求穩定的產品開發適合 Scrum,變動大的維運或支援團隊適合 Kanban。詳見 Agile 實務

Q: 怎麼估時間? A: 別估時間,改估複雜度(Story Points)。用 Planning Poker 讓團隊一起估,避免一個人的盲點。跑幾個 Sprint 之後,看團隊的 velocity(每個 Sprint 完成幾個 points),就能用 velocity 推算時間。詳見 工時估算

Q: Stakeholder 不講清楚需求怎麼辦? A: 別等他講清楚——主動去問。用「你要的是 A 還是 B」的二選一問法取代「你想要什麼」。或者先做一個簡單的 prototype 給他看,讓他說「不是這個」也比「我不知道」有用。詳見 Stakeholder 溝通

Q: 專案一直加需求(scope creep)怎麼辦? A: 三個做法:(1)所有新需求都進 Backlog,不直接塞進 Sprint;(2)每次加需求就問「那你要砍哪個」;(3)在 Sprint Planning 時明確定義 Sprint Goal,超出 Goal 的一律不做。詳見 Backlog 排序

Q: Daily Standup 一直開超時怎麼辦? A: Daily 只回答三個問題:昨天做了什麼、今天要做什麼、有沒有阻塞。細節和討論移到會後。如果每天都有很多阻塞要討論,問題可能不在 standup,而在 Sprint Planning 時 task 拆得不夠細。

Q: 怎麼處理技術債? A: 每個 Sprint 留 15-20% 的 capacity 給技術債。不要開一個「技術債 Sprint」——那永遠排不到。把技術債當作普通的 task,跟 feature 一起排優先。詳見 技術債