予見重視の設計と(驚きの)発見重視の設計

読んでた。
http://d.hatena.ne.jp/yach/20121216

予見を重視した設計と発見を重視した設計に関する議論としては、戦略サファリ―戦略マネジメント・ガイドブック (Best solution)が補助線になる。こういった議論は、マネジメント、戦略のエリアでも、昔からよく議論されてきた。ソフトウェア設計にも幾つかヒントを与えてくれる。


私は戦略サファリの絵のメタファーが好きだ。

  • 予見重視は、会議室にこもった偉そうな人々が「我々の英知を結集しよう」のイメージのスクークに近く、
  • 発見重視は、数人の原始人がマンモスをおっかけなら獲物を狩るイメージのスクールに近い。

どっちも何かが欠けているよねw。すべての技法には、利点と欠点を備えているものだ。


TDDは、前払い設計のすべて始めに予見してソフトウェア振る舞いと構造を始めに確定させることの非現実的さを批判し、すこしづつ振る舞いと構造を発見していくアプローチを開拓していった。
DCIやDDDは、TDDの後者のすべてゼロからソフトウェアの振る舞いと構造を発見していく過程を批判し、もう一度、テストやコードを書く前の設計を考える枠を提示している。

どれぐらいの塩梅で、予見と発見を組み合わせるかは、Programmer-Modeler自身の判断にゆだねられている。
もしかしたら、予見重視でもない発見重視でもない第三のアプローチもあるかもしれない。