システム開発は失敗するものだというイメージが定着しているように思います。
成功しているプロジェクトは3割にも満たないとか、どんなリサーチをしたのか謎ですが、7割~8割のシステム開発は失敗していると言われています。
その数字はいったん置いておいて、そもそも、なぜシステム開発が失敗するのか?あなたは考えたことがありますか?
答えはとても単純です。しかし、ほとんどの人は、その答えが分かりません。あるいは、わかったように思えていても大抵の人は勘違いしています。
では、システム開発が失敗する本当の理由とはなんなのでしょうか?
その人のことはその人しか知るよしがない
あるユーザーが、過去の売上をもとに、今後の売上予想を立てられて、売上向上に役に立つツールがほしいと思っていたとします。
出先からでも、手軽に操作できて、売上などを簡単に入力でき、それがすぐにシステムに反映され、様々な角度から情報の分析ができるツールがほしいと思っていたとします。
ここで考えてほしいのは、このユーザーは、売上が低迷しているのをなんとかしたいと思っているのでしょうか?あるいは、ただ単に、作業の効率化を図りたいと思っているのでしょうか?
このユーザーがそのツールをほしいと思った本当の目的は、いったい何なのでしょうか?
これが分かる人は、おそらく、そのユーザーしかいないはずです。
つまり、自分以外の人の考えていること、思っていることを分かることができないということです。
日常のことで考えても分かると思います。
電車でお年寄りに席を譲ろうとして声をかけたら、年寄り扱いするなと怒られたとか、おとなしい人だから、カラオケは苦手なはずだと思っていたら、別人かと思うくらい、シャウトしていた。など、自分がきっとこの人はこう思っているだろうと思っていても、実際にはそうではないことがしばしばあります。
席を譲られたお年寄りは、毎日散歩を欠かさず健康的な毎日を送り、電車は健康のために立っていたいと思っていたかもしれません。また、シャウトしたおとなしい人は、普段は、君たちとはあまり関わりたくない、会話したくないと思っているだけかもしれません。
このように、相手の人が考えていることは、その人しか知るよしがないのです。
その人の考えが分からないから「思い込む」のである
相手の人が考えていることは、その人しか分かりません。
ですから、こういうことかな、ああいうことかな、と考えを巡らせます。これが「思い込み」です。
この思い込みは、当たる時もあれば、外れる時もあります。
当たる確率と外れる確率はどちらが大きいでしょか?よほど、その人のことを知っていれば当たる確率も上がるでしょうが、大概は外れることが多いと思います。
これはとても重要です。
ここに、システム開発が失敗するヒントが隠されています。
システム化を望むユーザーの要望を、開発側は、ちゃんと理解しているのか?ということです。
限りなく100%に近い確率で、開発者全員が理解していることはありえないです。
社会人になりたての新人プログラマーが、ユーザーの要望をきちんと理解できているでしょうか?仕様書に書かれたことがわかるというレベルの話ではなく、ユーザーがそれをほしいと思っている本当の理由のことです。
新人プログラマーは、ユーザーが何を望んでいるかなんて、関係ありません。早く、プログラミングをしたいと思っているだけです。
この新人がシステム開発をする目的は、早く一人前のプログラマーになることであり、ユーザーが売上低迷を改善させるためになんとかしてあげたいということではないのです。
システム開発が失敗するたった一つの理由とは?
ユーザーがシステム化したいと望む目的は、形を変えて、プロジェクトマネージャーに伝わります。
プロジェクトマネージャーの目的は、品質がよくて、コストをかけずに、納期に間に合わせることです。決して、ユーザーの売上低迷を改善することではありません。
そして、SEの目的は、システム化するための仕様やルールをまとめることです。設計書のレイアウトや書き方、プログラマーの教育、スケジュール管理などです。
決して、ユーザーの売上低迷を改善することではありません。
さらに、プログラマーの目的は、いかに自分が書いたソースコードを美しく仕上げるか、みんなが羨む高度な技法を使えるようになるかであり、決して、ユーザーの売上低迷を改善することではありません。
勘の良い人ならば、お気づきかもしれませんが、システム開発が失敗するたったひとつの理由とは、
そうです。
ユーザーの目的を誰も知らないからです。
知っているように思っているだけで、誰も知らないのです。だから、うまくいくはずがないのです。
プロジェクトマネージャーやSE、プログラマーそれぞれが別々の目的でシステム開発を行っているから、落ち着く先は、同じところには落ち着かないのです。
できあがったシステムは、ユーザーが望んだシステムからは別なものになってしまっているのです。
システム開発を行うために結成されたプロジェクトチームのメンバーが同じ目的を持っていない限り、決して成功することはないのです。
甲子園常連校は、甲子園出場を目的としてメンバーを厳選します。同じ目的を持ったメンバーがいなければ、決して甲子園出場という目的を果たすことは不可能です。野球の技術を磨くために必死に練習している中、あるメンバーがサッカーの練習を必死に頑張ったところで、決して野球がうまくならないのと一緒です。
プロジェクトチームとは、ある目的を達成させるために結成されているにも関わらず、最初から目的がばらばらなメンバーが集まっているのです。
この現実をよくよく理解してください。
ただ、Javaができる人、Oracleができる人というスキルを基準にプロジェクトメンバーを選出するような無意味な寄せ集めをしている段階で、もう失敗への道をたどっているのです。
カテゴリ:システム開発の本質