Clean Craftsmanship:在 LLM 時代重拾軟體工匠精神

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。 ...

2026-02-19 · 2 min · 226 words

Agile Testing 閱讀筆記

鋪墊:敏捷開發價值觀、原則與實踐 有什麼開發,就有什麼測試,傳統開發就有傳統測試,敏捷開發就應該要推行敏捷測試。在討論敏捷測試前,應該先理解敏捷開發模式,否則理解敏捷測試會很困難。 敏捷開發是一種思想或稱作方法論,通過不斷迭代與增量發布,最終交付符合用戶價值的產品。 書中提到一些敏捷開發的歷史、演進與框架 PDCA 循環 輕量級軟體開發 減少複雜的文件,強調人員的互動 敏捷宣言 XP(eXtreme Programing):較多是著重在軟體開發,例如 TDD、pair programing、CI 等等。 BDD(行為驅動開發):使用「通用語言」來描述測試案例,將 User Story 的細節進行完整地描述。 Feature(特性): 購物車功能 Scenario(情境): 添加商品到購物車 Given(假設): 用戶已經登錄到購物平台並且正在瀏覽商品 When(當): 用戶點擊某個商品的「添加到購物車」按鈕 Then(那麼): 該商品應該被添加到用戶的購物車中 And(並且): 購物車中的商品總數應該更新 FDD(特性驅動開發):使用制式結構來建構特性列表 <action> the <result> <by|for|of|to> a(n) <object> Scrum:確保每天、每個階段都向著目標明確進行的一種「方法」。 推薦看 Scrum 提倡者自己寫的 SCRUM:用一半的時間做兩倍的事 DevOps 與敏捷的關係 DevOps 可以看作是敏捷的延伸,打通軟體開發、測試、交付、維護中的層層牆壁。 敏捷宣言 藉著親自並協助他人進行軟體開發,我們正致力於發掘更優良的軟體開發方法。透過這樣的努力,我們已建立以下價值觀: 個人與互動 重於 流程與工具 可用的軟體 重於 詳盡的文件 與客戶合作 重於 合約協商 回應變化 重於 遵循計劃 也就是說,雖然右側項目有其價值,但我們更重視左側項目。 敏捷測試之道 敏決測試不是一種測試方法,而是為了適應敏捷開發而設計的一套軟體測試解決方案。 敏捷測試宣言 Full Lifecycle Testing OVER Isolated Testing Phase Team Shared Responsibility OVER Testers Ensure Quality Continuous Targeted Automation OVER Widespread Regression Testing Quality Built-in OVER Defect Detection Full Lifecycle Testing 強調測試左移與右移,並非將測試「移動」到兩個端點,而是全程測試的介入。 ...

2024-03-24 · 3 min · 456 words