アジャイルプロジェクトの契約に関する私見
みなさんこんにちは。@ryuzeeです。
ソフトウェアを構築するときに締結する契約は、大別すると請負契約と準委任契約、そして派遣契約(今回は割愛します)があります。
請負契約は、完成させるべきものを事前に規定し、それを満たすものを納品することで代金が支払われます。 一方で準委任契約は、発注者の代わりに自身の裁量で業務を遂行する契約であり、働いた時間に応じた代金が支払われるのが一般的です。
アジャイル開発では、顧客やユーザーのフィードバックを得て作るものを変えていきます。 つまり事前に詳細なスコープは確定しません。
それにも関わらず請負型の契約を行った場合、事前に決められた「完成させるべきもの」に加えて、フィードバックへの対応が必要になってしまいます。 事前に決められた内容によって期間と費用が固定されるため、このような変化は開発側としては避けなければいけないものになります。 その理由は、単純に原価が上ブレしてしまうからです。 しかし、ここで発注者と開発側の力関係に差があると、発注者による圧力(もしくは政治的な働きかけ)がかかり、受託側の弱い管理者による承諾と開発側への強要といったことが発生しやすいのが実情です。
このような事態を防ぐべく、契約時点で成果物をお互いの齟齬がないように明確にしようとしても、そもそもの不確実性は残ったままです。 その残った不確実性が、結局現場に混乱をもたらすことになります。
これらを踏まえると、アジャイル開発において請負契約は馴染みません。準委任契約にしてください。
ただし、契約と、政治的力関係や感情による要求は必ずしも一致しません。 そのため、準委任契約を行う場合でも、開発側は「アジャイルなやり方を採用すること」「アジャイルのメリット/デメリット」「どのような関与が必要か」と言った点を説明をしておく必要があります。 期待値や認識に齟齬があると、お互いにとって損なので、ぜひやっておきましょう。 これらは契約締結前から説明しておくのが望ましいので、開発側は営業やマネージャーがこれらのことを説明できるようになっていなければいけません。 また提案書を出す場合には、それにも盛り込んでおくことが必須です。
なお、発注者側の立場に立つと、準委任契約では、完成するかどうかもわからないものにお金を払えないと考える可能性はあります。 この不安を低減するには、十分な力量を持つチームを形成し、過去の実績を踏まえてどれくらいの開発生産性があるのかを伝えられるようにしておく、契約期間を短くして一定期間で更新有無を判断してもらう、といった対応が必要です。 準委任だからといって、スキルの低い寄せ集めのチームで作業にあたった場合、善管注意義務違反を問われる可能性もありますし、そもそも二度と一緒に仕事をしたくないと思われてしまってはよくありません。
それでは。