自動化是四大核心原則中,投資報酬率最直接、卻最常被忽略的一項。它的本質是:把重複、手動、易錯的工作交給機器,把人的時間留給真正需要判斷力的事。

一條實用的個人原則:同一件手動操作做超過三次,就在第三次寫工具把它自動化。

為什麼工具的回報常被低估#

投資省時工具的人,效率會被持續放大,原因有三:

  • 更快的工具會被用得更頻繁:當編譯從 20 分鐘降到幾秒,你不再「批次抓錯」,而是依賴即時回饋邊寫邊改。
  • 更快的工具會解鎖新的工作流:速度的量變會帶來工作方式的質變。
  • 效益會隨採用人數放大:替團隊每人每次建構各省一分鐘,累積起來可能是好幾個人週的工時。

工具的價值是可以量化的。若團隊每週花 3 小時人工重啟當機的伺服器,而你花 12 小時寫自動重啟工具,一個月內就回本——之後都是淨賺。用實際數據說服同事與主管。

持續部署:用小批次降低風險#

把「自動化」推到極致,就是持續部署(Continuous Deployment):每天部署數十次,每次只含一小批變更。

flowchart LR
    A[小批變更] --> B[自動化測試]
    B --> C[金絲雀驗證]
    C --> D[自動部署]
    D --> E[儀表板監控]
    E -->|異常| F[一鍵回滾]

    style B fill:#c8e6c9,stroke:#2e7d32
    style C fill:#fff9c4,stroke:#f9a825
    style F fill:#ffcdd2,stroke:#c62828

持續部署不是「犧牲品質換速度」,而是「用小批次降低風險」。批次越小,問題越容易定位、回滾越容易、事故影響面越小。

支撐持續部署需要的工程投資:自動化的測試框架、金絲雀伺服器、健全的儀表板與告警、簡單可靠的回滾機制,以及用功能開關(Feature Flag)控制大功能的開放範圍。

縮短除錯與驗證的迴圈#

工程師花在除錯與驗證的時間,比想像中多得多。願意投資縮短這段迴圈的人,效率拉得最開。

我們熟悉 Bug 報告要附「最小可重現範例」,這個思維也該延伸到日常開發迴圈本身。當你發現自己重複在做同一串動作,停下來想想能不能把這個迴圈縮短。

  • 修 App 某個深層畫面的 Bug?寫個啟動參數,讓 App 一打開就直接跳到那個出錯狀態,不必每次手點三層介面。
  • 驗證報表 Bug?用 URL 參數直接帶入過濾條件與日期區間,省下每次重新配置的時間。

精通你每天都在用的工具#

我們一輩子會花無數小時在編輯器、IDE、瀏覽器、版本控制與命令列上。這些日常工具的熟練度差異,累積下來就是一整個工作週甚至更多。

七項基本功
  • 熟練編輯器 / IDE:把搜尋取代、檔案跳轉、自動補全練到反射動作。
  • 精通一個高生產力腳本語言:當瑞士刀用,快速處理一次性任務。
  • 熟悉 UNIX Shellgrepsortuniqawksedxargsfind 串起來,幾秒完成原本要幾分鐘的事。
  • 鍵盤優先於滑鼠:減少手部移動與脈絡切換。
  • 自動化手動流程:啟動服務、建置、部署都應一鍵完成。
  • 善用 REPL:即時驗證表達式與想法。
  • 讓單元測試易跑、跑得快:只跑受影響的子集,整進編輯器快捷鍵。

別忽略「非工程」的瓶頸#

過早的最佳化是萬惡之源。若你真正的瓶頸是「每週的審查會議」,再快的部署系統也救不了。

最佳化迭代速度的本質,就是辨識最大的瓶頸並消除它——而瓶頸不一定是技術。常見的人為/流程瓶頸包括:相依於他人遲遲未到的設計稿或 API、決策者遲遲不拍板、發布前的審查排程太晚。解法是及早溝通、爭取早期回饋,必要時主動接手他人的工作讓功能更早出貨。專案多半因「溝通不足」失敗,極少因「過度溝通」失敗。

實戰指南#

情境行動指南
手動做某事第三次寫工具把它自動化
部署上線小批次、頻繁、可一鍵回滾
反覆除錯同一問題縮短重現與驗證的迴圈
每天用的工具把快捷鍵與命令練到反射動作
想加速卻沒效果先找出真正的瓶頸,它可能不是技術