システム開発の分野では、プロジェクトの成功率はわずか3割程度だと言われていることをご存知でしょうか。
企業IT動向調査報告書2022(*)の図7-3-3によれば、例えば100人月未満規模のプロジェクトにおける品質満足度は、2020年度が28.9%、2021年度においては更に低く23.0%と、実に7割以上のプロジェクトが満足のいく結果に着地していないことがわかります。
*一般社団法人日本情報システム・ユーザー協会 (略称: JUAS)「企業IT動向調査報告書2022」
一方、新型コロナの影響によりリモートワークが進んだ昨今の企業においては、以前にも増して業務フロー等のシステム化が求められています。
そこで今回は、スタートアップから大手上場企業まであらゆる企業のシステム開発を手掛ける当社が、システム開発の7割が失敗してしまう原因について、対策とともに解説します。
システム開発の外注を検討されている方、これからシステム開発を外注される方は、ぜひ参考にしてください。
システム開発における失敗とは?
冒頭の通り、約7割が失敗してしまうとされるシステム開発ですが、何をもって失敗と判断するかについては、主に3つの基準が挙げられます。
- 品質
- 納期
- コスト
この、品質・納期・コストのいずれか、もしくは複数が、想定範囲を下回ったことにより「相対的に見て満足度が得られない状態のこと」を、システム開発における失敗だと言えるのではないでしょうか。
次で詳しく解説します。
品質における失敗
まず、品質における失敗とは、下記のような理由により、システムを使用する場面においてユーザーが日常的にストレスを感じる状態であることが挙げられます。
- システムのレスポンスが遅い
- すぐにフリーズして落ちる
- システム化する前と比較して作業が増えた
- 使い勝手が悪い
ただし、例えば部門横断的な業務システムにおいて、一つの部門にとっては作業増でも全社的に見れば効率が上がった、という例や、今までは行っていなかった作業をシステム化に合わせて実施することになったため、業務は増えたが顧客満足度の向上に繋がった、というような内容であれば満足度は得られることになり、相対的に見て「失敗」と判断されることはないでしょう。
納期・コストにおける失敗
システム開発において納期とコストは密接に繋がった関係にあります。
なぜならば、納期が遅延すればその期間分の追加工数が発生したり、人員を追加して対応することによってコストが膨らむことになるからです。
開発の中盤になって納期とコストに想定外の事態が起きては、満足度は著しく低下します。
ただし、開発の途中でより良い案が見つかったことにより、納期が延びてコストは増加したものの、「品質向上により満足なシステムに仕上がった」「システム導入の目的であった売上増に繋がった」という前向きな想定外であれば満足度は得られことになり、相対的に見て「失敗」と判断されることはないでしょう。
システム開発失敗|見積もりフェーズ
ここまでで、システム開発を成功に導くためには、「品質」「納期」「コスト」の3要素を、相対的に見て満足のいく状態に持っていく必要があるということをお伝えしました。
では次に、何故、7割ものシステム開発が失敗に終わってしまうのでしょうか。
ここからは、システム開発が難しいと言われる原因と対策について、開発のフェーズ毎に詳しく解説していきます。
見積もりフェーズの失敗例
まず、システム開発の第一段階は、外部のシステム開発会社から「見積もりを取る」というフェーズになります。
このフェーズで陥りやすいよくある失敗例としては下記が挙げられます。
- 見積もり金額は予算内だったのに、最終的な開発費用が想定以上に膨らんだ
- 価格交渉に成功したと喜んでいたら、納品されたシステムの品質が悪かった
失敗の原因と対策
ではなぜ、そのような失敗が起きてしまうのでしょうか。
考えられる原因としては、下記が挙げられます。
- 適正な見積もりが取れていなかった
- 予算が取れなかった
それぞれ詳しく見ていきましょう。
適正な見積もりが取れていなかった
まず、見積もりに比べて実際の費用が大幅に膨らんだり、価格交渉による品質低下を招いた失敗の原因として考えられることは、「見積もりの際に適正な価格を引き出せていなかった」という点です。
具体的には下記の点において、見積書と現実にミスマッチが発生していた可能性が高いでしょう。
- 希望するスペックのシステムを開発するために必要な費用が充分に確保されていなかった
- 必要な機能や工程に掛かる費用が抜けていた
- 想定していたシステム要件と実際に必要な要件が違っていた
本来必要な費用が見積書に反映されていなければ、開発段階で仕様の追加や変更が必要になり、最終的な開発費用が予算を大幅に超えてしまうこともあるでしょう。
また、無理な価格交渉により、費用を削減するために無理なスケジュールが組まれたり、単価の安い経験の浅いエンジニアばかりを配置するなどの調整がなされた結果、システムの品質が落ちてしまうことも考えられます。
こういった失敗を引き起こさないための対策としては下記が挙げられます。
- 自社の業務内容・使用目的・解決したい課題や、システムに求める機能・規模感などの要望をできるだけ具体的に伝える
- 導入したいシステムや類似システムの開発経験がある開発会社から見積もりを取り寄せる
- 複数社から相見積もりを取って内訳項目毎に比較し、会社によって差がある箇所の理由を確認する
- むやみな価格交渉はしない
なお、見積もりについてや見積もりで適正価格を引き出すコツなどの詳細は、下記の記事からお読みいただけます。
予算が取れなかった
見積もりに比べて実際の費用が大幅に膨らんだり、価格交渉による品質低下を招いた失敗の原因として、発注者側で「予算が取れなかった」ということも考えられます。
システム開発に乗り出す際には、社内での予算取りが必要になります。
当然のことながら、各企業はビジネスが変化していく中でどのように利益を出すかを考えますが、システム導入によって得られる直接的な収益というものが見えづらいため、経営陣から投資に見合わないと判断されることがあります。
そのような中で充分な予算が確保できない場合には、目先の見積もり金額だけに飛びついて結果的に大失敗する、ということにもなり兼ねません。
そうならないためにも、必要な予算を確保することが重要です。
- システム開発において得られる効果を数字で示し、経営陣の理解を得られるよう説明する
(売上面のみならず、業務効率化によるコスト減や、収益には直接繋がらない顧客満足度の向上の目線についても補足する) - システム開発費用を削減できる開発手法が他にないか、充分に検討してから稟議等の社内審議にかける
最近では、開発の前段階としてPOC(Proof of Concept / 概念実証)を実施することによってあらかじめシステムの実現性や費用対効果を計ったり、高い専門知識がなくても開発が可能なローコード・ノーコード開発といった手法を取り入れることにより費用を削減するなどの選択肢もありますので、自社にあった開発方法を事前に検討しておくことも必要になるでしょう。
なお、システム開発費用についてや開発費用を抑える方法についての詳細は下記の記事からお読みいただけます。
システム開発の失敗|選定フェーズ
複数社からの相見積もりが出揃ったら、外注先や導入するシステムを選定するフェーズに入ります。
選定フェーズの失敗例
外注先やシステムを選定する際に陥りやすいよくある失敗には下記が挙げられます。
- 相見積もりを取ってしっかり外注先を選んだはずなのに、期待外れのシステムが納品された
失敗の原因と対策
こういった失敗を引き起こす原因としては、下記が挙げられます。
- 選定時の検討が不十分だった
- 信頼できる開発者の見極めが難しい
それぞれ詳しく見ていきましょう。
選定時の検討が不十分だった
期待外れのシステムが納品されてしまう1つ目の原因としては、選定時の検討が不十分だったことが考えられます。
ゼロベースから開発する場合を除くと、システム開発会社の持つ何らかの雛形や、既存の製品をベースにして、自社向けにカスタマイズしたシステムを導入することになります。
過去に類似のシステムを開発している場合には、そのシステムをベースに開発が進むこともあるでしょう。
その際、往々にして、ベースとなるシステムの仕様や特徴と、自社の業務フローがマッチしているかどうかを検討しないまま選定してしまうことがあります。
導入しようとしているシステムがどんなに優秀でも、自社の業務フローと合っていない場合には、使い勝手が悪かったり、システムに合わせて業務が複雑化してしまうなど、期待外れのシステムが納品されることになります。
そこで、考えられる対策としては下記が挙げられます。
- 外注先の選定段階から、自社の業務フローを熟知しているキーパーソンをユーザー目線で介入させ、導入しようとしているシステムの仕様が自社の業務に合っているかを検討する
信頼できる開発会社の見極めが難しい
期待外れのシステムが納品されてしまう原因としてもう1つ考えられるのが、信頼できる開発会社の見極めが難しいという点です。
信頼できる会社とは、「感じが良かった」「こちらの話をよく聞いてくれた」というような個人の印象に左右される基準ではなく、発注者の要求や課題に対し、具体的な解決策を提示できる会社のことです。
この見極めを誤ると、意思の疎通がうまくできずに想定外のシステムが納品されてしまうことにもなり兼ねません。
そこで、下記のポイントに注意して信頼できる会社を見極めましょう。
- 質問に対しての返事が的確
- 追加すべき機能やツールの選定理由が的確
- 提案内容が自社の要望を解決する案になっている
- 実装までの期間や費用など、必要な内容を網羅している
なお、システム開発を外注する際のメリット・デメリット、失敗しない外注先の選び方、外注する場合の注意点については下記の記事から詳細をお読みいただけます。
システム開発の失敗|要件定義フェーズ
システム開発の外注先が決定すると、開発するシステムの要件を定義するフェーズに入ります。
要件定義フェーズの失敗例
要件定義では、今から開発しようとするシステムの要件を話し合い、決まった内容を要件定義書にまとめるという作業を行います。
実際の開発は両者で合意した要件定義書の内容に沿って進むため、とても重要な工程になります。
この要件定義の段階で陥りやすいよくある失敗例には、下記が挙げられます。
- 開発会社に一任していたら、思っていたのとは違うシステムが出来上がった
失敗の原因と対策
このフェーズにおける失敗の原因としては、下記が考えられます。
- 要件定義書の確認不足
次で詳しく解説します。
要件定義書の確認不足
要件定義書に書かれている内容には専門用語が使われていることも多いため、よくわからずに曖昧なまま進めてしまったり、話し合って合意した内容が正しく反映されているものと思い込み、十分に確認しないままに了承してしまうことがあります。
そうなると、発注者が「伝えた」と思っていることが開発人材には伝わっておらず、思い描いていたものとは違ったり、必要な機能の不足したシステムが出来上がってしまうことになります。
そのような事態を防ぐための対策としては、下記が挙げられます。
- 専門用語を含め、わからない箇所があれば都度確認する
- 合意内容が正しく反映されているかをしっかり確認する
システム開発の失敗|開発フェーズ
要件定義が固まれば、開発フェーズに入ります。
開発フェーズの失敗例
システム開発が始まってから陥りやすいよくある失敗には、下記が挙げられます。
- 納期が予定より大幅に遅れ、コストも増加した
- 出来あがったシステムの使い勝手が悪く、結局使われなくなってしまった
失敗の原因と対策
開発フェーズの失敗は、見積もり・外注先やシステムの選定・要件定義の際の失敗と密接に繋がっており、各フェーズで注意することによって回避できたり、軽減することのできるものも多いでしょう。
ここでは、前述と重複する内容は省略し、開発フェーズに起因した失敗の原因について解説します。
- 開発側・ユーザー間での相互の理解不足
- システム開発に時間を割けない環境
- 実現したいゴールが曖昧
開発側・ユーザー間での相互の理解不足
納期遅れによるコスト増や使い勝手の悪いシステムが納品されるなど、システム開発はなぜ難しいのか。
その最も大きな原因は、開発側とユーザー間での相互の理解不足によるものだと言えるでしょう。
開発側はシステムには詳しいですが実務については理解しておらず、ユーザー側は実務に詳しくてもシステムについては理解していません。
その状態で開発会社だけにシステム開発を任せてしまうと、途中で認識の違いが発覚してやり直しになったり、出来上がったシステムがユーザーにとって使いにくいものになってしまう危険性が高まります。
そうなると、開発に掛かる費用が増えるばかりか、例えば業務効率化のために開発したシステムによって逆に作業時間が増えてしまったり、せっかく導入したシステムが使われず、わずか数年で別のシステムに入れ替え直す、ということすら起こり得ます。
そうならないために、考えられる対策としては下記が挙げられます。
- 自社の業務フローを熟知したキーパーソンをユーザーの立場で参加させ、システム開発を開発側だけに任せきりにしない
- 開発中はユーザー側と開発側が相互にコミュニケーションを取り合い、定期的に確認する場を設けるなどして連携して進める
システム開発に時間を割けない環境
相互の認識を合わせるべく、せっかくユーザー側のキーパーソンを開発チームにアサインしても、そのキーパーソンがシステム開発に参加する時間を割けなければ意味がありません。
忙しい現場では中・長期的なビジネス展開よりも日々の実務を優先する傾向にあり、自分が関わっていない新規事業への理解や関心が薄いため、システム開発に対して周りからの協力が得られないことがあります。
そういった問題への対策としては、下記が挙げられます。
- 社内でシステム開発の重要性を共有して全社的に協力体制を整え、優先順位を明確にすることによってキーパーソンがシステム開発に参加できる環境を整える
- 通常業務に補佐役をつけてキーパーソンの負担を軽減したり、システム開発の功績を評価基準にすることを明確にしたりすることによって、キーパーソンがシステム開発に参加しやすい環境を作る
実現したいゴールが曖昧
実現したいゴールが曖昧だという点も、システム開発を失敗させる原因になり得ます。
既存のシステムをカスタマイズして導入する場合には、たとえシステムの選定段階から充分な検討を重ねていたとしても、システムの仕様に合わせて当初の構想を変更したり、業務フローを調整する必要が出てくることがあります。
そういった時にシステム開発によって実現したいゴールが明確であれば、それに合わせて軌道修正することが出来ますが、ゴールが曖昧な場合には、修正を重ねた結果が思いも寄らない方向に着地してしまうことがあります。
例えばユーザーの使い易さを目指していた筈が、修正を繰り返しているうちに複雑なシステムになってしまっていた、など、本末転倒な結果を招いてしまうことも考えられます。
そういった状況を避けるための対策には、下記が挙げられます。
- システム開発によって実現したいゴールをあらかじめ明確にしておき、プロジェクトに参加する社員や外注先と充分に共有しておく
(参考)開発者側の原因と対策
ここまでは、発注者側での失敗理由とその対策をまとめてきました。
システム開発を成功させるためには、相手方の事情を知っておくことも必要な対策の1つだと言えるため、参考として開発者側で起きやすい失敗の原因とその対策をご紹介します。
人材不足
システムを開発するには、ITに関する知識と開発スキルがあり、実際にいくつかのシステム開発プロジェクトに参画した経験のある人材が求められます。
発注者の業務に精通した人材であればなおのこと望ましいでしょう。
しかしながら、IT業界は慢性的な人材不足に陥っています。
IT技術は日進月歩のため、常にテクノロジーが進化していくなかで新しい技術を持つ人材が育ちにくいのが現状です。
考えられる対策
そういった現状の中で、発注者側として注意すべき点や対策にはどのようなことが考えられるのでしょうか。
気をつけたいのは、業界全体で人材不足の状態である開発会社に対し、無理にスケジュールを早めるように要求したり、途中で仕様を変えたり、担当者の変更を要求したりするのは得策ではない、ということです。
急ぐあまりに品質の悪いシステムが納品されてしまうなど、発注者にとって望ましくない結果に繋がりかねないからです。
繰り返しになりますが、自社の業務に精通したキーパーソンをシステム開発に参加させ、開発会社に任せきりにせず、定期的に連絡を取りながら協力して開発を進めることが重要となるでしょう。
システム開発に失敗してしまった時の対処法
システム開発の外注時には、「言った・言わない」「思っていたのと違った」というトラブルを避けるためにも契約書の締結が必須です。
特に、対応範囲、責任の所在、検収方法については後から揉めやすい項目になりますので、契約を締結する前にしっかりと確認しておきましょう。
とはいえ、実際にシステム開発が失敗してしまったときには、まずは両者で事実確認をした上で、解決策について話し合うことが重要です。
- どの点がどのように失敗しているのか
- どのようなシステムが本来の完成形なのか
- 失敗の原因は何か
- 失敗をリカバリーするためにはどのような対策を取る必要があるのか
- そのための追加費用と期間はどのくらい掛かるのか
- 費用の負担はどちらがするのか
システム開発に限った話ではありませんが、トラブルを解決する際には感情論を抜きにして、取れる対策を協力して行うことが最善の対処法になるでしょう。
その際、追加費用の負担先は契約書で取り決めた責任の所在によって判断されることになります。
万一、契約を解除したい場合や、話し合いで解決しない場合などについては、契約書の定めに従うか、場合によっては法律の専門家に相談するという手段も考えられるでしょう。
[まとめ]システム開発を失敗に終わらせないために
失敗してから対処するには時間も費用も労力も掛かりますので、失敗しないために事前にしっかりと対策しておくことが得策だと言えます。
この記事では、システム開発を成功させるためのヒントとして、失敗しやすいポイントを、フェーズ毎に対策とともに解説しましたので、システム開発の際に是非お役立てください。
なお、システム開発の外注先選びでお困りの方は、弊社までお気軽にご相談ください。
当社がこれまで支援してきた開発事例の共有、企画・コンサルティング、要件定義や実際の開発支援まで包括的にサポートさせていただくことが可能です。
システム開発を失敗しないために、弊社が相見積もりの取得までをサポートさせていただくことも可能です。むやみな営業電話などは決して行いませんので、まずは無料のご相談をお待ちしております。