プリンシプル

プリンシプル 銀の弾などない

エンジニアの生産性を倍増させるような特効薬(技術、仕組み)はない。1986年から10年間は現れないだろう。

背景

タイトルの「銀の弾などない」は、一度は聞いたことがあるかもしれない。これは、ソフトウェア工学の論文のタイトルで、著者は、人月の神話などでも有名な、フレデリック・ブルックスだ。(アメリカのソフトウェア技術者、計算機科学者で、IBMのメインフレームであるSystem/360と、そのOSであるOS/360の開発者として有名である。)

全て問題に通用するような万能な解決策は存在しないと論じており、理想論的なソフトウェア設計や、計画に対して、否定的な意味で「銀の弾などない」という、言葉が使われるようになった。

詳解

ソフトウェアは、一度にすべてを理解できないような大きさになることもあり、本質的に複雑だ。(大きいことでさらに複雑になりやすい。)人の道具であるため現実に存在し同調する必要があるだけでなく、要素の一部である場合も多く、他のソフトウェアやハードウェアと接続されることもある。また、現実の変化や、開発時でさえも要求が変わることで、ソフトウェアは常に変化する可能性がある。そのような流れで開発されたソフトウェアは、その中身はコードであり、手にとって触れられないだけでなく、抽象化され、状態も含めてすべてを可視化することもできない。

このような性質、複雑さから、すべてを解決するような仕組みを開発するのはとても難しい(存在するのかもわからない)と言える。

理想論的なソフトウェア設計や計画に対して、エンジニアができるのは、この複雑さを理解した上で、改善を積み重ねることである。すべてに通用するような仕組みを望み、そういったものを待ち続けたり、その場しのぎのためのコードを書くのを避けることだ。これまでの歴史から学び、より良い方法を模索し、複雑さに対処し改善を積み重ねるしかない。

具体的な対策

考え方を一つ紹介する。「いかに本質に備わる部分を改善するか」である。

すべての物事には、「本質」とそれに備わった、付随するような部分(偶有な部分)がある。本質は、対象の欠くことのできない、最も大事な性質・要素である。備わった、付随する、とあるように偶有な部分は欠いても成立する。

本質に比べ、偶有な部分は容易に改善できる傾向にあるため、偶有な部分の改善が一つの対応策である。

最近では「テスト」「ビルド」「環境構築」などが、大きな実績を上げ、作業効率や作業品質を改善した。このように偶有な部分を改善することで、本質的な作業に集中し、時間がさけるようになるのである。