Design-First、API-First 與 Code-First:你是在選誰先付出代價?

🌏 Read this article in English


PM 丟了一張 Figma 連結到 Slack。

「先定這個。」

工程師盯著螢幕,游標停在第 1 行。

這次該先畫 Figma?

還是先寫 Swagger?

還是…直接開 IDE?

看似選 Design-First 最安全,對吧?

不一定。如果這個 API 要給第三方開發者用,第三方平臺通常需要先有 API contract——Design-First 反而會繞遠路。

這三個選項,本質上都在解決不同維度的問題。起點若不符合情境,後期重構成本可能上升。


三種方法論各自解決什麼

團隊裡常發生這種對話。

PM:「這個功能先畫個 Wireframe 給我看看?」

工程師:「規格還沒定,單靠畫面還不足以支撐 API contract。」

老闆:「別吵了,先出個 MVP 驗證市場反應。」

聽起來很合理,對吧?

但問題是:「API contract」對工程師來說,是前後端對齊的契約;對 PM 來說,那只是看不懂的 JSON。

我們先釐清限制。

方法 A:Design-First(Figma 先行)

流程:需求 → Figma 設計 → 確認需求 → 開發 → API

優點:利害關係人「看得懂」。他們不需要讀 JSON,只需要點點頭。

代價:可能設計出難以實作的東西。

方法 B:API-First(規格先行)

流程:需求 → API contract → 前後端並行 → 整合驗證

優點:技術基礎穩固、前後端可並行。

代價:抽象。利害關係人看不懂。容易脫離使用者需求。

方法 C:Code-First(迭代先行)

流程:MVP → 驗證 → 迭代 → 迭代…

優點:快速驗證、可工作軟體優先。

代價:技術債累積、重構成本高。


為什麼 Design-First 是推薦的起點?

在大型企業系統整合、多團隊並行開發的情境下,API-First 是標準作業程式。

但問題是:大多數新產品、新功能的起點,不是「系統整合」,而是「價值驗證」。

1. 產品是給「人」用的

看得到的東西 > 抽象規格。

PM 看 Figma,能說:「這個按鈕位置不對。」

PM 看 JSON,只能說:「這個欄位格式有問題。」

這兩者的溝通成本,差了不只一個數量級。

具體來說,PM 可以審 domain semantics(領域語意)。文字規格、測試用例也能降低猜測,僅 UI-heavy 場景特別依賴設計圖。

2. 需求變更成本

改 Figma:30 分鐘。

改代碼:3 天。

這不是時間差,是腦力開銷。每次切回去,都要重新啟動大腦的開機時間。

3. 團隊對齊

PM、老闆、客戶都看得懂 Figma。當所有人對齊在同一張圖上,決策速度會變快。

4. AI 時代的優勢

有設計圖 → Claude/Stitch 有參考依據。

若缺少驗收準則與設計約束,AI 輸出一致性會下降。

AI 工具是放大器。如果你連需求是什麼都說不清楚,AI 只會幫你更快地放大需求不清造成的返工。


Design-First 的四個常見風險

Design-First 不是萬靈丹,它有四種常見的風險。

風險 1:設計脫離技術現實

設計可能超出目前技術、成本或時程約束。

比如:設計師畫了一個無限滾動的清單,但後端資料庫沒有 cursor-based pagination 的支援,重構成本極高。

緩解方式:開發早期參與設計 Review。這不是讓工程師來「否定」設計,而是讓工程師在設計階段就補充技術約束。

風險 2:工具輸出不一致

Stitch 每次生成結果不同。

緩解方式:建立 Design System 組件庫。沒有 Design System 的 Design-First,元件差異、狀態遺漏與視覺規格漂移會讓你頭痛。

風險 3:設計 ↔︎ 代碼 gap

設計與實作永遠有落差。

緩解方式:接受並管理這個 gap。

風險 4:過度設計

設計太多用不到的功能。

緩解方式:先設計 MVP scope。

你的責任是『讓它變好一點』,不是『讓它完美』。

設計太多,等於什麼都沒設計。


取捨討論:沒有銀彈

Design-First 適合:新產品、MVP 驗證、有明確 UI 需求。

API-First 適合:大型企業系統整合、純 backend 服務。

Code-First 適合:技術探索、POC。

成熟方法 vs 新興方法,往往是 A 和 B 接力。我推薦「混合策略」。


混合策略:實務建議

前陣子,團隊裡發生了一件事。

有個 Junior 用 AI 寫了一個功能。大概 500 行,花了兩小時。效率很高,他自己也很滿意。

我們的 Senior 花了十分鐘 review,然後皺著眉頭說:

「這邊邏輯還有可優化的地方。而且你沒考慮到,如果這個 API 要給外部用,你的 Error Code 定義太隨意。外部客戶接到第三天就會打電話來罵。」

Junior 愣了一下:「但 PM 只給了 Figma…」

Senior 說:「Figma 是給使用者看的。API 是給開發者看的。兩者都要顧。」

這就是為什麼我們需要混合策略。

階段 1:Design-First(需求確認)

  • 設計師畫 Wireframe/Mockup
  • 利害關係人 Review
  • 開發參與,標記技術風險

階段 2:API-First(技術規劃)

  • 根據設計定義 API 規格
  • 前後端對齊契約
  • 並行開發

階段 3:Code-First(實作迭代)

  • 快速實作 MVP
  • 驗證後迭代
  • 持續重構

這不是理論,是實務教訓。

怎麼跟老闆說?

「老闆,我先用 Design-First 跑兩週做 MVP。出問題我負責。如果驗證成功,再切入 API-First 做規模化。」

這句話讓主管知道:你不是在吵架,你是在控管風險。


結語:這個問題真的值得做嗎?

工具是放大器,但起點決定放大的是價值還是負債。

在產品階段尚未穩定時,起點選擇會影響後續溝通與返工成本。

你不用現在就有答案。但開始想這個問題,就是第一步。

起點與情境匹配,比工具本身更重要。

下一個功能的起點,你會從哪裡開始?

是花在畫圖、寫規格,還是…先確認這個問題真的值得做?

Sources

Leave a Comment