システム開発の生産性を下げる要因(2)

前回は、システム開発の生産性を下げる要因として、請負の契約金額(売上)が下げられてしまうことに言及しました。

生産性はざっくりの計算式で「売上÷工数」でしたから、今回はもうひとつの要素となる、工数の増大について考えたいと思います。

 

プロジェクトでのシステム開発に携わっていて往々にして起こるのが、工数が見積よりも何割も(時には、何倍も)膨れ上がってしまうことです。

自分も開発者として何度も経験しているのですが、ほとんどの場合、原因は大きく分けて3つです。

  • 実装困難または未経験の技術を採用しているなど、見積時に工数増大リスクを過小評価している。
  • 要件が開発途中で変化し、そもそもの開発スコープが拡大している。
  • 設計~実装担当者が、要件にないことまで担当者の自己判断で仕様を検討し、開発している。

ある程度の経験のある開発者であれば、プロジェクトマネジメント(PM)に携わるか、少なくともその管理下にあったことはあるでしょうから、一般論としてそれぞれ何が原因か、どのような対策が取られるべきかは分かるでしょうから、説明は割愛します。

本質的な問題は、なぜ同じような失敗を繰り返してしまうのか、言い換えれば、知られている解決策をなぜ施さないのか、というところになるでしょう。

 

個人的には、要件定義、工数見積、PMといった上流工程があまりにも軽視され、これらが不十分な状態で開発現場に丸投げされているのが本質的な原因であると考えています。

前回も書きましたが、システムやプログラムにはようやく価値を見いだしてきたものの、上流工程では動くものがないこともあり、現在もなお「システムの付属品」という意識のユーザーが少なくないのかもしれませんね。