ソフトウェア開発やプロジェクト管理が進歩しない理由 - @IT MONOist
「ソフトウェア開発やプロジェクト管理がなぜ、こんなに難しいのか?」「なぜ、進歩しないのか?」。ブルックスは、次の4つの理由を挙げています。
- プログラムは、規模が非常に大きい
- ソフトウェアは、目に見えない
- プログラムは、簡単に変更できる
- 制約となる自然界の法則がなく、自由に作れる
1から3は比較的よく言われる内容だけど、4の"自然界の法則がない"というのはたしかにそうだな、と。
だから、アルゴリズムだとかデザインパターンだとか、フレームワークとかを作って"拠り所"や"基準"にしたいということなんだろう。技術者どうしの"共通認識"が多ければ多いほど、コミュニケーションコストは低くなるし、誰が作ってもある程度は同じ方向性の作りをもったプログラムコードになる。
ただ、パターンだとかフレームワークにしても自然界の法則のように必須の知識ではないことが、ソフトウェア開発の弱点だと思う。自然科学は物理法則や化学法則など不変の法則の上に成り立っているが、ソフトウェアはどうか?
コメント
「ソフトとハードの違いは何だろう?」と考えた末に思いついたことですが
(1)「自然法則」にしたがって作られているものがハードウェア、
(2)「法則」を作ってしまうのがソフトウェア、となりました。
この視点からいくと「制約がないから自由に作れる」ではなくて、法則/制約を定義するのがソフトウェアって考え方もありませんか?