アジャイル契約

ここのところCode Contractsを使ったDbC(Design by Contract)に凝っているのですが、ふとアジャイル契約というものを思いつきました。それでDbCにならってジャムズのアジャイル導入に関する契約を考えてみました。


不変条件:

事前条件:

  • 問題を認識しているがそれに対してどう対処するべきかがはっきりしていない
  • 許容できる変化の範囲が明確であるか、あるいは不明確であっても明確な覚悟がある
  • 従来と同等以上の努力を行う覚悟がある

事後条件:

  • 担当者が品質向上を実感できる
  • 担当者が生産性向上を実感できる
  • 担当者が知識や経験の習得を実感できる
  • 品質や生産性に対して客観的に評価できるのであればその改善が示される


不変条件については説明の必要はないと思います。
事前条件について、やることがはっきりしていてただそれを徹底することだけが課題である(対処とその結果が完全に予見できている)ということであればアジャイルを導入する意味はないと思います。しかしやるべきことはたくさんあるのは分かっているがどれから手をつければよいのかわからなかったり、個別には正しいことであっても矛盾があったり同時に組み合わせると複雑さを増して別の問題を発生させたりする状況があると思います。このような状況ではやるべきことが分かっている様でも実はどうして良いのか分かっていないということだと思います。
あたりまえなのですがアジャイルに限らず、変化に対して許容できなければ自らの意思で何かが変わることはあり得ません。頭の中では変化に対して許容しているつもりでも現実の場面では感情的に許容できないことはよくあることだと思います。よって変化に対して明確な決心とその徹底が必要です。それがあればたとえ小さくてもその変化の許容範囲の大きさに応じて改善することができると思います。もちろん期待される改善の度合いは変化の許容範囲の大きさに対応することになりますが。。。
あとこれもアジャイルに関わらないと思いますが、もし手を抜くことを目的にしているのであればどのようなことも失敗する可能性が非常に高いと思います。アジャイルでは特に従来同等かそれ以上の努力を要求すると考えています。ただ私は努力の量と負荷や負担の量は直接的には関係ないと考えています。手を抜くつもりであれば別ですが、そうでなけば課題があるということは努力に見合う成果が得られていないということだと思います。アジャイルを実践することは利害関係者の努力のロス(無駄)が最小限になるように努力し続けるということです。その結果、努力の量は増えてもロス(無駄)が減って負荷や負担は大きく軽減される可能性があります。また努力が成果につながる実感がやりがいにつながることもあると思います。
事後条件について、事前条件が満たされている限り担当者にはそれなりの実感が得られることを保証します。ただここでいう担当者という表現は例えば担当者全員のアンケート結果などの担当者全体の意見のことであって個別の担当者それぞれの全員というわけにはいかないと考えています。
最後に最も悩ましいのが効果の客観的評価です。どこかに欠点があるということだけでダメだと評価するのは論外(でも実際は結構ある)としても実際問題として品質や生産性に対して客観的に評価できることはかなり稀で難しいことだと思っています。うちではしっかりメトリクスを定義して計測しているので客観的に評価できるというところもあるかもしれませんがその定義や計測方法が何らかの考え方に基づくものであった場合にはそこに偏見が含まれているといっても過言ではないと思っています。ただ何らかのメトリクスを計測していれば、それを偏見なしに客観的に見ることで何らかの実感が得られる可能性は高いと思います。


さて、これがジャムズのアジャイル契約です。もしこの契約に違反するようなことがあればそれはジャムズのアジャイル適用にバグがあるということです。私自身は現在の実装にバグの存在は認識していませんし、今後さらに性能を向上させるつもりです。是非ともジャムズとアジャイル契約を結んで効果を実感していただきたいと思っています。