know your project!! (己のプロジェクトを知れ)
ものの例えで話を始めると、潜水艦が潜行しているときには計画した通りの航路で進みながら、様々な計器を使用して安全を確かめる必要があります。
#軍事専門家から見た時の表現的な誤りはご容赦
これ、何かに類似していますよね。そう、システム開発のプロジェクトそのものです。
ではどうして潜水艦の先行ではそうなってしまうかというと、視認できないからです。浮上していればハッチから出て確認すれば見ている海面より上は視認できますけど、相変わらず海面下はね、計器頼みな訳です。
元々が潜行して航行することを目的として建造されているのですから、常時海面に出ているわけにはいかないので。で、潜行するとまた計器頼みに。
一方のシステム開発は、プロジェクト計画書という計画した航路に沿って設計書を作成し、顧客と合意しつつコードを書くわけですが実際の動くシステムが組みあがらないとどんなシステムになっているのか誰も知らないのです。
いやいや、エンジニアは知っているじゃないか。だって自分たちで設計して、コーディングをしているんだろう、と、エンジニア以外の人は思っているんですよ。
でも、実は誰もどんなシステムに構成されるのか知らないわけです。
なぜなら、分業をしているから。
ただ、分業をしているからばかりじゃない。プロジェクトマネージャ以外は、誰もプロジェクトを知らないから、誰一人どんなシステムを作ろうとしているか知らないのです。
そしてプロジェクトマネージャもエンジニアにどんなシステムを作らなければならないのかを仔細に話をしないし、繰り返し説明もしない。
さて、これでプロジェクトという潜水艦に乗ったクルーを担うエンジニアと艦長のプロジェクトマネージャは航路の計画(プロジェクト計画書)どおりに計器頼みで安全に目的地に進むことができると思いますか。
航路の計画もただ海図に出発地と目的地に直線を引いいて進めばいいわけじゃないのです。湾内であれば決められた航路があるものだし、それは水深が浅いところがあって座礁しないように配慮されているという理由があったりするからです。
湾外に出たとしても同じように海中の隆起や他の船舶との衝突を避けて運行しなければならないわけです。
決められた航路はプラクティスや法律での制約と同じようなものだし、湾外での機器による検知はリスクマネジメントのようなものです。
know your boat!! (己の艦を知れ)
ならぬ、
know your project!! (己のプロジェクトを知れ)
なのではないか、と。
今のエンジニアはプロジェクトを安全に進度させたいと願っているなら、まず初めにしなければならないのは know your project!! なのではないでしょうか。
まあ、プロジェクトマネージャも繰り返し説明してエンジニアが期待する成果を出すようにしろよ、ってところですけどね。