システム開発が失敗する理由


システム開発の世界では”デスマーチ”という言葉がよく使われ、世のプログラマー達が自分達のプロジェクトのデスマーチ自慢をするという光景もよく見かけます。それだけシステム開発のプロジェクトは炎上することが多いということであり、システム開発の成功率は3割りくらいとも言われています。

成功率は31.1% – 第2回 プロジェクト実態調査(対象800社)

プロジェクトが失敗するからには何か理由があるわけでして、端的に誰が悪いかというと「顧客が悪い」か「開発会社が悪い」か「その両方」ということになります。

システム開発の業界というのはその構造自体に問題を抱えていると言わざるをえない部分がありまして、多重下請け構造で客先常駐なんかやっていたらそんなの失敗事例が量産されても当然だよなとなってしまうわけです。

そういう意味では、システム開発の実に7割にも及ぶプロジェクトが失敗している要因としては「開発会社が悪い」が原因となっていることが多いと言わざるを得ず、違法行為である偽装請負の客先常駐なんかを平気で行う開発会社に発注している時点で、発注先の選定に失敗していると言うこともできます。

しかしながら、システム開発プロジェクトの失敗全てが開発会社に責任があるかというと、もちろんそんなことはありません。中には「顧客が悪い」という理由でプロジェクトが失敗に至っている事例も数多く存在すると思われます。

「開発会社が悪い」という原因に関しましては、以前書きました下記の内容によって少しでも発注先選定の失敗リスクを軽減していただくとしまして、

システム開発会社の選び方

本日の内容としましては「顧客が悪い」が原因となってプロジェクトが失敗する事例について書いてみたいと思います。

顧客のせいでシステム開発が失敗する3つの理由

プロジェクト失敗の要因はあげればきりがないと思いますが、私がこれまでに見てきた「顧客が悪い」ことが理由でプロジェクトが失敗している事例を分類してみると、大きく分けて以下の3つに分類することができると思います。

  1. 顧客が本気になって取り組んでくれない
  2. 顧客の開発会社に対する態度が横暴
  3. 顧客が自社の従業員をうまく巻き込めていない

中でも「顧客が本気になって取り組んでくれない」はかなり致命的なものとなります。顧客が本気になってシステム開発のプロジェクトに取り組んでいただけないようだと、まず間違いなくシステム開発は失敗すると思います。

それ以外の2つについては、開発会社側がしっかりとコントロールできていれば、「成功とは言えないまでも失敗というほどでもない」くらいの状態までなんとかもっていくことは可能です。

でも顧客が本気になってくれないともうどうしようもありません。プロジェクト失敗への道を突き進んでいくことになります。

顧客が本気になって取り組んでくれない

システム開発というものはプロジェクトであり、プロジェクトの参画者全員の協力と貢献が不可欠です。出来上がった形のある商品があり、お金を払ったら「後はよろしく」で済まされるような類のものではありません。

システム開発では顧客もプロジェクトのメンバーの一員です。顧客側の協力がないと進めていくことができないタスクもたくさんあります。

以下のような記事が出ていました。

外注したシステムが未完成なのに「約5億」支払わされた理由

この記事によりますと、システム開発は途中で中止となってシステムは納品すらされていないにも関わらず、顧客が費用を払わされるのは実に理不尽ですよね、でも裁判所では顧客側にお金を支払うように判決が出ましたよ、といった内容となっています。

しかしこの記事によりますと裁判所が顧客に費用を支払うように命じた判決理由は下記のようなものだったそうです。

・ユーザーが行なうべき分担作業であるインターフェースの仕様整理がされていなかった
・ベンダーが移行作業方針および移行処理方式の確認を求めたのに対し,ユーザーの回答がなかった
・検証環境の構築が、ユーザーの都合で延伸された

一言でいえば「顧客がやるべきことをやっていなかったから」ということです。こんなのシステム開発会社が責任を負わされたらたまったものではありません。顧客がサボったことが原因でプロジェクトが進まなかったのにそのツケを開発会社に負わせるようなことがあったら理不尽極まりないです。

繰り返しますがシステム開発はプロジェクトであって、顧客側のメンバーも開発会社側のメンバーもそれぞれがプロジェクトメンバーの一員です。それぞれに果たすべき役割があるのであり、開発会社側だけでプロジェクトの完結は不可能です。

システム開発が失敗してしまう原因としてよくあるのが「開発会社に丸投げしてしまう」というものがあります。

システム開発というものは開発するシステムを利用する会社の業務の奥深くまで踏み込んでいくことは当たり前のようによくあることです。顧客の業務を一番良く知る顧客自身がプロジェクトに深く関わることなく、開発会社に丸投げしてプロジェクトを成功させようなどということが間違っています。

顧客側が原因でシステム開発が失敗する要因のほとんどが、

顧客が本気になって取り組んでくれないから

と言うことができます。

上記の記事にもありますが、たまに顧客がITに関して「素人である」ことを言い訳に使われているケースがありますね。しかし私の経験上では素人であるかどうかは全くといって良いほど関係ありません。なぜならアクシアの顧客にもITの素人はたくさんいますが、本気になってシステム開発のプロジェクトに携われている会社は普通に成功しているからです。

はっきり言いますが、素人であることを言い訳にしている顧客はやるべき仕事をサボってしまったことをごまかしているだけですよ。

別にITの素人である顧客にプログラムを組んでくださいとかデータベースの設計をしてくださいとかそういうことを要求しているわけではありません。そんなことを要求する開発会社は無いと思います。(あったら今すぐ会社たたんでください)

