2003年、Kent Beckは『テスト駆動開発』を出版しました。「テストを自動化する」という話ではありません。不確実なプログラミングという作業の中で、一歩ずつ理解を深め、設計を導き出すためのワークフロー。Beckが書いたのはそういう本でした。
核心は、分析・設計・実装を時間軸で切り離し、小さな歩幅で繰り返すことにあります。
- **分析(テストリスト)**── 解くべき問題を「期待される振る舞い」としてリストアップする
- **インターフェースの設計(テストを1つ書く)**── リストから一つ選び、「どう呼び出されるのが理想か」を決める
- **実装(テストを成功させる)**── 設計の良し悪しは脇に置き、振る舞いの実現だけに集中する
- **実装の設計(リファクタリング)**── 動作が保証された状態で、初めて内部構造を整える
一度に一つのことだけに集中する。問題を解きながら設計が立ち上がってくる。オーバーエンジニアリングも、設計の放棄も、このリズムが防いでいました。