我的新書《文件驅動 AI 開發》開放預購了!
我的新書《文件驅動 AI 開發》開放預購,預計 2026 年 11 月 4 日出版。書中以 Habit Life RPG 為主線,從需求文件與系統架構,一路走到前後端開發、測試、部署與維護,練習和 AI 一起完成能驗收、能持續維護的作品。
tag
這裡整理與「Software Engineering」相關的已發布文章,依最新更新排序。
Latest first
我的新書《文件驅動 AI 開發》開放預購,預計 2026 年 11 月 4 日出版。書中以 Habit Life RPG 為主線,從需求文件與系統架構,一路走到前後端開發、測試、部署與維護,練習和 AI 一起完成能驗收、能持續維護的作品。
2026 iThome 鐵人賽 AI CleanCode Day 33:安安~我是ChiYu~ 三十三天前,我手上其實只有三份材料:一本 753 頁、厚度大約五、六公分的《無瑕的程式碼 第二版》,兩則 Uncle Bob 談 Coding Agent 的 X 貼文,以及這段時間大量使用 AI Coding …
2026 iThome 鐵人賽 AI CleanCode Day 32:安安~我是ChiYu~ 昨天,我把前面累積的 24 份 Policy 分別放回適合的位置:跨 Repository 可重用的判斷進入 Skill,專案自己的領域語言、架構與測試規則留在 Repository,風險接受與最後決策仍由工程師…
2026 iThome 鐵人賽 AI CleanCode Day 31:安安~我是ChiYu~ 昨天,我重新走了一遍這三十天從 Clean Code 延伸到 CLEAN 五原則的過程,才發現前面的文章已經累積了 24 份 Policy。 單篇看都不長,全部塞進 AGENTS.md 卻會產生新的問題:Agen…
2026 iThome 鐵人賽 AI CleanCode Day 30:安安~我是ChiYu~ 昨天,我拒絕把 AI 給出的 48、84、156 小時直接當成承諾,因為那些數字缺少足以支撐它們的來源、假設與失效條件。 寫到 Day 30,我想先把這個系列最核心的問題正式回答一次:CLEAN 五原則,到底是怎…
2026 iThome 鐵人賽 AI CleanCode Day 29:安安~我是ChiYu~ 昨天,我比較了多個 Agent 平行開發時的實作、整合、Review 與接手成本。兩條開發線都能完成任務,但整個團隊有沒有變快,還得把後面的整合與接手算進去。 只要有人問:「這個需求多久可以完成?」我們卻很容易再…
2026 iThome 鐵人賽 AI CleanCode Day 28:安安~我是ChiYu~ 昨天,我把一項通知重試需求拆成三個小週期,讓 Agent 每完成一段就取得測試回饋與回退座標,避免單一開發流程一次累積太多風險。 今天,我把開發線從一條增加到兩條:兩位 Agent 從相同 Commit 同時開工…
2026 iThome 鐵人賽 AI CleanCode Day 27:安安~我是ChiYu~ 昨天,我把 AI Agent 的完成宣告整理成可重跑的 Evidence Packet:固定產品版本後,連同 Prompt、Diff、Build、Tests、Smoke、限制與失敗紀錄一起保存。下一位工程師因此能…
2026 iThome 鐵人賽 AI CleanCode Day 26:安安~我是ChiYu~ 「Build 成功、測試全綠、需求完成。」 這三句,我在 AI Agent 的完成回報裡看過很多次。看起來很完整,卻沒有交代驗證的是哪一份 Code、實際跑了哪些檢查,也沒有說綠燈在哪裡停止。 昨天修正人工重送功…
2026 iThome 鐵人賽 AI CleanCode Day 25:安安~我是ChiYu~ 昨天我補強了 Dependency Rule 與 Architecture Test,確保 Use Case 不會直接依賴資料庫或外部 SDK。不過,那組測試只守住 Use Case;Controller 仍能另…
2026 iThome 鐵人賽 AI CleanCode Day 24:安安~我是ChiYu~ 昨天剛把 EF Core 與通知 SDK 留在 Use Case 外圍,今天我就故意把 WorkItemsDbContext 加回 OverdueWorkItemProcessor 的建構式。Release Bu…
2026 iThome 鐵人賽 AI CleanCode Day 23:安安~我是ChiYu~ 昨天整理元件邊界時,我保留了既有通知 Port,卻也發現一個不能忽略的問題:它接收的參數仍是 EF Core 使用的 WorkItem Entity。表面上隔離了通知 Provider,核心實際上還在說 Pers…
2026 iThome 鐵人賽 AI CleanCode Day 22:安安~我是ChiYu~ 昨天,我把工作項目的生命週期與通知傳送拆成兩條 Use Case,但它們仍在同一個 API Host 裡執行。通知流程只認得 IWorkItemNotificationSender,實際使用 Demo 還是 Qu…
2026 iThome 鐵人賽 AI CleanCode Day 21:安安~我是ChiYu~ 昨天,我把會獨立改變的重試規則從 Dispatcher 分離出來。但打開目前的 Solution,裡面早已有三個正式 Project,Build 後也會產生多個 DLL。這是不是代表架構早就取得獨立性了? 還不一…
2026 iThome 鐵人賽 AI CleanCode Day 20:安安~我是ChiYu~ 昨天,我們處理了 HTTP 與背景 Worker 同時選中同一筆 Work Item、進而重複送出通知的問題。資料更新、通知傳送、失敗重試與取消路徑,也都有對應測試。 從行為價值來看,昨天的需求已經完成。不過,測…
2026 iThome 鐵人賽 AI CleanCode Day 19:安安~我是ChiYu~ 昨天加入背景 Worker 後,逾期流程多了第二個入口:使用者可以透過 HTTP 主動觸發,Worker 也會依排程執行,最後兩邊都呼叫同一個 IOverdueWorkItemProcessor.ProcessA…
2026 iThome 鐵人賽 AI CleanCode Day 18:安安~我是ChiYu~ 昨天談完元件原則後,Work Item API 已經形成三個清楚的責任區域:API 處理 HTTP、資料與通知流程,WorkItems.ServiceLevel 保存共用的 SLA 規則,Reporter 則是只…
2026 iThome 鐵人賽 AI CleanCode Day 17:安安~我是ChiYu~ 昨天整理完通知的行為契約、Consumer 需要的能力與原始碼依賴方向後,系列接續版本仍只有一個 Production Project。IWorkItemNotificationSender 由高階 Use Ca…
2026 iThome 鐵人賽 AI CleanCode Day 16:安安~我是ChiYu~ 昨天把服務等級與派工政策分開後,今天我在共同通知介面後方,再放入一個 Queued Provider。Provider 就是負責實際送出通知的替代實作。 Demo 與 Queued 都能實作同一個 Interfa…
2026 iThome 鐵人賽 AI CleanCode Day 15:安安~我是ChiYu~ 昨天只有兩條通知升級規則,而且都由同一位服務等級政策負責人維護。我因此把判斷集中在 RequiresEscalationNotification,沒有再建立 Interface 或規則集合。對當時的需求來說,一個…
2026 iThome 鐵人賽 AI CleanCode Day 14:安安~我是ChiYu~ 前天談測試紀律,昨天接著確認整潔的測試與驗收測試能不能真的守住需求。今天,這個系列正式跨過 Part I〈程式碼〉,進入 Part II〈設計〉。 一進入設計,測試全綠就不再是最後答案。 同一個 Agent 交出…
2026 iThome 鐵人賽 AI CleanCode Day 13:安安~我是ChiYu~ 昨天談測試紀律時,我比較了直接完成、TDD 與 TCR。那些實驗回答的是:測試何時介入,會怎麼改變 Agent 的前進節奏與還原範圍。 今天遇到的問題更麻煩:測試介入得很早,不代表測試問對了問題。 在產品範例驅動…
2026 iThome 鐵人賽 AI CleanCode Day 12:安安~我是ChiYu~ 昨天比較類別拆分時,控制組、行數上限與內聚拆分都能把升級通知做對,也都通過最後的行為驗證。 若只看終點,三種結構都像是成功的候選。可是最後一片綠燈,只能證明它們抵達了終點,沒有說明途中累積了多少尚未驗證的修改,也…
2026 iThome 鐵人賽 AI CleanCode Day 11:安安~我是ChiYu~ 昨天我先釐清 WorkItem、DTO 與 EF Entity 各自負責什麼。最後沒有建立第二套 Domain Model,只把指派、完成與逾期狀態轉換收回 WorkItem。 物件角色清楚之後,新的問題也浮了出…
2026 iThome 鐵人賽 AI CleanCode Day 10:安安~我是ChiYu~ 昨天我比較了一次重寫與分段 Commit,最後保留可以逐步驗證、失敗時局部還原的清理節奏。函式內部整理完後,我接著往物件邊界看,WorkItemsController 裡還留著幾行很直接的 Code: 這些 Se…
2026 iThome 鐵人賽 AI CleanCode Day 9:安安~我是ChiYu~ 昨天,我把同一項需求交給三種函式結構,觀察全新 Agent 會如何理解資料、又會把修改放在哪裡。我最後採用 CQS,但那只回答了資料目前該放哪裡,還沒回答修改走偏時要怎麼退回。 今天接著比較同一段清理工作:讓 Ag…
2026 iThome 鐵人賽 AI CleanCode Day 8:安安~我是ChiYu~ 昨天,我從三份函式拆分結果中選了 Stepdown 版本。 ProcessOverdue 現在可以由上而下讀成四個步驟:找出逾期候選、逐筆處理、儲存狀態、回傳結果。入口變清楚了,但一份結構是否真的好用,不能只看今天…
2026 iThome 鐵人賽 AI CleanCode Day 7:安安~我是ChiYu~ 昨天,我們替 Work Item 逾期流程保留兩則有測試依據的警告註解,也確認 Formatter 只能整理已設定的格式規則。 註解沒有逐行翻譯 Code,排版也整理好了。可是打開 ProcessOverdue,查…
2026 iThome 鐵人賽 AI CleanCode Day 6:安安~我是ChiYu~ 昨天,我們把 Work Item 逾期流程的命名規則寫進 Repository,讓 Agent 可以在安全範圍內自主命名。 名稱說清楚之後,我接著測另一個很常見的要求:補註解、整理格式,真的會讓程式碼更好讀嗎? 這…
2026 iThome 鐵人賽 AI CleanCode Day 5:安安~我是ChiYu~ 昨天,我把逾期處理中的單筆流程抽成一個私有方法: ProcessOverdueItemAsync 看起來很像一個好名稱:有動詞、有處理對象,也保留非同步方法常見的 Async 結尾。 但只看呼叫端,我仍然得猜:它只…
2026 iThome 鐵人賽 AI CleanCode Day 4:安安~我是ChiYu~ 同一段四十多行的 Controller Action,我交給同一個 AI Agent,用兩種整理範圍各跑一次。 兩份結果都通過測試:一份把 Action 壓到十七行,另一份保留三十八行,只抽出單筆逾期處理。若只看行…
2026 iThome 鐵人賽 AI CleanCode Day 3:安安~我是ChiYu~ 昨天的 Agent 很有把握地寫下: 已完成逾期處理的 Clean Code 重構。 它確實改善了命名與閱讀順序,既有行為驗證也沒有發現漂移。可是看完這份完成報告,我沒有先問 Code 還能不能更漂亮,而是卡在一個…
2026 iThome 鐵人賽 AI CleanCode Day 2:安安~我是ChiYu~ 昨天,我真的把這句話交給了 Codex: 改善逾期處理,讓它符合 Clean Code。 Agent 最後交出一份看起來很成功的候選:能 Build、測試全綠,名稱更清楚,主要流程更短,Diff 也集中在逾期處理。…
2026 iThome 鐵人賽 AI CleanCode Day 1:安安~我是ChiYu~ 前兩個 iThome 鐵人賽系列,我從七月就開始準備;進入九月前,稿件也都如期完成。 照理說,這時候應該可以先喘口氣。可是在整理那兩個系列的過程中,我一直惦記著另一個題目,甚至覺得它可能會比原本的規劃更有意思。 但…
整理 Matt Pocock 與 Uncle Bob 的訪談重點,從 CRAP、變異測試、多 Agent 品質流水線,到我從 AI Coding 實作整理出的 CLEAN 五原則,思考工程師如何建立可驗證的信任。
深入拆解 Matt Pocock Skills 如何從需求釐清、規格與 Tickets,一路接到 TDD 和雙軸 Code Review,並判斷這套 AI 工程 Workflow 適合哪些開發情境。
很多人想到 AI,會先想到效率、工作流程、模型和自動化。但這篇文章想記錄另一面:AI 其實也可以很溫馨,讓一張有記憶的照片,變成每天上班時安靜陪伴我的小身影。
Workflow Skill Router 是我開源的 AI Agent SKILL routing pattern,讓多 SKILL Agent 在工作開始前先選出 1 個 Primary SKILL 與少量 Supporting SKILL,降低 Agent sprawl 裡的 skill selection sprawl、上下文噪音與工作流失控。
這是一篇 Codex App Worktree 操作篇,從 repo 前置整理、AGENTS.md、Local environments、setup scripts、actions、建立 Worktree thread 到驗證與收尾,整理一套可以照著做的 AI Agent 開發流程。
從 AI Agent 開發流程的角度說明 Codex App Worktree 的核心價值:它不是多一個資料夾,而是讓任務隔離、平行探索、審查與回復都變得更像工程流程。
Side Project 不一定要一開始就做大。這篇文章用 MD2DOC-Evolution 的 GitHub Star 與 Google Analytics 流量,分享為什麼小而準的題目、真實痛點與差異化,比做一個巨大但沒人用的產品更重要。
AI 讓工程師少寫了一部分程式碼,但也把真正的重心推到需求釐清、規格設計、MVP 切分與可推進任務管理。這篇文章整理 AI 開發時最核心的工作框架。
面對 AI 能在兩個月內產出 30 萬行穩定程式碼的震撼,資深開發者該如何自處?我看完訪談五倍學院創辦人高見龍(龍哥)的影片 對於 AI 開發時代的焦慮、轉型與基本功價值的深刻體悟。
在 AI Agent 的架構中,SKILL 是讓大語言模型(LLM)與現實世界互動的核心橋樑。本文詳細探討 AI Agent SKILL 的定義、標準結構規範 (v1.0),並提供高品質 SKILL 的撰寫指南與 DDD 思維的應用。
體驗全新的 CDD (Conductor Driven Development) 開發模式!本文分享如何利用 Google Gemini CLI Conductor 指揮 AI,在極短時間內開發出具備手機遙控功能的 MD2PPT 簡報工具。
SDD (Spec Driven Development) 是將 DDD 升級為強制的規格藍圖,利用結構化規格確保 AI 實作的精準性與可維護性。
今天我們將為原本臃腫的 script.js 進行一次徹底的「整形手術」,引入專業的 JavaScript 模組化結構。
今天我們將扮演「結構工程師」,將昨天生成的 UI 原型進行專業級的「大改造」,落實關注點分離原則。
今天,是我們「左手藍圖,右手魔法」協奏曲的上半場終章。我們將回顧我們走了多遠,沉澱我們學到了什麼,並展望未來。
今天我們將命令 AI 代理人,根據設計好的「模組化專案結構」,一步到位地為我們生成整個後端專案的基礎架構。
今天,我們將完全在終端機內,描繪這張地圖,產出兩份從「使用者視角」出發的關鍵文件:使用者故事與使用者流程圖。
介紹 Side Project「習慣人生 RPG」,這是一款結合習慣養成與 RPG 元素的應用程式,旨在將生活中的待辦事項轉化為遊戲任務,讓自我成長變得更有趣。