一,Design Pattern是什麼呢?
基本上所有工程師都會無意間使用到的東西,甚至你不用知道他的名詞,你也得會用,
因為至少在 AI 主導全新開發之前,普遍有一定經驗工程師,就是不說也會知道一個共識,
就是從1990年代Gang of Four提出之後,
基本上會認為 Design Pattern 跟 物件導向(OOP) 是綁再一起的東西,
或者說你是個軟體工程師,會在理解脈絡之後很清楚為什麼,
舉個例子就是 new() ,這個就是經典的工廠模式搭配建造者模式等應用,
因此只要物件導向這種概念(*即,你把程式碼當一個物件看待與應用的討論)還存在開發領域,
設計方法就能是一套經驗結晶。
這方面基礎我是推薦閱讀歐萊禮兩本書:
深入淺出物件導向分析與設計 ( Brett McLaughlin、Gary Pollice、David West)
深入淺出設計模式 (Eric Freeman, Elisabeth Robson)
這裡面我是建議大學畢業前要邊學程式邊搞懂這兩本書的內容,程度大約達到70%,你就能單打獨鬥了,並且可以預料不是普通能打,除非你去了個平均水平之上的公司,畢竟,因為現在AI技術越來越成熟,所以相信大家是隨著時間越來越容易做到70%練習,只缺你的耐心與付出而已,但相信我,這不需要太久,並且是值得的。
二,懂不懂 Design Pattern 會影響在哪?
我個人認為,這種知識擴充的優勢在於你的 “思考方法” 會增強,
但懂了並不會等於你的能力提升,而是能力提升時比較容易,並且在未來工作上輕鬆非常多,
可是要非常注意的事情是,
這不是所有工程師都需要入門就得懂,甚至有些時候先不要懂更好 (*如果你沒有一個好的方向與老師時),
首先他其實並不是什麼聖經或者絕對理念,軟體業是一個變動非常快的行業,所以很多寫書的例子,在一兩年後就變得像是障礙一般,因此有時候你有一些開發經驗後再來看更好,經驗源自於你的反思,因此這是在需要進一步設計有框架的程式時候,再懂就可以,
因為你有反思之後,去看別人寫的 “思考方法” 就會更有印象,並與你生存技能結合。
三,AI 時代的軟體業
目前普遍認為AI出現之後,可以預期 “無程式碼” (No Code) 時代是近在咫尺,
換個說法是你學習 C#、Python 在未來十年後可能一文不值,也沒人在乎你懂,
畢竟AI這塊推理與記憶力是遠超越人類,
程式語言這麼底層的東西,已經可以確定會類似於機器語言與組合語言的存在感,
但程式碼的框框架架,理論上不會消失,
因為那是一種 “思考方法”,
而只要沒有全新的電腦架構產生之前,至少現在很難逃脫這方法的延續應用。
舉個真實的例子就是找吃飯地點這個事情,
現在人應該沒有一個能力,就是騎著機車,拿著地圖,邊騎邊看,然後路邊問一下人...
你今天只需要有手機跟網路就能用google map導航,上面還有各種餐廳與評價,
雖然你有了google map可以快速找到哪裡好吃,也能看評價,
但實際上群體裡,依舊是能看出誰有能力找好吃地方,
這些人是必須有一定經驗與洞察力的協助,
這種慢慢構成的 “思考方法” 是依舊歷久不衰。
支倉凍砂的小說《狼與辛香料》中,主角在一開始跟賢狼踏上旅程時候,
買賣皮革那段,年輕的主角只知道價值評估,但不知道人心,而賢狼赫蘿從過去經驗中產生一套對付人心的 “方法”,即便各種事情經過百年變化,依舊能用。
因此,我相信大家會很清楚理解,不要強迫自己馬上學會 Design Pattern 是很合理事情,
因為這東西是一種機遇與練習才能獲得的東西,只在書上學,會像馬謖一樣在實戰中吃虧。
四,AI 時代的 Design Pattern
既然 Design Pattern是一個歷久不衰的經驗法則,而我們現在舉例程式碼又可能一年後沒用,那為何還要提出來討論呢?
主要原因是下面幾點
- 首先還是要討論AI後是否還需要知道Design Pattern
- 接著AI寫程式的方法可能讓你無意間失去機會與練習
- 最後Design Pattern要怎麼用在AI時代的開發更有效
在討論這個之前我們必須知道現在 AI 開發的一些套路,
其實這段我很推薦去看 “機器學習模擬應用” 一書,這本書用遊戲引擎來做AI各種應用與測試,
如果你把這本書從另一個視角看,你會發現現在AI發展就跟書中所提到的一些點相近,
例如Agent、MCP、GAIL跟RAG等等等的概念,你是能從這裡獲得一個視野,
為什麼這樣呢?
實際上所有的AI領域並不是齊頭式的達到一個水平,
目前會讓你感覺有意識的chatGPT,LLM算是後起之秀,
圖形跟物理運動相關,在2017年開始,確實已經大幅度減少現實世界資料應用,
很多事情你必須從虛擬世界去嘗試,而Unity跟Unreal,反而是個很好工具,所以他們先創造一定是也。
從這個視角,你可以輕鬆知道 AI 未來要做什麼,
簡單來說就是從頭到尾的自己做完工作,
無程式碼 (No Code) 的一個框架,再過去已經有個雛形,這是個挺成熟的技術,如果你公司沒有偷懶應該有一定基礎,未來AI靈魂注入之後,會有條有序的開始發展出自動動完成的事情,這顯然不是困難事情...
其中 AI Agent 與 MCP 會是被討論的核心。
目前軟體開發工程師怎麼用AI寫程式的說法不可計數,有數篇文獻可讀,實際上我覺得只有兩種方向:
- 人主導:由人主導一整套策略,然後AI從片段開始工作。
- AI 主導:由AI基於自己常識與經驗推理,然後自己開始工作。
前面講到 AI Agent (AI代理人),其實就是在講 AI “主導” 整個推理過程去自動寫程式,
AI Agent 目前也是不可計數,但是一般認為有五個方向:
- ReAct 自動推理與工具使用 :通常是一個簡短的連續性事件,例如找東西或者有限的螺絲帽嘗試等等,他推理過程就是AI知道有三個項目,然後基於觀察來推理是否往下做。
- PS (Plan and Solve) 推理計劃與執行解決方案:
策略上就是將事情分割成數個計劃,然後執行解決這兩個,不過這東西其實就是模型擴大之後才做得到的事情,現在大多模型都做得到,而Deepseek的think其實就是一種計劃過程,只是他並不需要執行解決,但如果你有使用MCP去控制東西,會發現這種有計劃動作會不錯用。
- Reason without Observation(REWOO)無視觀察推理:
這依舊有計劃,但簡化描述且不觀察外部狀況,僅憑自己知識做執行,這種運作其實類似於寫文章時所需的專注度,寫程式的時候也是有用的,例如我們讓Agent寫一個會互相參考的數個程式碼,假設A需要參考B C D,當你完完整四個程式前,A會大量報錯,如果你IDE能以MCP給AI Model錯誤資訊時,他可能會分心而終止,這時候REWOO就能成為一種策略。
- Basic Reflection 基本回顧:
這種策略允許 AI Agent 反思其先前的行動和決策。通過這樣做,Agent 可以從錯誤中學習並改進其未來的表現。
- LLM Compiler
此策略旨在優化大型語言模型(LLM)的性能。它通過將複雜任務分解為更小的子任務,並優化這些子任務的執行順序來實現這一點。
其實還有很多方案,不勝枚舉,
不過這裡應該讓你有個概念,就是 AI 寫程式這件事情,至少在現階段已經是一個具有組合動作的自動化開發。
而其中您或許有發現一個特徵,
就是AI自己能做計劃,這計畫顯然能包括 Design Pattern ,而且在未來語言模型進步之後,有很高機率會做得比人類好。
五、結論:設計模式在AI時代
回到我們先前提出的三個關鍵問題,讓我們來梳理出設計模式在AI驅動的軟體開發時代的角色與價值:
1. AI時代是否還需要知道Design Pattern?
絕對需要,但角色已然轉變。設計模式不再是工程師必須精通的技術細節,而是轉變為一種「Meta Knowledge」
—一種讓你能夠評估、指導和優化AI生成程式的思維框架。
就像一位優秀的指揮,不必精通每一項樂器,但必須理解音樂的結構和原理。
在未來,熟悉設計模式的工程師將擁有「第二視角」—能夠快速識別AI生成程式中的模式應用是否恰當,是否需要重構,以及如何指導AI生成更符合長遠維護需求的程式架構。
2. AI寫程式如何影響學習機會?
AI確實會減少「從零開始寫程式」的機會,但這不一定是壞事。這就像 "計算機" 改變了我們學習數學的方式 ,我認識物理係跟數學系,他們考試甚至不考計算機,現在都是電腦計算,無論如何~
—基礎仍然重要,但重點轉向了更高層次的應用與理解。
建議採取「混合學習模式」:
- 觀察AI:分析AI如何應用設計模式解決問題
- 引導AI:學習如何指導AI使用特定設計模式解決複雜問題
- 反思實踐:不要僅僅滿足於AI生成的解決方案,而是反思它為何選擇特定模式,以及是否有更好的選擇
最重要的是,將AI視為學習夥伴而非替代者—讓它處理機械性工作,而你專注於理解背後的思維過程與設計決策。
3. 如何在AI時代有效運用Design Pattern?
設計模式在AI時代的有效運用將更加側重於「指導」而非「實現」:
使用設計模式語言與AI溝通:明確要求AI「使用觀察者模式」或「實現策略模式」會比詳細描述所需功能更有效
構建模式庫:收集企業專屬的設計模式實現方式,並教導AI遵循這些實現標準
模式組合思維:專注於理解如何將多種設計模式組合使用,而非單一模式的實現細節
思考模式的演化:設計模式本身也在進化,特別是在微服務、無伺服器架構等新範式中,與AI一起探索這些新型模式
未來
未來的軟體工程師將更像是「設計思維的策略家」而非「程式碼的農夫」。所以對于設計模式的理解,你將能成為更可靠的導師,進一步達到指導AI生成高品質的關鍵技能。
這並不意味著我們需要記住每一個設計模式的細節,而是要理解它們解決的問題類型和思考方式。最終,設計模式的知識將幫助我們成為更好的「AI協作者」—能夠理解、評估並優化AI生成的解決方案,同時將自己的時間投入到更具創造性和策略性的思考中。
如同許多技術轉型一樣,對設計模式的理解不會消失,而是轉化為新的形式—成為人類與AI協作中的共享語言和思維橋樑。