システムの仕様を決めるにあたって、顧客の業務の流れがどうなっているかとか、業務の流れを考えると画面や権限の仕様はどうするのが効率が上がるとか、そういう仕様を決定するには顧客が深く関わる必要があり、そういう仕事を顧客がサボったらシステム開発がうまくいくわけがないですよねという話です。

やるべきことをやらずにうまくいくはずがありません。顧客は顧客としてやるべきことはしっかりやってください。

顧客の開発会社に対する態度が横暴

態度が横暴だからと言ってシステム開発の成果には関係ないだろと思うかもしれませんがそんなことはありません。「顧客が横暴である」ということを具体的に因数分解してみると、「無茶な納期を要求する」「無茶な予算を要求する」「無茶な仕様変更を要求する」といった行動が浮かび上がってきます。

本来3ヶ月かかるような作業を「何が何でも月内にやれ!」というようなことを顧客が言ってくることはたまにあります。こういうのはたいてい顧客側で社内スケジュールが決まっていたにも関わらず、顧客側の担当者がサボっていたせいで開発会社側に発注するのが遅れてしまったというような事情であることがほとんどです。

そんなこと言われても無理なものは無理なんです。無理な納期を開発会社に強要しても、結局納期になっても「できませんでした」となるか、無理やり仕上げたとしても品質がボロボロで使い物にならないというようなオチになります。

少々の無理なら開発会社側が残業でカバーして何とかしてくれるかもしれませんが、そんな無茶言う顧客はブラック企業そのものですからね。そういう無茶言ってる人は下記のブログを読んで反省してください。

残業を求めてくる顧客はブラック企業です

無茶な予算を開発会社に押し付けることも何の得にもなりません。開発会社に嫌がられるだけです。ちなみに無茶な金額をいつも要求してくる顧客に対してアクシアがどのように対処しているかを赤裸々に公表してしまいますと、一度そういうことをしてきた顧客に対しては必ずバッファを積んだ見積もりを次から提出するようにしています。w

またいつ無茶な割引を要求されるかわからないので、そういうシーンでも自分達が損しないように、かつ波風を立てずにやり過ごせるようにするための生活の知恵です。逆に絶対に無茶な割引の要求をしてこない顧客に対しては最初からぎりぎりまで割り引いた見積もりを出したりします。

我々も人間ですから、ジャイアンみたいな要求をしてくる顧客に対してはそれ相応の予防線をはるということです。当たり前でしょうそんなことは。無茶なことを言う顧客とそういうことをしない顧客とどちらが得してるかは言うまでもありませんね。

顧客が自社の従業員をうまく巻き込めていない

顧客のシステムを開発する時の主な利用ユーザーとしては顧客の従業員であることがほとんどです。その場合に従業員の人達がシステム開発に対して協力的であるかどうかということは非常に重要です。

自社の従業員をうまく巻き込めるかどうかというのは顧客側の仕事になるわけですが、それがうまくできていない場合がたまにあります。

従業員をうまく巻き込めていない事例としてよくあるのは、現場の従業員達に新しく開発したシステムについて理解してもらえていないというものがあります。システムの使い方について周知されていないという単純なものから、新システムの使用に関して一部の現場の人が抵抗勢力になってしまうようなこともあります。

これは顧客側の担当者が全く現場の声を聞かずにシステム開発を進めてしまった場合にこのようなことが起きることがあります。

これとは全く逆のパターンとして、現場の要望を全て聞こうとしてしまうことでうまくいかないことがあります。

会社の業務効率を上げるための基幹システムを構築するような場合に、システム全体、または業務全体を俯瞰して全体の業務の流れやシステムの処理の流れを決定していかねばなりません。枝葉末節の部分ばかり気にしていると全体として効率が上がらないということになってしまいます。

全社的なシステムを構築する場合には、現場の人達の声は拾いつつも、全体としてどうデザインしていくかをシステム担当者がしっかりと考えていくことが重要です。現場の声を全て盛り込んでいると収集がつかないことになってしまいます。

現場の従業員をうまく巻き込めていない場合によく起きることとしては、「作ってはみたけど使われない機能」が出てきてしまいます。現場で本当に必要なものになっていないからこういうことになってしまうわけですね。

システムを構築したからにはそのシステムを有効活用してもらってこそ意味があります。有効活用されてこそ、現場から新たな要望などの声が頻繁に上がってきますので、システム開発がうまくいっている顧客の場合は、初期開発後の仕様変更も定期的に発生します。

逆にうまくいってない場合には、システムが有効に使われていないために新たな仕様変更のニーズもほとんどあがってこないで、死んだシステムになってしまうこともあります。

まとめ

  1. 顧客が本気になって取り組んでくれない
  2. 顧客の開発会社に対する態度が横暴
  3. 顧客が自社の従業員をうまく巻き込めていない

顧客が原因でシステム開発が失敗する理由として以上3つを説明してきました。見ていただければわかると思いますが、3つのうちどれをとってもITに詳しいかどうかは全く関係ないですね。

結局は真面目にプロジェクトを進めていく姿勢があるかどうかということに尽きると思います。システム開発が失敗するのは「顧客」「開発会社」または「その両方」に原因があります。開発会社の選定が間違っていないのであれば、顧客側がきちんと仕事を進めないからシステム開発は失敗してしまうのです。

システム開発は開発会社に丸投げして「後はよろしく」としておけばうまくいくような難易度の低い簡単なものではありません。

システム開発を成功させるためには、顧客側にもプロジェクトメンバーの一人としてきちんとやるべきことを行う姿勢を持っていただくことが、システム開発というプロジェクトを成功させるために必要なこととなります。