📌 30 秒摘要(Layer 3|讀完用自己的話寫一句)
這本書的一句話:軟體是在大腦裡創造出來的,所以與其只升級語言與工具,不如「重構你的濕件(大腦)」——刻意訓練學習力、思考力與直覺,讓自己從照規則辦事的新手,一路走向靠情境直覺判斷的專家。
🗺 心智圖(Canvas)
程式設計師的思維修煉
Link to original 程式設計師的思維修煉
開發認知潛能的九堂課
🎚 從新手到專家
🎯 什麼情境該想到我
當你想判斷自己在某項技能上到底在哪個程度、下一步該怎麼進步,或者想知道怎麼帶不同程度的人的時候。
出處:Andy Hunt《程式設計師的思維修煉》(Pragmatic Thinking and Learning,站內為簡體譯本,引文保留原書字形)。對應第 2 章。
⚙️ 怎麼用
前提:針對每一項技能
「德雷福斯模型针对每项技能。」「这是一个情境模型,而不是个性或能力模型。」——「你可能只是烹饪新手,但却可能是跳伞专家。」
五個階段
階段 原書的描述 需要什麼 1. 新手 很在乎能不能成功,出錯容易慌亂;不知道哪條規則最相關,意外發生就不知所措 「与情境无关的规则」,形式是「当 X 发生时,执行 Y」;「新手需要指令清单」 2. 高級新手 能稍微擺脫固定的規則,自己嘗試任務,但仍難以解決問題;想快速找資訊(例如快速翻文件找方法的定義) 還沒有全貌——「高级新手不想要全局思维」 3. 勝任者 能建立問題領域的概念模型;能獨立解決問題;「开始寻求和运用专家的意见」;常被視為「有主動性」「足智多謀」 但還不能反思與自我糾正 4. 精通者 「需要全局思维」;「精通者能够自我纠正」;能從他人的經驗與案例中學習;能理解並運用「格言」(在情境中使用,不是指令清單);能有效運用設計模式 全貌與情境 5. 專家 知識的主要來源;約占 1%–5%;「专家凭直觉工作」,而且「不需要理由」;可能完全說不清自己怎麼得出結論 不要用規則束縛他們 三個轉變:從依賴規則轉向依賴直覺;問題不再是一堆同樣重要的單元,而是只有部分相關的整體;從問題的旁觀者變成系統的一部分。
原書也指出:「经验」要能改變思維——「一年的经验重复了九次」不算。
原書引用的研究
- 規則會斷送專家:研究者請資深飛行員替新手訂出最佳實踐的規則,新手照著做確實進步了;但再要求專家遵守自己訂的規則,「结果专家的表现明显不如以往」。
- 大多數人停在第二階段:技能的分布不是鐘形曲線——「大多数人的大多数技能……从来没有高于第二阶段高级新手」。
- 一次用掉 17 個設計模式:一位開發者剛讀完 GoF,就把 23 個模式中的 17 個塞進一小段平凡的程式碼——高級新手與勝任者常把設計模式當成指令清單用。
自我定位最大的障礙:「二階不勝任」
原書引用 Kruger 與 Dunning 的研究——一位銀行搶匪以為臉上塗了檸檬汁,攝影機就拍不到他。缺乏準確自我評估的狀態,原書稱為「二阶不胜任(second-order incompetence),也就是说,不知道自己不知道」。低技能的人會高估自己;唯一的矯正方法是提升技能,進而提升元認知能力。
原書的實踐單元
- 自我評價:你工作中的主要技能,在模型的什麼位置?
- 辨別哪些技能在哪個階段——「注意可能会出现二阶不胜任的情况」。
- 「对于每项技能,判断你需要做什么才能提高一个级别」。
第 9 章的提醒:「保證誠實。你需要更多的訣竅還是更多的情境?更多規則還是更多直覺?」
用在帶人
「一种规格并非处处适用」:
- 新手需要「快速成功和与情境无关的规则」——給他們需要的幫助,而不是全貌。
- 專家需要全貌——「不要用约束性、官僚的规则妨碍他们」。
- 團隊理想上混合各種層次。
在工作中的樣子:一個工程師的自評
技能 階段 需要什麼才能進一級 Go 語言 勝任者 讀好的開源專案、讓資深者 review,理解各種寫法背後的取捨(情境) Kubernetes 高級新手 一份「遇到 X 就查 Y」的檢查清單,加上親手處理幾次事故 系統設計 新手 從具體的規則開始(例如 工具-容量估算 的步驟) 🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 專家不是完人:專家會犯錯、有認知偏誤,彼此之間也會有分歧。
- 專家不等於老師:教學是另一項技能;專家常說不清自己怎麼決策,所以「处在胜任水平的人可能更合适教一名新手」。
- 模型是工具,不是鏡子:原書引用了形式模型可能造成的危害,例如把模型和現實混為一談。不要拿階段去替別人貼標籤。
🔗 相關工具
- 工具-務實學習投資計畫 —— 同一本書:知道自己在哪之後,怎麼規劃
- 工具-心理表徵 —— 《刻意練習》:專家的直覺是從哪來的
- 工具-找對導師與模仿頂尖 —— 《刻意練習》:找什麼程度的人來教你
- 自視過高傾向 —— 蒙格:為什麼人會高估自己
德雷福斯五階 新手使用規則,專家使用直覺
多數人一生停在「高級新手」 能辦事,但不想理解全局
逼專家講死規則 反而會讓他表現變差
🧠 認識並調試你的大腦
雙 CPU:L 模式線性語言 /R 模式整體直覺
好點子常來自被忽略的 R 模式
神經可塑性:大腦終生可重塑 成年人也能靠刻意練習長出新能力
📖 主動學習
🎯 什麼情境該想到我
當你要讀一本技術書學新東西,卻發現讀完就忘、或者讀了很多卻抓不到重點的時候。
出處:Andy Hunt《程式設計師的思維修煉》(Pragmatic Thinking and Learning,站內為簡體譯本,引文保留原書字形)。對應第 6 章 6.7 節。SQ3R 原出自 Robinson 的《Effective Study》。
⚙️ 怎麼用
前提:閱讀是效率最低的學習方式
原書說:「书面的指令通常被认为是最无效的」;「相比于任何由经验式的学习方法,阅读是一种效率最低的学习方法」。要讓閱讀有效,就要讓它更主動。
五個步驟
步驟 原書的說法 做法 調查 Survey 「扫描目录和每章总结,得出总体看法。」 看目錄、各章的介紹與總結,在深入細節前得到整體印象 問題 Question 「记录所有问题。」 寫下你想弄明白的所有問題;「把各章节的标题改写成问题」 閱讀 Read 「阅读全部内容。」 可以隨身帶著,空檔時讀;「在困难的部分放慢速度,如果内容不是很清楚就重新阅读」 復述 Recite 「总结,做笔记,用自己的话来描述。」 邊讀邊用自己的話復述、回想;原書也建議用圖像:「这个主题作为一部电影看起来像什么?卡通吗?」 回顧 Review 「重读,扩展笔记,与同事讨论。」 必要時重讀、擴展筆記,可以用心智圖 原書的例子:讀一本新程式語言的書
- 調查:翻目錄,看到語法介紹、幾個簡單的專案,還有目前不感興趣的進階特性。
- 提問:它是單繼承、多繼承還是混合?迭代器怎麼用?模組怎麼建立與管理?執行效能如何?
- 閱讀:時間多就多讀,時間緊就少讀。
- 復述:「自欺欺人并不难,你可以认为”是的,我能记住全部”。但是这并不容易。」
- 回顧:做筆記、在關鍵表格上註解、在白板上塗鴉,然後跟朋友或郵件列表討論。
側欄:測試驅動學習
「重复阅读同样的材料或者重复学习相同的笔记,不会有助于你记住材料。尝试测试吧。」做法包括:
- 用新語言寫一個程式——原書特別強調要「与书中的简单例子和练习不同」。
- 向同事解釋新方法的關鍵部分。
- 間隔測試:2-2-2-6——兩小時、兩天、兩週、六個月後各測一次自己。原因是遺忘大致呈指數曲線,間隔測試能顯著增強記憶。
結合心智圖
讀書時用心智圖做筆記;進入回顧階段時,依你的理解重畫與修改——「这种方法比其他笔记形式或者重新看书要有效得多」。
在工作中的樣子:讀一份新框架的官方文件
- S:看文件的側邊欄目錄與「Getting Started」。
- Q:這個框架怎麼處理錯誤?怎麼測試?效能瓶頸通常在哪?
- R:先讀跟你的問題有關的章節。
- R:讀完一節,關掉文件,用自己的話寫三行摘要。
- R:用它寫一個跟教學範例不一樣的小工具;一週後再回來看筆記。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- SQ3R 只是其中一種方法:「广为使用的好方法为数不少……与其功效类似的方法还有很多。」「没有放之四海而皆准的办法。」
- 2-2-2-6 不是最有效的:原書自己說它「不是使用时间的最有效方法,特别是当有大量的材料时」——每個事實的遺忘曲線不同,手動追蹤太困難,建議用 SuperMemo 這類間隔重複軟體(依每個項目的遺忘情況安排複習)。
- 閱讀本身仍然是效率最低的:最有效的是觀察與模仿,以及實際去做。
🔗 相關工具
- 工具-心智圖 —— 同一本書:SQ3R 的筆記工具
- 工具-檢視閱讀 —— 《如何閱讀一本書》:SQ3R 的「調查」就是略讀
- 工具-務實學習投資計畫 —— 同一本書:讀什麼、何時讀的計畫
- 工具-投資自己持續學習 —— 持續學習的習慣
🎯 什麼情境該想到我
當你要整理一個還不確定結構的主題——學新東西、做設計、除錯、規劃——線性的大綱寫不出來的時候。
出處:Andy Hunt《程式設計師的思維修煉》(Pragmatic Thinking and Learning,站內為簡體譯本,引文保留原書字形)。對應第 6 章 6.8 節。
⚙️ 怎麼用
定義與步驟
「思维导图是一种图表,显示各个主题和它们之间的关系。」原書說它由托尼・布贊首創,但類似的圖表至少從三世紀就有了。
「规则是松散的,但是大致步骤如下」:
- 準備一張很大的無格白紙。
- 在紙中間寫上標題,用圓圈框起來。
- 每個主要子標題從圓圈引出一條線,寫上標題。
- 對其他層次的節點重複同樣的做法。
- 其他單獨的事實或想法,從合適的標題引出線寫上。
原則:所有節點都要相連(沒有孤立的節點);只有一個根節點;用顏色、符號標記;可以用橫跨頁面的長箭頭連接相關的標籤。「避免顺时针地填写元素——这只是一种绕圈形式的大纲。」
為什麼比大綱好
- 每加入一個新想法都要問「这属于哪一块?」——所以你必須評估想法之間的關係。
- 線性大綱的層次結構,會壓制那些不符合結構的想法。
- 空間位置、顏色、符號增加了表達的豐富性。
重畫:增強記憶
學到新東西之後,在白紙上再畫一遍——「重画和从记忆中重新获取信息有助于增强连接」。作者提到他整理課堂筆記的經驗:「即使我从没有再看过这些笔记……整理草稿笔记的过程是最有价值的。」
兩種用法
練習版(「試一試」):
- 寫下一份對你很重要的 4–5 項無序清單。
- 用筆在紙上畫成心智圖。
- 等一天。
- 花 15–20 分鐘修飾:加粗線、上色、塗鴉、圖片、卡通。
- 一週後回顧,看有沒有意外的發現。
探索版(設計、除錯、規劃):
- 用詞語當標題;重要的連線用粗線,不確定的用細線。
- 「非常快速地做第一次迭代——就像一次印象派素描。这会有利于摆脱 L 型的统治」(L 型是作者對線性、分析式思考的稱呼)。
- 隨身帶著,不必一次畫完——「让它乱一会」。
原書引用 Jared Richardson 的話:「我在写作或者编程时使用思维导图改变和关注我自己。它强迫我后退一步,清空想法,然后告诉我如何前进。」
協作版:每人拿便利貼和筆,頭腦風暴後把便利貼貼上白板,歸類同主題、圈起來連線,拍照寄給大家。
在工作中的樣子
除錯:中心寫「訂單重複扣款」;分支是「客戶端重送」「閘道重試」「訊息佇列重送」「資料庫交易」——每個分支下寫已知的事實與待驗證的假設,不確定的連線畫細線。畫的過程會逼你問:「這個現象屬於哪一個分支?」
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 適合不確定的時候:「当你不完全确定你会发现什么时,思维导图是最有效的。」內容已經很確定時,普通的清單可能更有效率(這是從原書推導的,原書沒有明講)。
- 軟體工具與手繪:原書說軟體「更有利于协作和文档——而不是头脑风暴、学习和探索性思维」,這些活動建議手繪。作者說他在電腦上畫的心智圖很酷,但「这与手动就是不一样」。
- 不要強迫:修飾、塗鴉這類非目標導向的「玩」,「千万不要过于强迫」。
🔗 相關工具
- 工具-SQ3R主動閱讀 —— 同一本書:用心智圖做讀書筆記
- 工具-透視一本書 —— 《如何閱讀一本書》:擬大綱的另一種方式
- 工具-系統化除錯 —— 除錯時用心智圖整理假設
大腦不是等著被填滿的容器 而是需要被點燃的火焰
🎯 經營學習投資
🎯 什麼情境該想到我
當你想有系統地學習,但總是被緊急的事情排擠,或者學了很多卻沒有方向的時候。
出處:Andy Hunt《程式設計師的思維修煉》(Pragmatic Thinking and Learning,站內為簡體譯本,引文保留原書字形)。對應第 6 章 6.2、6.3 節。
⚙️ 怎麼用
為什麼隨機學習會失敗
原書說,把學習流放到「空閒時間」,「就等同于失败」。「时间是无法创造和销毁的。时间只能分配。」
原書對一般企業培訓的批評:「学习不是强加于你的」「仅仅掌握知识,而不去实践,没有用」「随机的方法,没有目标和反馈,往往会导致随机的结果」。
SMART 目標
「具体的、可度量的、可实现的、相关的和时间可控的(Specific, Measurable, Achievable, Relevant, and Time-boxed)」
先分清目標與目標任務:目標(goal)是「一种理想状态……是你努力要达到的状态」;目標任務(objective)是「一种帮你接近目标的事物」。SMART 是套用在目標任務上的。(原書也說「不要在这上面太过计较」。)
特性 原書的說法 S 具體 不是「我想學 Erlang」,而是「我想要用 Erlang 编写一个可以动态生成内容的 Web 服务器」 M 可度量 「如何知道你何时完成?」「如果你认为无法度量自己的目标任务,那么很可能它还不够具体」 A 可實現 「一个你无法达到的目标不是目标,只是一种疯狂、吸食灵魂的自我挫败」;要從現在的狀況出發 R 相關 與你有關、有熱情、在你的掌控之中 T 時間可控 「这可能是目标最重要的一个特性」——沒有期限,就會被每天更緊急的事排擠 原書的例子:「我想要苗條」不是目標,只是願景——減多少?什麼時候完成?控制熱量還是增加運動?
卡住時:建立五到十分鐘的小任務。原書引 Johanna Rothman:「你创建的小任务越多,你就越容易看清自己与目标的距离。」
務實投資計畫:像管理金融投資一樣管理知識投資
- 制定具體的計畫:用 SMART,分三層——現在(下一步行動)、明年的目標、五年後的目標。時間範圍可以調整;發展慢的行業也可以是現在、三年、十年。原書引艾森豪:「作计划比计划本身重要得多。」
- 多樣化:組合不同的語言、環境、技術、行業,以及非技術領域(管理、公開演講、人類學、音樂、藝術)。也要權衡風險與回報——原書的例子是:學 .NET 低風險低回報,早期學 Java 高風險高回報。原書說:「所有知识投资都有价值」,即使工作用不上,也會影響你思考和解決問題的方式。
- 主動(而非被動)地投資:「你需要客观地按天来评估你的计划」——依最新的發展增加新項目、取消沒有效益的。
- 定期投資(成本平均法):「养成一种习惯。」每次坐下來學習之前,先計畫好要做什麼——原書的例子:學一個新框架前,先準備好書、下載好軟體、想好要寫什麼;「只是周六下午或者周二晚上很可能是不够的」。
在工作中的樣子
層次 範例 現在 這週讀完 pprof的官方文件,並對我們的訂單服務跑一次 CPU profile明年 能獨立完成一次服務的效能調校,把 p99 降低 30% 五年 成為團隊中效能與可靠性的負責人 多樣化 另外每季讀一本非技術的書(例如本站的溝通類書籍) 定期 每週二、四早上 8:00–8:45,開始前先寫下這次要做什麼 🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 時間不等於價值:「时间和价值不是等同的」——看球賽、玩遊戲不會增加你的價值,除非你是四分衛或遊戲開發者。
- 目標本身不保證成功:「目标本身并不能保证你成功。」
- 要放在更大的脈絡裡看:目標要考慮家庭、事業、財務、社區;原書提醒,整個專案都靠加班達成,會讓團隊與家庭付出代價。
🔗 相關工具
- 工具-德雷福斯自我定位 —— 同一本書:先知道自己在哪個階段
- 工具-SQ3R主動閱讀 —— 同一本書:怎麼讀
- 工具-投資自己持續學習 —— 《45 個習慣》的同一主張
- 學無止境 —— 《45 個習慣》第 3 章:持續學習的做法
用 SMART 目標與投資組合心態 管理知識,別靠碰運氣
⏱ 控制注意力
情境切換成本高昂 被打斷後重載心智情境約需 20 分鐘
時間無法創造或銷毀,只能分配 多工其實是效率殺手
🧰 這本書給我的工具(連到 tools/ 工具卡)
- 工具-德雷福斯自我定位 — 當我想知道自己或別人在某項技能上到底是新手還是專家、該用什麼方式帶
- 工具-SQ3R主動閱讀 — 當我想真正吃透一本技術書、讀完不忘
- 工具-心智圖 — 當我想看清概念之間的關係、理清一團亂的思緒
- 工具-務實學習投資計畫 — 當我想把「有空再學」變成真的會發生的學習
✨ 關鍵重點(Layer 1–2|高亮遞進)
- 德雷福斯技能模型:技能養成分五階,新手靠規則、專家靠直覺;同一個人在不同技能上可能落在不同階段。
- 多數人一生停在「高級新手」:能處理日常任務,但不想理解全局、也不主動反省。
- 大腦像雙 CPU:偏線性語言的 L 模式與偏整體直覺的 R 模式,好點子常來自被忽略的 R 模式。
- 專家的本事來自直覺與情境模式匹配,而不是有意識地套規則——所以逼專家講死規則反而會讓他變差。
- 神經可塑性:大腦終生可重塑,成年人也能靠刻意練習長出新的能力,不是「定型」了。
- 情境切換成本高昂:被打斷後重新載入心智情境約需 20 分鐘,多工其實是效率殺手。
- 主動學習遠勝被動灌輸:大腦不是等著被填滿的容器,而是需要被點燃的火焰。
- 要刻意經營自己的學習:用 SMART 目標與投資組合的心態管理知識,別靠碰運氣。
💬 金句原文(Layer 0|讀時貼進來)
- 「软件是在头脑中创建的。」
- 「新手使用规则,专家使用直觉。」
- 「大脑不是一个用于填充的容器,而是一束需要点燃的火焰。」(普盧塔赫)
- 「时间是无法创造和销毁的。时间只能分配。」
🔗 相關
- 軟體工程 —— 主題索引,那裡收錄本書的認知與學習工具在整體技術地圖中的位置