多くのソフトウェアプロジェクトが失敗する10の理由
-BBCデジタルメディアイニシアティブ(DMI)は、ガバナンスの失敗と納期の遅れにより失敗した。 BBCの制作をデジタル化するということで、誰もが目をつけていたプロジェクトだった。
-FBIのバーチャル・ケース・ファイル(VCF)の失敗の原因はいくつかあるが、非現実的な期待が大きな原因の一つであった。 このプロジェクトは、約1億450万ドルの税金を無駄にした。
-米国FRBの新システムは、稼動初日の夜に大暴れし、280億ドルを利子として誤った加盟銀行にばらまいた。
よく計画されたソフトウェアプロジェクトがどうして失敗するのか? 本当に計画的だったのでしょうか? というのが、彼らの考えだった。 悲しいことに、多くのプロジェクトが失敗している。実際、失敗を経験した人を除いて、人々がそれについて話したり、議論したりすることはほとんどないほど、それはありふれた出来事になってしまっているのだ。 2013年、プロジェクトマネジメントを手がけるイノタスは、調査した企業の約5割がプロジェクトマネジメントに失敗していることを明らかにした。 4年経った今も、話はあまり変わっていない。 ソフトウェア・プロジェクトが失敗する原因は何か? 私たちの観察に基づき、いくつかの理由を探ってみましたが、いかがでしょうか。
1.ビジネスゴールとプロジェクト成果の整合性がとれていない
企業によって優先順位が違うとも言えます。 ある企業では、ビジネス目標を達成することに焦点を当て、またある企業では、プロジェクトを期限内に予算内に納めることに焦点を当てます。 これは道を間違えて迷子になる道楽です。 ビジネスゴールとプロジェクトの成果の両方が一致していれば、ソフトウェアが失敗することはないでしょう。 しかし、これを実行するのは、まったく簡単なことではありません。
2.何を優先すべきか理解できない
どのプロジェクトが重要か、優先順位をつけなかったこと。 プロジェクトマネジメントの責任者は、ステークホルダーや社内の権威ある責任者とともに、プロジェクトの優先順位を決定する。 そして、リソースと人員を配分し、予算と時間を検討するのである。 ビジネスゴールとプロジェクトの成果を整合させる際に、うまくいかないことがありますが、これも優先順位を正しく把握できなかったことが原因かもしれません。
3.曖昧な要求事項
ソフトウェア開発サイクルの最初のステップは、クライアントの要求を理解することです。 要件が明確に図式化され、クライアントからOKが出ない限り、両者とも
開発サイクルの終わりには、同じページが表示されます。
4.時間的制約
時間の制約から開発者がクライアントからプロジェクトの明確化を得られないことが多く、多くの手戻りやリソース配分の増加、また企業へのマイナスイメージを反映させることになりかねません。 ですから、実際に開発に取りかかる直前に、要求分析を行い、最終的にどのような製品になるのか、クライアントを含めた全員が明確にしておくことが重要です。
5.スケジュールの見積もりが甘い
開発者も人間ですから、1日に何時間も働けるわけではありません。 プロジェクトが期待通りに完成し、開発者が次のプロジェクトに参加できるように、論理的にスケジュールを組むこと。
6.期限を押さえる準備ができていない
プロジェクトマネージャーやステークホルダーは、開発者チームを働かせるときに配慮しなければならない。 確かに1日余分に働けば出費は増えますが、長い目で見ればそれだけの価値があるはずです。
7.変に非現実的な時間軸を与えると、プロジェクトが遅れるだけである。
ステークホルダーやプロジェクトマネージャーが考えているのとは逆に、非現実的な時間スケールを設定することは、会社に大きな損失をもたらすだけです。 常に、作業量に応じて、期待値が妥当であるような計画を立ててください。
8.コミュニケーション・ギャップ
コミュニケーション不足は、人生における多くの失敗の原因です。 実際、プロジェクトに関わるすべての人にとって、対人関係スキルは非常に重要であり、対人関係スキルの専門的なコースを受講することは、間違いなくプラスポイントになります。 コミュニケーションとメッセージは適切に共有されなければなりません。なぜなら、見解や意見の対立は、プロジェクトが飛ぶ前に死んでしまうかもしれないからです。 プロジェクトマネージャーは、チームに関わるすべての人の仲立ちをするのが仕事です。 特に、プロジェクトの成果に関することであれば、全員にメッセージが届くようにする。
9.適材適所を実現できていない
不適切な人員配置もプロジェクト失敗の原因です。 優秀な開発者が集まっているんですね。 しかし、彼らが「一騎当千」のようなチームだと思いますか? どんなプロジェクトでもこなせるのか? スキルに応じて人を配置する必要があるかもしれません。 たとえ高価であっても、適切な人材は有益であることが証明されます。 やはり、プロジェクトの品質を落とすようなことがあってはならない。 非効率な開発者や平凡な開発者はプロジェクトを遅らせるが、10倍速の開発者はプロジェクトの手綱を握り続けることができる。
10.テストが不十分
ソフトウェアテストが失敗する。 すべてが完了した後、まだ修正されていないコーディングの問題があることに気づきます。 コード開発段階を管理するマイルストーンがなければ、プロジェクトは失敗する可能性があります。 自動テストは、テスト担当者がスクリプトを書き、別のソフトウェアを使って、アプリケーションやソフトウェアのさまざまな機能をテストすることができるようになります。 ソフトウェアテストの種類は
- ユニットテスト
- 統合テスト
- 機能テスト
- システムテスト
- ストレステスト
- パフォーマンステスト
- ユーザビリティ・テスト
- アクセプタンス・テスト
- リグレッションテスト
- ベータテスト
時間はかかりますが、努力と時間をかける価値は絶対にあります。 テストを通じてプロジェクトの品質を把握することができ、一種の検証・確認作業と言えます。
結論
まずプロジェクトを理解し、その上でリソースやマンパワーを配分することが重要です。 プロジェクトに取り組むための十分な時間と、必要なときに必要なリソースを提供する。 以上のことを実践すれば、きっといいことがあるはずです。
A 最後に一言:システム要件が適切に定義され、敷衍されていることを確認する。 ソフトウェアが完成してから、システムに支障をきたすようでは困ります。
その他の情報
Flickr.com/ Patrizio Cuscito