📌 30 秒摘要(Layer 3)

從小工到專家的實務智慧集。它不談某個技術,而是一整套「務實工匠」的心態與習慣:不重複自己(DRY)別放任破窗(小問題不修會腐蝕整個系統)、用曳光彈快速打通端到端再逐步完善、對自己的產出負責、持續學習投資自己。是把「怎麼當一個持續變強的工程師」講到位的經典。

🗺 心智圖(Canvas)

程式設計師修煉之道

程式設計師修煉之道

The Pragmatic Programmer

🧭 務實的哲學:對自己負責

提供選項,而非找藉口

持續學習,經營自己的知識資產

🧱 DRY 與正交性

🎯 什麼情境該想到我

當你發現「同一件事在多個地方重複」、改一處就得同步改很多地方(還常漏改)時。

⚙️ 怎麼用

系統中每一項知識,都應該有單一、明確、權威的表述。

  1. 辨識重複的「知識」(不只是程式碼,還有邏輯、設定、文件、schema)。
  2. 抽取到單一來源:共用函式/模組/常數/設定;讓其他地方引用它。
  3. 改動只需改一處 → 消除「漏改造成不一致」的整類 bug。
  4. 注意「假重複」:長得像但會各自獨立演變的,別強行合併(否則耦合出問題)。

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

  • DRY 是消除「知識重複」,不是消除「所有相似的字元」;過度 DRY 會造成錯誤耦合。

🔗 相關工具

  • 工具-提煉函式 —— 發現重複之後最常用的消除手法,DRY 說「該做」,這張說「怎麼做」
  • 工具-程式碼壞味道 —— 反過來用:從壞味道清單(尤其 Duplicated Code)反推哪裡違反了 DRY
  • 工具-封裝變化點 —— 互補視角:DRY 消除的是「重複」,這張隔離的是「會變的部分」,兩者常一起出手

每一項知識在系統中 都應只有單一、明確、權威的表述

正交性:降低元件耦合 改一處不牽動全身

🪟 別放任破窗(軟體熵)

🎯 什麼情境該想到我

當你想「先湊合一下、之後再修」,或看到程式碼已經很亂而放任它繼續爛時。

⚙️ 怎麼用

一扇破窗(沒修的爛程式碼、爛設計、爛決策)會招來更多破窗。 一旦「反正已經很亂」的心態蔓延,系統會加速腐爛(軟體熵增)。

  1. 看到破窗就修,或至少擋起來:立刻修小問題,或加 TODO/工單追蹤,別放著不管。
  2. 維持乾淨的基準線:呼應童子軍規則(工具-註解是必要之惡 所屬的整潔紀律)——離開時比來時更乾淨。
  3. 別破第一扇窗:你自己也別為了趕而留下「反正只有一個」的爛攤子。

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

  • 緊急時可暫時妥協,但要明確記錄為技術債並排程償還,不能無聲無息地累積。

🔗 相關工具

放任一個小爛攤子 會招來更多——看到就修

🎯 曳光彈與原型

🎯 什麼情境該想到我

當你面對一個大又不確定的系統,不知從何下手、擔心各部分兜不起來時。

⚙️ 怎麼用

「曳光彈」是先射一發能看見軌跡的子彈來校準——在軟體上就是先打通一條最細的端到端路徑(能跑、能驗證),再逐步長肉。

  1. 做一個 walking skeleton:從 UI → 邏輯 → DB 的最小可運作骨架,貫穿所有層與整合點。
  2. 及早暴露整合風險:端到端先通,最難的「各部分兜不兜得起來」提前驗證。
  3. 在骨架上增量長出功能

曳光彈 ≠ 原型:曳光彈是保留並持續發展的真實骨架;原型是探索用、用完即丟。

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

  • 別把「用完即丟的原型」當成正式基礎繼續蓋;兩者目的不同。

🔗 相關工具

  • 工具-系統設計思考框架 —— 射曳光彈之前先釐清題目:需求、規模、瓶頸在哪,才知道那條端到端路徑要穿過什麼
  • 工具-逐步求精 —— 名字像但不是同一件事:那張(書中稱「反覆精化」)精化的是資料表示法,不是交付順序。「先做能跑的骨架再長肉」是本卡,不是那張
  • 工具-架構隨業務規模演進 —— 骨架該做多複雜的判準:先簡單做,等規模真的逼你再上分散式

曳光彈:能保留的端到端骨架 (walking skeleton)

原型:用完即丟的探索

Link to original

🧰 這本書給我的工具

✨ 關鍵重點(Layer 1–2)

  • DRY:系統中每一項知識都應有單一、明確、權威的表述。
  • 破窗理論:放任一個小爛攤子,會招來更多——看到就修,別讓熵累積。
  • 曳光彈 vs 原型:曳光彈是能保留的端到端骨架(walking skeleton);原型是用完即丟的探索。
  • 正交性:降低元件間的耦合,改一處不牽動全身。
  • 對自己負責:提供選項而非藉口;持續學習、經營知識資產。

💬 金句原文(Layer 0)

  • 「別讓破窗留著不修。」
  • 「每一項知識,在系統中都應該只有單一、權威的表述。」

🔗 相關