ソフトウェア開発をやっていると、実に様々な「○○駆動」に出会います。
ドメイン駆動、ユースケース駆動、テスト駆動・・・
開発や設計の進め方だったり、考え方だったりについては、「駆動」以外にも似たような単語がありますね。
オブジェクト指向などの「指向」、ユーザー志向などの「志向」、人間中心デザインなどの「中心」、モバイルファーストなどの「ファースト」、etc。
その中にあってTDDやDDDなどは、どうして「駆動/ドリブン」なのか?を考えたことがありますか。
一歩留まって考えると、ただ「○○を最初にやること」ではないはずだ、と気付くはずです。
私は、この言葉を使う時、中核には「フィードバックを得やすくする」「あるべき姿の探索を推進する」ための仕掛けである!という主張が眠っているものと捉えています。
更に一歩踏み込んで、「なぜ、そうした仕掛けが必要なのか?」も考えてみましょう。
その答えは、「人間として、プログラミングを少しでも楽にするため」だと私は捉えています。
複雑で難しい問題を解く時、「できるところから始める」と進みやすくなります。
高度で曖昧な問題に取り組む時、「間違いに気づいて修正ができる」と正解に近づきやすくなります。
つまり、「認知負荷がキャパシティを超えないようにチャンクする」「適切なタイミングでフィードバックを得る」「軌道修正をする」を組み合わせることで、人間の問題解決能力が高まるのです。
「○○駆動」とは、正にこうした「人間が進むための杖」となるべきものでしょう。