A Philosophy of Software Designを読んで、「戦術的プログラミング」と「戦略的プログラミング」という用語を知ったので抜粋意訳メモ。
戦術的プログラミング(Tactical programming)
ほとんどのプログラマーがプログラミングするときに取り組む方式。
機能を追加したり、バグを修正したり、”動作する”ことに主眼を置く。
気持ち:最良の設計よりもできるだけ早く仕事を終わらせたい。
戦略的プログラミング(Strategic programming)
コードを書くだけでは十分ではないことを理解する
不必要に複雑さを導入せず、システムが長期的に変更に耐えうる、将来の拡張を容易にする設計を最も重要とする。
投資マインドが必要。現在のプロジェクトを終わらせるために最速の道を選ぶのではなく、システムの設計を改善するために時間を投資する。
気持ち:優れたデザインを生み出すこと。(それがたまたま機能すること)
所感
開発業務をプロジェクトと捉えると、ソフトウェアを動作させる(すなわち仕事を終わらせる)ことだけを考えてしまって、よわよわコードを生み出しがちである。
納期に追われてコードがぐちゃるのとは違い、そもそも将来の自分を助けるようにコードを最初から設計しようぜと。
負債となったコードが問題を起こすのがプロジェクトの終わったあとであるため、 プロジェクト形式の進め方がよろしくなくプロダクトに重点を置いて開発しようぜに繋がると感じた。 (プロジェクトの成功→開発の終了、プロダクトの成功→開発の”継続”)
まとめ
みんな戦略的プログラミングしようぜ!