エンジニアリングとは
「あいまいさ」を減らし、「具体性・明確さ」を増やす行為
エンジニアリングの意味
エンジニアリングは、日本語で「工学」と訳されます。
「工学」とは自然の原理に依拠しながら「何か役に立つものを」「実現していく」学問です。
実現するときには「はじめ」と「おわり」が存在する。
実現のはじめとはなにか、それはすべて「あいまいな状態」から始まっている。
実現のおわりとは、「あいまいな状態」が無くなって成果物がある状態です。
ソフトウェアにおいては、顧客のあいまいな要求からスタートし、具体的で明確な何かに変わっていく過程が実現で、この過程すべてが「エンジニアリング」という行為です。
不確実性
エンジニアリングにとっての「あいまいさ」とは何でしょうか。それは決まっていないことで、将来どうなるかわからないものです。
これを不確実性と表現します。プロジェクト初期ではこの「不確実性」を多く含んだ状態であり、プロジェクトが進むにつれて「不確実性」が減っていき、いつごろには完成するのかが明確になっていきます。
不確実性の発生源
では、「不確実性」とはどこから生まれるのでしょうか。「不確実性」とは「わからないこと」によって生まれます。人間の「わからないこと」は2つ存在します。それは未来(環境不確実性)と他人(通信不確実性)です。
未来 とは、それがやってくるまでわかりません。頭で考えても仕方ないもので、実際に行動し実験して観察することによって確実になっていきます。
他人 とは、別の自意識を持っていて、すべての情報を一致させることはできません。会話や書き残しているものから正しく伝わるとは限らず、また、正しく伝わっても、他人が思ったように行動するとも限りません。これも考えても仕方ないもので、コミュニケーションを通じて不確実性を減らすしかありません。
ソフトウェアにおけるエンジニアリングとは
ソフトウェアにおけるエンジニアリングとは以下のように考えます。
顧客のあいまいな要望を、コミュニケーションによって明確化しソフトウェアという成果として提供する行為
おわりに
マネージャーと『エンジニアリング組織論への招待』を読む機会があり、「エンジニアリング」について思い返してみたので書いてみました。
読んでくれた方々と、一緒に読んでくれたマネージャーに感謝します。