Chapter1
今日もどこかでトラブルが...
Somewhere Today, a Project Is Falling

今日もさまざまな会社でプロジェクトがトラブルに巻き込まれ、その中のいくつかのプロジェクトは今にもつぶれそうになっている。私たちの業界はどうにもならない失敗の山を毎日のように築きつづけている。失敗しているプロジェクトが作成しようとしているシステムは、それほど特殊なものではない事が多い(プロジェクトメンバーはそうは思っていないかもしれないが)。なのにもかかわらず、なぜ失敗してしまうのだろうか。
例えば、システムの失敗の原因として、「使用するソフトウェアが期待通りの性能を発揮しなかった」とか、「必要な機能がそろっていなかった」というような内容を耳にする。だが、仮にそれが本当であったとしても、それが開発プロジェクトそのものの失敗の原因にはならない。なぜなら、性能や機能が不足していたのなら、他の技術を使用すればよいし、わからなければ他の技術者に適切な指導を受ければよい。つまり、それらは重大な問題ではあっても、その問題だけでプロジェクト自体が失敗することは決してない。
そもそもシステム開発に問題が発生するのは当たり前であり、ある程度の規模であれば問題の発生しないシステム開発など存在し得ない。ということは、システムが失敗するか成功するかの分かれ目は、その問題を解決できるかどうかという点である。ではなぜ、解決ができないのか。それには実は技術的な問題よりも、人間関係の問題、すなわち、社会学的問題が大きく影響しているからである。

実際のところ、ソフトウェア開発上の問題点の多くは、技術的というよりも社会学的なものである。 (26p)

プロジェクトの進捗が極端に遅れている原因といえば、よく挙げられる答えが、「見積もりが甘かった」というものである。では見積もりが甘かったのはなぜだろうか。おそらくそこまで突っ込まれることはないか、あるいは「見積もりの技術が低かった」などという答えになることが多いようだ。
 実は「見積もりの技術が低い」程度で極端に進捗が遅れることはない。進捗が極端に遅れるような兆候が見られたときに、管理者に相談して「適切な修正」を行えば、そのようなことは、まずおきない。
 では、技術者がそれを行えないのは、なぜだろうか。例をあげるならば、例えばこんな理由が挙げられる。

ようするに、自分でなんとかするしかない状況に追い込まれているか、あるいはそう思い込んでいるのだ。このような強迫観念にも似た責任感は、取り返しのつかない損失を生んでゆく。すなわち、システムがどうしようもなくなった段階でようやく問題が露見するようになるのだ。
 これは技術でもなんでもない。人間関係の問題である。だが、自らの行動が失敗を生んでいるということに、多くの技術者や管理者は気づいていない。すべて技術者の技術的能力の欠陥であると思っている。このような技術者にいくら品質管理や見積もりの技術を習得させたところで何の意味もない。

(管理者が)仕事の人間的な側面より、技術面に注意を多く払う理由は、それが重要だからではなく、単に解決しやすいからである。 (27P)

私たちの仕事は「先進的」でもなんでもない。他人の研究成果を応用しているにすぎない。むしろ、私たちの仕事は人間関係を中心としている。だから、開発チーム、営業、顧客などの緊密な信頼関係によって成功はもたらされる。一方、疎遠な関係は必ず失敗を生む。

Back Picture

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送