Clean Craftsmanship:在 LLM 時代重拾軟體工匠精神
為什麼在這個時間點讀這本書 最近對於如何在 LLM 時代帶領團隊一起提昇生產力感到困惑。當 AI 能在幾秒鐘內生成幾百行程式碼,「寫程式」這件事的門檻似乎降到了前所未有的低點。但門檻低了,品質呢? 當「每個人」都在養龍蝦,有了生產力焦慮,TypeScript 寫的 OpenClaw 才剛出現,Python 的 NanoBot 馬上跟上,接著是 Golang 的 picoclaw,然後 Rust 的 ZeroClaw 也來了。 根據 ZeroClaw 做的 benchmark,這些 Agent 已經降到小於 5MB 的記憶體佔用與 10ms 的啟動時間,「種族」為人類的我們對於產出軟體來說還剩什麼? 帶著這個問題,我決定先從自身出發,找出在 LLM 時代還能保持軟體工程「工匠精神」的誘因。於是翻開了 Robert C. Martin 的 Clean Craftsmanship。 這本書分為三個部份:紀律、標準、道德。一半以上的篇幅在講述 TDD 這個老生常談的開發方式,但透過 TDD,我們更能知道何謂軟體的「品質」。以下是我特別書籤的幾個段落。 紀律 童子軍規則 離開營地時,要比你來時更乾淨。 這也是在 Clean Code 一書就提到的概念。每次微小的重構,都能小程度的減少技術債的產生。不需要一次大刀闊斧,只要每次經過一段程式碼時,順手讓它變得更好一點。 讓我想到 Claude is not a senior engineer (yet) 這篇文章中提到的 Sweeks——一位被稱為「園丁」的 distinguished engineer,他不斷地重寫、收緊抽象,讓經過他手的程式碼都變得更乾淨。我們都想成為 Sweeks,對吧? 在 LLM 時代,AI 擅長的是「組裝」現有解決方案,但它缺乏 Sweeks 那種「看到可以更好的地方就會忍不住動手」的靈魂。童子軍規則提醒我們:這份靈魂不能丟。 Test Doubles 的正名 書中透過實戰的例子講述了所有 test double:Dummy、Stub、Spy、Mock、Fake。 坦白說,我曾經在諸多 repo 中看到這些名詞卻沒有實際使用它們。頂多在 DI 時製作了一個「用於模擬 database repository 的 implement」,或是使用了 gomock 這種套件來產生 mock,然後把所有替身都統稱為 mock。 ...