品質と効率は両立するか?

ソフトウェア開発の永遠の課題として、「品質」と「効率」が存在する。よく耳にするフレーズである。「今年のわが社の目標は、品質第一!開発効率化を促進し利益を上げる!!」、などとゆう年間目標を、掲げている会社は多いことと思う。確かに、通常業務や雑務を見ていると、効率の悪い人のアウトプットは、品質が悪いケースがよく目に付く。必要な範囲の効率化は、無駄な作業を省き、作業を明確に出来るので有効である。だが、それは低レベルな話であって、必要以上の効率化は、品質と相反するものであると考える。


例えば、ビルの工事現場で、早く建てるように要請が降りてきたとする。その工事が問題なく進んでいるとすれば、現場監督は不審に思うだろう。そして取る行動は、手抜き工事になってしまう。手抜き工事の結末は、欠陥が随所で発見され、それこそ、当初の予定を上回る納期になるか、納入後にクレームが多発し、信用を落としてしまうことになる。これは、全てのことに言える。料理に関しても、手抜きをした料理がうまいはずが無い。


エンジニアは、アーティストであり、プロフェッショナルである。自分が作成したものに、プライドを持ち、完璧なものを作成することを、誰しも望む。そのような人に、「効率を上げてくれ」ということは、品質を下げてくれといってるも同じことなのである。それは、品質だけではなく、その人のプライドも傷つけ、如いては、モチベーションが下がり、結局は効率
が低下してしまい、品質も下がる。結局のところ、効率を上げることを目的とする効率化は、意味を成さない。だが、最終的に、「品質」「効率」を上げることは、可能である。これまで、説明してきたように、環境を整え、チーム力を強化し、モチベーションを挙げることにより、最終的にはよい結果が生まれる。だが、注意しなければならないのは、これを「効率化」なんて言葉にしてしまったら最後、これまで築いてきたものは、一気に崩れ去ってしまうだろう。


vol.43

「品質」と「効率」を両立させるものとしてひとつ可能性があるとしたら前回も書きましたがモデルベース開発(MBA)ないしモデル駆動開発(MDD)ではないかと思いますが、残念ながらまだまだ未成熟です。今後ソフトウェアにおけるこの二つの長年の課題をクリアするためには新しい開発技法を成熟させていく必要があるでしょう。コンパイラも最初はバグだらけでした。コンパイルの後にアセンブラを確認していたころが懐かしいです。自動コード生成も同じようなものです。成熟していけばそのうちソースコードを見なくてもよい日がくるでしょう。