あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

なぜトラブルのか

ソフトウエアの開発の仕事をやっていて、トラブルが発生しているプロジェクトに遭遇することがあります。プロジェクトのトラブルが明確になるのは、ソフトウエア開発途中で具体化するケースと最初からトラブルを予感させるケースがあります。

  1. 最初からトラブルを予感させるケース
    1. 要求仕様が明確ではないが、リリース日が明確になっており、そのリリース日までの期間が短い場合。
    2. 開発メンバーが足りないのに、プロジェクトが始まってしまう場合
  2. 開発途中でトラブルが具体化するケース
    1. 基本設計フェーズが終了し、詳細設計、プログラミングのフェーズで具体化するケース
    2. プログラマーのスキルが低いために、ソフトウエアの品質が極端に悪くなりリリースできなかったり、リリース後に致命的な不具合が発見される場合

などです。
2-1の場合、詳細設計、プログラミングフェーズで仕様変更が頻発してしまい、プログラミングが終了している部分にも影響が及ぶケースがありました。
根本的な原因としては、仕様変更というよりは、要求仕様がつめられておらず、あいまいな部分や検討されていない仕様が、作成段階で明確になり、プログラマーがSEやユーザに対して問い合わせをした時点で、問題が明確化し仕様追加、仕様変更が発生していることにあります。
要求仕様段階での要求仕様の検討が不充分なこと、仕様について充分に検討されていないことにあります。それにしても要求仕様の基本設計の仕様がずさんというより、その完成をまっていたのでは、プロジェクトがいつまでたっても終わらないので、見切り発車する場合が、ほとんどです。
要求仕様書、基本設計書のレビューが行われているはずなんですが、だれもそのときに、あいまいな部分や不明確な仕様部分についての突っ込みがなかったのでしょう。だれもその時点では気づいていなかったのか、検討するための充分な時間もなかったのかとも思います。
要求仕様の検討及び基本設計の時間が少ないことが原因なのか、仕様を明確にするためのスキルが不足しているのか、それとも単なる怠慢なんでしょうか。
(単なる怠慢といっても結局そのためのスキルが足りないということになるのでしょうね。)
2-2の場合に類似したケースとして、プログラマーのスキルが低いために、プログラミング、デバッグで予想以上に時間がかかってしまう場合もあります。そういう時は、何とかリリース日を延ばしてもらったり(実際はなかなか延ばしてもらえません)、どうしてもリリース日が変更できない場合は、ベテランのプログラマー(ベテランがいない場合は、とりあえず空いている人)に応援を要請して助けてもらいます。ソフトウエアの技術者の不足は、慢性的な問題です。ソフトウエアの開発技術者を募集してもなかなか人が集まらないのが現状です。経験の浅い人でも、やる気のある人、高い目標を持っている人は、伸びるのも比較的、早い人が多いようです。