心態篇
- 工具 ≠ 語言:VC、BCB、VS Code、IntelliJ 只是 IDE,別被工具術語綁架,核心是語言本身。
- 簡單問題往往最深:別輕視看似簡單的 Bug 或基礎題,它們常隱藏核心機制(記憶體模型、生命週期、併發語義)。
- 會用 IDE ≠ 會語言:只看 IDE 教學學不會 C++/PHP/Go,必須研讀語言標準、原始碼、編譯器行為。
- 堅持 > 天賦:Template、STL、泛型、設計模式不難,難的是「長期刻意練習」與「博覽群書」。
- 寫遊戲是學習動力,不是捷徑:別以「我想寫遊戲」為藉口逃避基礎;扎實基礎才能駕馭引擎。
- 過時技術藏智慧:把經典模式、演算法、系統原理記在心裡,比追逐熱門框架更有價值。
學習篇
- 看得懂的書精讀,看不懂的書硬啃:《C++ Primer》、《Effective C++》、《深入理解計算機系統》、《TCP/IP 詳解》——讀三遍以上。
- 離開 IDE 搖籃:會用命令列編譯 (
g++, clang)、鏈接、除錯 (gdb, lldb)、分析 (perf, valgrind),才真正掌控構建流程。
- 高質量討論 > 無意義爭論:討論「為什麼這裡用 shared_ptr 而非 unique_ptr」,而非「C++ 比 Rust 強」。
- 《程式設計實踐》實踐:嚴格遵循編碼規範、重構節奏、測試策略。
- 語法相似 ≠ 語義相同:C/C++ 關鍵字同名但語義迥異(如
static, const, virtual),必須在語言語境下理解。
實戰篇
- 秘訣:Code, Code, Code:沒有捷徑,只有大量寫、跑、改、重構。
- OO 不只屬於 C++:Go interface、Rust trait、Java interface、Python protocol 都是多型表達,跨語言學習設計原則。
- 親手敲書上範例:光看不敲 = 0 輸入。配套原始碼只供對照,不可替代肌肉記憶。
- 擴充書中範例:加邊界條件、加併發、加持久化、加測試,變成真專案。
- 重視異常處理:不是
try-catch 糖衣,而是資源管理 (RAII)、錯誤傳播策略、失敗原子性。
- 定期回顧重寫舊代碼:半年前的代碼若不想重寫,說明沒成長。套用新知識重構是最好的檢驗。
- 不漏掉任何練習題:全部做完、記錄解題思路、對照標準解、分析差距。
- 語言與 IDE 雙軌並進:一手精通語言核心,一手駕馭 IDE 重構/除錯/靜態分析功能。
- 平台之爭交給市場,專注語言本身:Windows/Linux/macOS、x86/ARM、Clang/GCC/MSVC 都會變,語言核心相對穩定。
工程師成長階段
- 遇到拙劣方案中途發現:先把剩下部分「能跑通」寫完,保證設計完整性;再回頭分析錯誤、重設計、重寫。別半途而廢留下爛尾專案。
- Class 設計不易,在實踐中演進:單一職責、開放封閉、里氏替換、介面隔離、依賴反轉 (SOLID) 是指南針,非教條。
- 教學相長:能講清楚才算懂:每攻克一個難點,嘗試寫部落格/錄影/內部分享,逼自己建構完整知識圖譜。
結語
這份守則不僅適用於 C++,同樣指引 PHP、Go、Rust、Java、Python 開發者。將其內化為習慣,每天進步 1%,十年後回望,你會發現自己已成為那個「能獨當一面、設計穩健系統、帶領團隊攻克難關」的資深工程師。