TL;DR
Strategic Programming。単に動作するだけでなく、将来の拡張を見据えて優れた設計を生み出すことを第一の目標にする開発の進め方である。戦術的プログラミングと対になる。
なぜ必要か
動くことだけを重視すると、目先の作業を早く終わらせるために不要な複雑さが少しずつ持ち込まれる。大切なのは、将来の拡張を容易にする長期的なシステムの構造である。
仕組み
戦略的プログラミングには、投資のマインドセットが必要である。プロジェクトを終わらせる最速の道を選ぶのではなく、システムの設計を改善するために時間を使う。たとえば、新しいクラスを追加するときにいくつかの代替案を考えて、将来変更しやすいものを選ぶ。分かりやすいドキュメントを書くことも投資になる。
設計上の判断の間違いは避けられない。間違いが見つかったら、少し時間をかけて直す。この継続的な投資として、総開発時間の 10〜20% 程度を使うのがよいとされる。短期的には開発が遅くなるが、長期的には速くなる。
注意点
システム全体を最初に設計するような大きな先行投資は効果的でない。小さな投資を継続的にたくさん行うほうがよい。
関連
- 戦術的プログラミング: 対になる開発の進め方
- 継続的な投資
- リファクタリング
- BDUF