練習

練習 (Practicing) #

科技在變,核心不變 #

作者首先透過自身經歷,對比了早期電腦與現代 Mac Pro 的巨大差異:

硬體演進的驚人數據

與作者最早使用的電腦相比,現代 Mac Pro:

  • 處理速度:快了 8,000 倍

  • 記憶體:大了 2,000,000 倍

  • 儲存能力:多了 16,000,000 倍

  • 耗能:僅為 0.01 倍

  • 體積:僅為 0.01 倍

  • 價格:僅為 0.04 倍

儘管硬體經歷了指數級的飛躍,但軟體工程師的核心工作本質卻驚人地相似: 我們依然在寫 if 判斷、while迴圈和賦值(assignment)敘述。這意味著,要提升開發速度,關鍵不在硬體,而在於的操作熟練度。

任何事情想要做得快,都離不開練習。對程式設計師而言,練習的重點在於加快「編碼/測試」這個循環的過程。


練習的核心方法:Kata (對打) #

作者借用武術術語 Kata (形/對打) 來描述程式設計的練習法。

關鍵維度核心定義與意涵實踐細節與重點預期效果
定義固定招式 (Kata)一套預先設計好、模擬真實搏鬥(開發)情境的固定動作序列建立結構化基礎
練習目標肌肉記憶 (Muscle Memory)透過反覆演練將招式化為本能,確保在壓力下能反射性地做出正確回應達到技術純熟度
核心意義磨練過程而非答案重點不在解決未知難題,而是針對已知解案重複鍛鍊解決時的動作與決策優化執行精確度

當你練習得足夠多,你將能窺見程式碼流動的韻律 (Rhythm)。這種直覺能讓你在面對真實世界的複雜問題時,迅速正確反應。

作者推薦的經典 Kata #

作者常用「保齡球計分」來示範 TDD,以下是他鍾愛的練習題目:

題目核心目標重點與挑戰連結
保齡球 (The Bowling Game)複雜邏輯處理處理補投 (Spare)全倒 (Strike) 的計分邏輯狀態轉移點此前往
質因數 (The Prime Factors)演算法演進體現 TDD 如何引導出最簡潔的遞迴或迴圈演算法點此前往
自動換行 (Word Wrap)邊界條件處理練習處理字串切分、空值以及最短邊界等極端情況點此前往

多元練習模式 #

除了獨自練習 Kata,作者也提倡與他人互動的練習方式。

1. 雙人練習:Wasa #

這是一種類似桌球的互動練習:

  • 角色 A:撰寫一個會失敗的單元測試。
  • 角色 B:撰寫程式碼讓測試通過。
  • (交換角色繼續)

2. 參與開源專案 #

如何跟上技術的最新進展?最好的方式就是為開放原始碼專案 (Open-source project) 貢獻程式碼。這能讓你接觸到不同的設計思維與高標準的審查。


專業職責:利用「自我時間」 #

最後,作者強調了練習的時間點與職業道德。

執行面向核心觀點實踐建議與細節最終價值
責任歸屬專業發展自負盈虧老闆負責提供工作,而防止技能退化則是工程師個人的責任維持職涯競爭力
時間管理運用非辦公時間應利用下班後的自我時間進行技術練習與深度鑽研確保技術不落伍
回報機制能力即資產練習當下雖無直接薪資,但投入會轉化為專業能力,換取未來豐厚回報實現職涯長遠收益

就像音樂家不會在演奏會上才開始練習音階,專業程式設計師也不該在客戶的專案上練習基本功。