例えば、フリーランスのエンジニアを雇う経営者の方からみて、エンジニアの単価が倍違ったら高い方に依頼することを躊躇するケースもあるのではないでしょうか。
そこで、高くて腕のいいフリーランスと安くて腕の悪いフリーランスを比較する思考実験をしてみました。
前提
発注者はシステムの発注に不慣れであり、開発のマネジメントはほぼ行われないものとします。
例えば, 時給 3,000 円のフリーランスエンジニア A がいるとします。
例えば, 時給 6,000 円のフリーランスエンジニア B がいるとします。
A は発注者からのヒアリング能力が 5 (10段階)だとします。
B は発注者からのヒアリング能力が 10 (10段階)だとします。
A は難易度 5 (10段階)までのシステムを構築できます。
B は難易度 10 (10段階)までのシステムを構築できます。
A が実装したプログラムの保守性は 5 (10段階)だとします。
B が実装したプログラムの保守性は 10 (10段階)だとします。
A は問題解決力が 5 (10段階)だとします。
B は問題解決力が 10 (10段階)だとします。
どうなるか?
ヒアリング能力により起こること
発注者からシステムに関わる情報を引き出します。
A は 5 割不足や誤りがでるものとします。また、必要な情報を引き出すのに時間がかかり、更にその情報を適切に記録できません。
誤りはプログラムを実装し終わってから発覚するものとします。
誤りが発覚した際に、発注者とのやりとりを確認しようとするが、必要な情報は適切に残されていないため、再度確認しなおすことになります。
ここで、言った・言わないの責任のなすり合いがはじまります。
B はほぼ誤りなしとします。
A がシステムを仕上げてから半分の機能は作り直しになります。
品質が低いため、作り直しにかかる時間は長く、新たなバグの混入率は高く、バグの解消に時間がかかります。
難易度により起こること
難易度が 6 以上の機能が必要となるシステムだった場合、A だけでは完成しなくなるため、増員が必要になります。
保守性により起こること
A が開発したシステムの保守性は B の半分なので、初期リリース後に改修が必要な場合、倍の手間がかかります。
さらに、品質の低さは積み重なっていくのでどんどん保守が困難になっていきます。
A はテストの自動化もできないため、バグの修正仮定でデグレードが発生し、他のバグをも引き起こします。
バグへの対応は対症療法なため、問題は残り続け、もぐらたたきのように必死に潰しつづけます。
問題解決力により起こること
A のシステムの品質が低いため、開発過程において様々なバグが発生します。
その解決速度も遅くコストがかかります。
そして、その状況はリリース後にも続きます。プロダクトが正式稼働し、お客様から苦情が来るようなクリティカルなバグが中々治らない状況が続きます。
結果として、新機能開発どころではなくなります。
まとめ
さて、単価では倍異なるこの二人のエンジニア、どちらがお買い得だったでしょうか。
適当な数字で表現しましたが、開発をされている方なら実際にこのぐらいのことは起こり得る、という実感があるのではないかと思います。
少し視点を変えてみると、例えば、ビギナーレベルの人が現場の業務に追われてスキルアップしていく余力を与えられなかったとしたら、この A さんの状態のままになってしまう、ということも考えられます。
また、本来多様な経験を積んでレベルアップしたはずの人が、不遇な現場に長くいることで A さんの位置にい続けたと考えると社会の損失はいかほどでしょうか。
駆け出しのフリーランスの人に対する非難ではなく、レベルの高いフリーランスの方の価値はとてもたかい、という点が主眼です。
これはフリーランスの話に関わらず、エンジニアの単価を見る場合、純粋に安いか高いかではなく、長期的に考えた場合の比較が必要そうに思いました。