2010年2月13日土曜日

アジャイルって契約どうすんの?

釣られちゃおう

アジャイルって受託開発との相性が最悪な気がする。んー受託というか、大規模開発には向かないのかもしれない、と薄々感じてます。

薄々というのは、まだアジャイル開発を実際に仕事でやったことがないからで実際なんとも言えないんだけど...

アジャイルは客を選ぶ

どういうものが欲しいかがある程度明確なお客さんじゃないと厳しいという意見を聞いた事があります。で、実際そうだと思います。というのも、要件やそもそもの目的を認識してないお客さん相手だと、ゴールを定めにくいから、アジャイルでやろうとしても、変更が激しくでどんでん返しもあり得そうで、怖いんじゃないかと思います。

イテレーションを繰り返す中でお客さんにレビューをしてもらって、じゃあそれを完成させるのに、あと一日かかりますと言うとして、それが契約日外に達する場合、まー通常だと1人日3〜5万として、あと3万下さいって言うようなもんで、チキンな僕にはそういうこと言えるのか??とか、もっと優秀なプログラマーなら2時間で終わるんじゃないか??とかいう自信のなさもあって、言えないんじゃないかと思ってしまいます。個人事業主でやってたら一日2万くらいが限度でしょう。だって税金収めるってなったら1人日2万以上はないと、いつ職に溢れるか分からないし

契約と開発人数?

今いる会社だと、開発を外注にまるなげするようなことはせずに自前でやっちゃうという態勢の方が絶対いいと感じるんですが、でも人数がきつきつなので、ドキュメントドリブンじゃちょっと割に合わないというのは感じます。

作成するもののうち成果物として先方に収めるものが出ると思うのですが、そのうち何を収めなければならないかは、契約で決まってくると思います。例えば受託開発でも製品の著作権が先方にあれば結構綿密な設計書を先方に成果物として収めるのが筋だろうし、逆に著作権がこちらの場合、収めなくてもいいとは思うけど、そういう場合は運用や保守はこちらでやるというケースがあるので、運用手順書やらは自社ないでちゃんと作成しとく必要はあると思います。人に依存させると会社としてのノウハウが貯まらないから。

Railsの本のイテレーション開発のサンプルを見てると、とりあえず契約なんかの話は置いといて、お客さんと先に概要の打ち合わせをして、だいたいやる事が決まって、画面遷移なんかを手書きで書いてイメージを共有してから、イテレーション開発に入るという感じです。

これはフリーでやってる人はそれで問題ないかもしれないけど、会社の場合は、開発に入る前の契約と、後のドキュメント生成のところが気になるはずです。Rubyの場合は僕はYardでドキュメント(JavaDocみたいなの)は作ってしまって、あとは運用マニュアルとかは、製品が出来た後から作るか、お客さんと一緒に開発してるんだし、お客さんの方で作ってもらうというのもありだと思います。問題はそのプロジェクトのスコープと役割分担であって、どっちが何をするかをはっきり決めておけば、アジャイルでも別に問題はないんじゃないかという点です。

個人的なアジャイルのイメージはウォーターフォールをV字型にして、内部設計からユニットテストから統合テストあたりをグルグル回すというのがあります。その外枠の要件定義や外部設計、それの対象にあたる成果物の承認なんかは、アジャイル開発の外でやって、うまくいったら終わり、まだ開発が必要なら再度契約という感じになるんじゃないかなーと思います。そこでお客さんが納得できるかどうかは分からないから、客を選ぶとか、プロジェクトの性格に依存するんだろうなと思いますが、設計書なしに何十人ものプログラマーを動かすってそうとう難しいと思うので、少人数態勢で開発にあたれないなら、アジャイルは不向きなのかもしれません。でも、どっちみち社内での開発の一部のプロセスをアジャイル化はできると思います。納品物に含まれる設計書のうち、誰も必要としないような細かい設計書を作っても意味がないので、そんなの作るより、動くものを作ってしまおうと考えるのは普通のような気がします。

やっぱり中庸!バランス感覚!

契約がうまく取れれば、半ウォーターフォール半アジャイルで進めるのがいいのかなと思います。どんな開発手法にしろ、いいものをできるだけ速く最良の品質で顧客満足度を満たし費用対効果を最大限に得られるものが、理想の目的であると思うので、それを達成するためにはどうするかを毎度考えることになると思います。「これ!」という答えがない分野でしょうしね。

開発メンバーも選ばれるかも

アジャイルは客を選ぶというけれど、開発メンバーもそれなりに腕のあるプログラマーじゃないと勤まらない気が薄々してます。だって変更を受け入れるというのもあるし、お客さんが言う要件を分析して実装するという要素もあるし、ということはそれなりの知識経験、そしてそれをひっくるめたセンス(テイスト)が問われるということですよね... 個人プレーならいいけど、組織のためにノウハウを残すとかなると... うー、頑張ります><

1 件のコメント:

mito komatsu さんのコメント...

Thank you for this information, I want to introduce my company of Web Development Services in Texas.
Please contact us if you want to make a good deal for Web Development and design in affordable prices.
Web Development Services