システムエンジニアって何をしているの?と聞かれたら「システムのオーダーメイド屋さん」と言っているアーシです。
基本的にその顧客に必要なシステムをオーダーメイドで作り上げるシステム開発ですが、その開発はとても難しいものです。
何が一番難しいかといったら、それは各関係者とのコミュニケーションと、共通の目的地を意識できているかでしょう。
システム開発はパソコンカタカタプログラミングというイメージを持っている方も多いかもしれませんが、システム開発に一番必要なものはコミュニケーションとも良く言われます。
ここで、SE界隈では有名なシステム開発に関する画像をご紹介します。
この図のようにシステム開発では顧客が本当に必要なものを作るのは非常に大変です。
(この図はデスマーチに突入する典型的な例です)
ここで、SEが主に関わる次の7点について見ていきましょう。
顧客が説明した要件
SEとしてまず大事なのは「顧客が説明した要件」を鵜呑みにしないことです。
顧客も完成イメージを持てないまま、こんな機能が欲しい、あんな機能が欲しいと妄想を膨らませます。
今回の図では、説明した要件の時点で本当に必要なものからだいぶずれていることがわかりますね。
ただし、この時点では顧客側もSE側もそれに気付いていないまま、プロジェクトが進行します。
プロジェクトリーダの理解
今回の図ではこの時点で顧客からの要望と認識がずれています。
おそらく、次の2点を大事なポイントとして理解したのでしょう。
①ロープは2本、木の枝に繋がれている
②腰掛けるための木の板がある
そして、顧客と正しく意思疎通が取れなかったのか、プロジェクトリーダーの過去の経験からか、次の点が変更となっています。
①1本の木の枝ではなく、2本の木の枝にロープを繋いでいる。
⇒1本の木の枝では重さを支えられないのではと判断したのでしょう
②木の板の枚数が3枚から1枚になっている。
⇒3枚の板は冗長だと判断したのでしょう
アナリストのデザイン
次に設計段階です。
設計段階で、プロジェクトリーダーの理解では、ブランコが木の幹に当たって上手く動作しないことに気が付きます。
そして、設計士はブランコが機能するよう、思い切って木の幹を取り除き、左右に補助の木を設置することでブランコとして機能するようにしました。
匠の技ですね。
プログラマのコード
アナリストの設計で実装した結果、重量を支え切れないことが分かったため、木の幹にロープをくくりつけたのでしょうか。
かろうじてロープが2本木に繋がっており、腰掛けるための木の板もあるため、仕様を満たしているといえなくもない状態です。
実装の工程でこういうプログラムがOKとなるとテストの工程でデスマーチが訪れます。
プロジェクトの書類
書類はなくなってしましました。
一応、プロジェクトリーダーの理解を示した資料もアナリストのデザインを記した書類もあるはずですが、実装段階までで中身が変わってしまい、書類が役に立たなくなってしまったのでしょう。
しかし、納期は刻一刻と近づいてきます。
デスマーチに突入仕掛けのプロジェクトではまずは動くプログラムを作る、設計書は実装を基に書き起こす、ということをよく見かけます。
実装された運用
納期が訪れ、運用が開始しましたが、運用の内容はロープ1本のみ。
一応、枝からぶら下がって遊ぶことはできます。
デスマーチの末、当初の設計を全て満たすことができないと判断され、不完全なシステムでの運用が開始されたのでしょう。
得られたサポート
保守工程で切り株になってしまいました。
おそらく「腰掛ける部分を早く作ってくれ」という要望に応えたのでしょう。
もはや当初の目的の面影もありません。
総括
コミュニケーションが不足しての典型的なデスマーチ、失敗プロジェクトの例でした。
こうならないよう、システムエンジニアはコミュニケーションをとって縦横で認識を合わせ足並み揃えてシステム開発に取り組むことが重要になります。