http://martinfowler.com/bliki/RigorousAgile.html

「アジャイル手法には厳密な定義がない」との不満をよく耳にする。 これは「チームがアジャイル手法を使っているかどうかをどうやって判断するんだ」ということなのだと思う。 厳密な定義がないと、他人に教えることが難しいということもあるのだろう——どんなカリキュラムだろうか?

まあ、こういった不満は分からなくもない。 ただ私は、厳密な定義などないと思っている。 厳密さがないことが、アジャイル手法の本質を定義している部分もあるのではないだろうか。 これが、アジャイル手法のコアとなる考え方にもなっているのではないだろうか。

思考プロセスの基本的な問題のひとつは、 (特にソフトウェア開発においては) 背景がすべて異なるという点である。 システムが異なれば、困難や制約も異なってくる。 そのため、それらすべてをカバーするような行いを厳密に表すことは非常に難しい。 さらに、ソフトウェア開発が人間系の活動であること、 そして、人間は生来、矛盾した非常に気まぐれな生き物であることが、 事態をさらに悪化させている。 このことからアジャイラー達(agilists)が導き出した結論は、 「ソフトウェア開発に厳密なプロセスを結びつけようとすることは有効ではない」 というものである。 なぜなら、厳密なプロセスはプロセスを実行する「人間」という必要不可欠な構成要素を無視しているからである。

( おそらく我々の職業がコンピュータを扱うために、 コンピュータをプログラムするのと同じように 人間システムもプログラムしたくなるのだろう。 両者は全く異なるものだというのに。 )

アジャイル手法は基本的に、従うプロセスを自ら定め、アクティブに、定期的に、自らのプロセスを変化させるチームを対象としている。 厳密なプロセスを定義し、プロセスに順応性があるかどうかテストするようなことは、 アジャイル手法の考えに反している。

アジャイル手法の定義が存在しないことが フラストレーションであることを否定はしない。 アジャイル手法が他の手法より効果的であることをどのように測定できるだろうか? 「Scrum」を定義できないままに、XPはScrumよりも効果的といえるだろうか? クライアントがXPを使ってシステムを構築してくれと言ったとき、 クライアントはそれがXPだと分かるのだろうか? 「見れば分かる(I know it when I see it)」のだろうが、それには経験豊富な実践者が必要となる。 経験豊富な実践者がいたとしても、経験者同士で意見が合わないことも多分にある。

私はこの難問に答えることができない。 というか、答えがあるとは思えない。 水に濡れずに泳ぐことは不可能なように、 このことはアジャイル手法の不幸とも言うべき結果である。


  • 2005-05-31 (火) 23:55:36 ‘’[[i]]’’ : 厳密という言葉自体がアジャイルと矛盾している、「重い鎧を着て軽々と戦え」と言ってるようなものだ