ソフトウェア開発を理解していない人々(4)

ソフトウェア開発はハードウェアにおける設計」であることを理解していない人々が多すぎる。理解せずに、ソフトウェア開発とハードウェアにおける製造とを混同した間違いだらけのやり方を押し付ける人々がいるから、ソフトウェア開発がほとんど進歩しない。

tonotonotonoさんの「記事の中身ってひどいの増えたね。」というエントリで知ったのだが、間違いだらけの記事があった。増えたかどうかはともかく、ひどい記事であることは異論がない。

開発技術マネジメントの必要性は、自動車製造の現場で行われている生産技術管理と比較すれば、明確に理解できるはずだ。自動車製造の現場では、複数車種の生産に耐えられる汎用的なラインを整備し、小さなパーツからエンジン、ミッション、アンダーボディに至るまで、できる限りの共通化を行った上で、作業手順の平準化によって現場技術者のスキルに左右されない環境を整えると共に、作業平準化をサポートする徹底した自動化を行っている。これによって開発・生産のコストを抑えながら、一定の品質レベルを維持しているだ。システム開発の現場でも、これと同じことを行うべきなのはいうまでもない。そしてこれを適切な形で実現するための基盤となるのが、開発技術マネジメントなのである。

ソフトウェア開発とハードウェアにおける製造とを混同している。基本的な点で大間違い。ソフトウェア開発がハードウェアにおける製造から学べることも少なくないが、ソフトウェア開発がハードウェアにおける設計であることを理解した上でなければ、逆効果になる。

しかし多くのシステム開発現場では、このようなアプローチは成功していない。それは何故か。最大の理由は自動車製造に比べ、ソフトウェアの製造の自由度が高いからである。自動車製造ではすでに作成されたパーツを、組み立て段階で修正することは考えられない。これに対してソフトウェア製造では、ソフトウェア部品を組み立てる際に、その内部コードを修正してしまう、といったことが日常茶飯事のように行われている。これによってコードとドキュメントの差異が生じたり、予想もつかなかい障害が発生するという問題を引き起こしているのだ。

ハードウェアにおける製造と同じようにやれと言うのならば、昨日作ったものと区別できないものを今日作る自動車製造のように、ソフトウェア開発において昨日開発したもののと区別できないものを今日も開発すべきとでも言うのだろうか?

ソフトウェア開発を理解していない人々」のエントリでも述べているように、ソフトウェア開発ではハードウェアにおける製造と違って同じものを作らない。昨日作ったものと区別できないものを今日作るのを当然のこととする、ハードウェアにおける製造と、昨日開発したもののと区別できないものを今日開発すれば正気を疑われる、ソフトウェア開発とを混同するから話がおかしなことになる。