
一、AI 編程時代的來臨
產業現況
- 90% 程式碼由 AI 生成:現在時代已經是 90% 程式碼都是由 AI 去生成,未來也只會有增無減
- 各大科技巨頭的實踐:
- Anthropic:Claude 產品長提到內部不但使用 Claude 寫代碼,還直接用 Claude 做 code review
- OpenAI:內部使用 Codex,不但開源 CLI 也產出了雲服務
- Google、Microsoft (GitHub):各家大廠均推出了 AI Agent Coding 的服務
- 新興工具的崛起:
- Cursor 市值水漲船高
- Windsurf 被併購
軟體開發現在正面臨到一個巨變的範式轉移
二、傳統軟體架構的人類中心設計
現有架構的設計理念
傳統的軟體架構(如 OOP、設計模式、SpringBoot 等框架)都是專門為「人類」工程師而設計。人類工程師的優勢
- 工具使用靈活
- 所有工具皆為人類設計(IDE 的跳轉、深入、打 Break point)
- 抽象思維能力
- 人類並非專門為編程而生,語言和思維方式都是為了社會生活而打造
- 語言本身就是一種層級的抽象
- 依靠大量知識儲備去理解抽象概念
- 複雜推理邏輯
- 具備處理複雜邏輯推理的能力
人類工程師的限制
- 注意力不集中
- 容易分心,難以長時間專注
- Context Window 有限
- 無法同時處理大量資訊
傳統最佳實踐的設計原則
- 分層架構:透過「分層」來讓人更好判別代碼結構
- 高度抽象:透過「抽象」來讓人可以用極少注意力和 Context window 就能夠撰寫複雜的邏輯
三、AI 與人類的根本差異
AI 的優勢
- 高效處理能力
- 速度快,可以多線程處理任務
- 大 Context Window
- 能同時處理大量資訊
- 專門優化
- 專門為編程優化,有超越人類數倍的知識量
AI 的當前限制(預期幾年內能超越人類)
- 工具使用受限
- 無法良好使用現有的編程工具
- 抽象思維不足
- 抽象思維能力尚不及人類
實際使用中的差異觀察
使用 Windsurf、Cursor 時發現的人機差異:
- 檔案導航
- 人類:簡單的跳轉和邏輯搜尋
- AI:需要搜尋檔案名稱,生成多個 prompt,多步驟才能找到對應檔案
- 程式碼搜尋
- 人類:在大量文件中找尋要修改的代碼片段很複雜
- AI:處理大量文本搜尋很簡單
- 工具整合
- 人類:能同時使用多種工具,穿梭於各個 Repo、IDE、APP(如 Postman)、Cloud service
- AI:工具整合能力有限
四、程式碼的本質與 AI 時代的轉變
程式碼的本質
- 工具屬性:代碼是人類實現目標的手段
- 效率導向:代碼的「藝術」在於實現高效率
- 閱讀的高效
- 運行的高效
與其他藝術形式的區別
- 創作型藝術(音樂、畫作):
- 目的在於激起人類情緒
- 創作本身創造快樂
- 價值難以定義
- AI 時代人仍會想要創作
- 工具型技術(程式設計):
- 當 AI 效率遠超人類時,人類不應該自己寫代碼
- 達成目標的工具從程式語言轉換為自然語言
五、AI 時代的架構優化核心思想
設計理念轉變
底層的程式語言實踐不應該為人類更好理解、修改而設計,而是應該用 AI 最有效率去閱讀、修改的方式去設計。
核心優化原則
- 降低抽象層級
- 放棄過度的人類「抽象」、「工整」
- 採用讓 AI 更好識別和修改的長文本、低抽象
- 檔案結構優化
- 減少檔案數量,增加檔案大小
- 讓 AI 可以更「一目瞭然」
- Context 集中化
- 把所有 Context 聚集在讓 AI 很好去閱讀的地方(同一個 Repo 中)
- 代碼即一切
- 減少傳統開發的「認知成本」(避免要找一個東西要去 4-5 個地方找)
六、AI 時代的「好架構」實踐
案例研究:Netflix Dispatch
Netflix 的 Dispatch 是 AI 時代相對好的編程範式範例。
AI 友好架構的具體實踐
1. Domain Module 設計
- 明確區分用途:用 Domain module 明確區分用途
- 邏輯集中:相同 Domain 邏輯都放在一起,讓 AI 更好理解
- 取代傳統分層:取代傳統 Spring Boot 的分層方式
2. 簡化層級結構
大部分的 module 只有三層:
- View:所有 API
- Service:所有業務邏輯(包含傳統的 repository 和可能多個 service 類)
- Model:所有的業務物件(包含 DTO、schema、DB object)
分析:傳統最佳實踐可能會做成好幾個檔案、不同的 class 互相複雜調用,但在 AI 時代用相對簡單的實踐去做,每個檔案也相對大。
3. 函數式編程
- 減少 OOP 抽象:OOP 本質就是一個相對抽象的概念
- 純函數優勢:雖然減少復用邏輯,沒有漂亮的封裝,但卻能夠讓 AI 更好去理解
4. Monorepo 架構
- Context 完整性:現代軟體很難不用微服務架構,但拆分 Repo 會讓 AI 無法獲得足夠多 context
- 集中管理:需要盡量把所有 Context 都讓 AI 去讀
5. 明確的上下文傳遞
- 把所有上下文都傳入 Function
- 減少 AI 再去來回看的認知成本
七、總結
AI 時代的軟體架構正在經歷根本性的轉變。我們需要重新思考傳統的設計原則,從為人類優化轉向為 AI 優化。這不是技術的倒退,而是適應新工具的進化。未來的軟體架構將更加直接、更少抽象,但也更加高效。