前言
程式設計不只是寫代碼,更是一種思維模式與職業修養。這三十條守則蒐集自資深開發者經驗,涵蓋學習態度、工具觀、工程實踐、職涯規劃,適合各階段程式設計師定期回顧自省。
認知與態度篇
- 別被 IDE 綁架:VC、BCB、VS Code、IntelliJ 只是工具,核心是語言與演算法。懂 IDE ≠ 懂 C++/Java/PHP。
- 小題大做是基本功:看似簡單的問題 (如「為什麼 0.1+0.2≠0.3?」) 常藏著浮點數、編碼、並發等深層知識。
- 看得懂的書精讀,看不懂的書硬讀:第一遍建立輪廓,第二遍補細節,第三遍融會貫通。「書讀百遍,其義自見」。
- 時髦技術掛嘴邊,不如過時技術記心裡:TCP/IP、HTTP、Unix 哲學、資料結構、演算法永不過時;框架三年一換。
- 天賦不夠,練習來湊:不想寫遊戲就別學編程?反過來:為了寫遊戲而學編程,過程中掌握的圖形學、物理引擎、網路同步才是真本事。
- 面向對象非 C++ 專利:封裝、繼承、多型、SOLID 原則在 Java、C#、Python、PHP、Go、Rust 皆通用。
- 教會別人,才算真懂:費曼學習法 —— 能用大白話講清楚給非技術人員聽,才代表內化完成。
工程實踐篇
- 親手敲代碼,別只複製貼上:書上範例、GitHub 專案,逐字輸入、跑起來、改壞它、再修好,肌肉記憶勝過眼力記憶。
- 擴充書本範例:把「Hello World」改成支援多語言、插件架構、單元測試、CI/CD 流程,才是真練習。
- 異常處理不是可選項:try-catch-finally、RAII、Result/Option 型別、錯誤碼 vs 例外,根據語言生態選對策略,但永不吞沒例外。
- 定期重構舊代碼:三個月前的代碼看不下去,是成長證據。重寫時套用新學的設計模式、靜態分析、型別系統。
- 練習題全做,記錄解題思路:LeetCode、Codeforces、Project Euler,不為面試,為訓練抽象建模能力。
- 命令列是程式設計師的第二母語:Git、Docker、Kubernetes、CI/CD、系統除錯皆在終端機。脫離 GUI 也能高效工作。
- 版本控制即時光機:小步提交、語意化訊息、分支策略、Rebase 整理歷史,讓
git bisect 能精準定位 Bug。
架構與設計篇
- 別因語法相似以為語意相同:C/C++
static、Java static、PHP static、Python @staticmethod 行為大不同,必須查閱語言規格。
- Class 設計難在「職責單一」:單一職責原則 (SRP) 是審查類設計的第一標準。一個類只因一個理由變更。
- 設計模式是詞彙,不是目標:為了用工廠模式而用工廠模式是反模式。先識別問題,再選模式。
- 寫到一半發現架構爛,先把功能寫完再重構:中途推倒重來易陷入無盡循環。先交付可用版本 (MVP),再建立分支重構。
- 介面設計優於實現設計:先定契約 (Interface、OpenAPI、Protobuf),再寫實現。介面穩定,實現可替換。
- 資料結構決定演算法,演算法決定複雜度:選對資料結構 (HashMap vs B-Tree vs Trie vs Bloom Filter),效能差異數量級。
職涯與軟實力篇
- C++/Java/Go/Rust 只是語言,工程師才是通用身份:語言可換,工程思維 (抽象、分解、權衡、測試、運維) 可移植。
- 別爭論 XX 好還是 YY 好:討論適用場景、權衡取捨、團隊熟悉度、招聘成本、長期維護性。
- 閱讀優秀開源專案源碼:Linux Kernel、Redis、Nginx、Vue、React、Go 標準庫,學習大師如何組織代碼、處理邊界、寫註釋。
- 寫技術部落格/文檔:輸出倒逼輸入,建立個人品牌,幫助後人,招聘加分項。
- 學會說「不」與估算工期:工期 = 開發 × 1.5 + 測試 × 1.5 + 部署 × 1.5 + 緩衝 × 2。拒絕不合理需求,保護團隊節奏。
- 關注非功能性需求:效能、安全、可觀測性、擴展性、維護性、合規性,往往決定專案成敗。
- 保持好奇,拥抱變化:AI 協同編程、WebAssembly、Edge Computing、Quantum Computing,下一波浪潮已在醞釀。
- 健康是革命本錢:站立式辦公、定時伸展、護眼、規律運動、充足睡眠,身體垮了代碼再漂亮也沒用。
每日自省三問
- 今天寫的代碼,六個月後我還能看懂嗎?
- 今天解決的問題,有沒有更優雅/通用/可測試的解法?
- 今天學到的新知識,有沒有嘗試教給同事或寫成筆記?
總結
這三十條守則無關語言、框架、流行趨勢,關乎工程師的底色:嚴謹、好奇、務實、傳承。挑幾條最觸動你的,貼在螢幕邊,每天見一次,代碼質量與職業滿足感都會不同。