Domain Native 強迫你成為更好的工程師
Gaiwan Stack 影片觀後感
週末,我看完了 Gaiwan Stack 的影片,有些許的感想。而恰好上週我也在台灣辦了 Clojure Meetup #2 (意思是 2025 年的 #2),分享的主題是 libraries over framework ,我發現這兩者是有關的。
做為一個 Gaiwan Stack 的使用者,我的感受通常是這樣子:「Gaiwan Stack 強迫我學新東西。」而為什麼這些新東西在我過去的軟體開發經驗中,總是沒有學到呢?這就回到了 Clojure library 的一大特色:Domain Native 。
我所理解的 Domain Native 體現在 Clojure 函式庫的設計哲學中:
- 薄封裝 (Thin Wrapper) 與 DSL: Clojure Library 的作者傾向於只對「外界」(例如資料庫、HTTP、UI)做一層輕薄的封裝,經常使用 DSL (Domain-Specific Language) 或是 Clojure 核心的 資料格式(Data Format) 來表達領域概念。
- 絕對的控制力: 由於封裝極為輕薄,函式庫的使用者能夠對外界保有絕對的控制力,避免了大型框架中常見的「魔法」與過度抽象所帶來的黑箱問題。
- 知識優先: 正因如此,使用者必須真正了解外界的知識(例如 HTTP 協定、SQL 語法、資料庫的行為等)之後,才能靈活且高效地使用這些函式庫。
「libraries over framework」哲學,正是建立在這種 Domain Native 的設計基礎上。 Gaiwan Stack 並沒有提供一個全知全能的框架來隱藏細節,而是給予你一組精良的 Domain Native 函式庫,讓你使用不可變的資料結構去直接操作領域的本質。
因此,「Gaiwan Stack 強迫我學新東西」的感受,其實是來自於其設計將對領域知識的掌握推到了第一線。你學到的不只是某個函式庫的 API,而是真實世界底層技術的知識,這也解釋了為什麼過去的經驗中會缺少這些東西——因為它們常被其它語言的框架或函式庫隱藏起來了。


