GeekFactory

int128.hatenablog.com

受託開発が抱える本質的な非効率性に関する考察

受託開発が抱える本質的な非効率性について考えました。ここで挙げたことはどの開発プロセスでも発生しうる問題と思います。

  • 外注のオーバーヘッド
    • 契約に係るコスト。
  • 限られた場所や時間で質疑応答を行うことによる損失
    • 情報の伝達コストは「機会」により決まる。拠点の違い、限られた時間、組織の壁により機会は減り、伝達コストは高くなる。
    • 打合せや質問票を中心に質疑応答を行うため、情報の伝達コストが高くなる。
    • 発注側の縦割り部門、受託側の下請け構造により、情報の伝達コストが高くなる。
    • 決定に要する時間が長くなる。
  • 開発者が業務プロセスを学習するコスト
    • 前提として、どんな要件でも学習コストは必ず発生する。
    • 過去に学習した知識を再利用できるとは限らない。受託側に業務スペシャリストが存在するとは限らない。
    • 発注側から業務に関する説明を受ける機会(=教育)が十分にないため、極めて非効率な学習にならざるを得ない。
  • 発注者が仕様に習熟するコスト
    • 前提として、どんな仕様でも習熟コストは必ず発生する。
    • 受託側から仕様に関する説明を受ける機会が十分とは言えない。受託側が仕様を的確に説明できるとは限らない。
    • ここでいう「仕様」とは設計書だけでなく、プロトタイプ、プロダクト、マニュアルなども含む。

ITシステムの要件や仕様を伝達するには文字や図面では不十分で、口頭による説明を要することが本質的な原因ではないかと思います。この原因を解決するには、文字や図面で表現するのを頑張る、もしくは発注側と受託側を(物理的にも組織的にも)近づけるという方法があるでしょう。

あなたは何を頑張りますか?

(追記) このエントリを書いたのは、CMMIの考え方が受託開発に適合するか疑問を持ったのがきっかけです。私自身の仕事環境を表現するものではないことを注記しておきます。SI業界を一般化して議論するのは難しいですけどね。