開発において、余程の小規模で無い限り、外注は不可欠です。
外注を使う理由は、だいたい以下に分かれます。
- 自社にノウハウや設備がない業務を委託するため
- 工数削減のため(社内の仕事を減らすため)
(1) については、真っ当な理由なので問題ないのですが、
(2) を採用するマネージャには、ある視点が抜けていることが多い気がします。
それは
人材投資。
外注は高コスト
外注にしろ、業務委託にしろ
「外部の人材に開発を任せる」という時点で
低コストではありません。
それは、外注先に支払う費用だけの問題ではありません。
開発プロジェクトのコストは、
人的要因により容易に増加します。
外注する場合は、このことを考慮する必要があるわけです。
COCOMOⅡの補正因子
因子 |
影響度 |
考察 |
業務領域の経験 |
1.51 |
プロジェクトの業務領域に精通していないチームは、
かなり多くの時間を要する。 |
複数サイトでの開発 |
1.56 |
複数サイトに跨って実施されるプロジェクトは、
1ヵ所に作業場所を集結したプロジェクトに比べて
56%も多くの工数がかかる。 |
要員の継続性 |
1.59 |
プロジェクトの離職率が高いと、費用がかかる。 |
チームの結束 |
1.29~1.59 |
非常に相互協力的なチームは、
議論の多いチームに比べて効率よくソフトウェアを開発する。 |
上記の表は、スティーブ・マコネル氏の『
ソフトウェア見積り』よりの抜粋です。
(外注時に考慮した方がよい因子を抜粋しました。)
※「影響度=1.51」は、開発工数を最大で 51% 増加させる可能性がある、という意味です。
開発というのは、結局のところ
「自社の開発者に長く働いてもらい、自社の開発者のみで開発する」
というのが一番安上がりなのです。
開発コストを減らしたい場合
開発コストは、以下の2つを駆使して、相対的に下げていくしかありません。

「(2018-03-27)
開発における生産性の誤解」より
外注の本当の意義
外注するとき、何故かほとんどのマネージャが
「社内の仕事を減らす or 外に出す」ことに集中してしまいます。
しかし、本当に意識しなければいけないのは(社内の)
人材投資という視点です。
エンジニアへの人材投資
特に若いエンジニアが、優秀なエンジニアに育つか否かは、
若いうちに、
身になる仕事・新しい仕事をいかに沢山こなすか、にかかっています。
マネージャは、社内の仕事を外注するときは、
いかに
「外注した成果物が、いかにスムーズに納品されるか」
を計画しますが(これも大事ですが)、実は
いかに
「社内のエンジニアの時間を確保し、彼らの経験を増やすか」
も計画しなければいけないわけです。
今日のまとめ
- 外注は、基本的に高コストな開発手法である。
- 開発コストは、投資と無駄の削減により相対的に減らすしかない。
- 外注には、社内エンジニアへの人材投資という視点が必要。
外注をしている開発現場で多いのが、
投資計画がお粗末で生産性が低い → 業務を回せない → 外注 → 外注管理もお粗末
というパターンです。
結局、投資という概念が分かっていないので、
そういう職場は大抵、
設備投資もお粗末です。
⇒ 参考:
「人手不足」ではなく「設備不足」
そういうマネージャは、
若いエンジニアの時間を無駄に使っている自分の罪深さを分かってないわけです。
確かに、投資の概念を忘れたマネージャは罪深い!と思われた方は、バナーをクリック!
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
