■XPに対する反論の紹介
ここは研究の場ではないので、従来の方法論に囚われている人とのパラダイム論争的なことは省き、僕らが実務的に注意しなければいけない点をピックアップして述べます。参考までに筆者個人の考察も加えました。
・最終的に納品されるスコープが不確実である
XPは反復開発を行なう中で工数見積もりの精度を上げていき、予測可能で無理のないペースでの開発を前提としている。個々のイテレーションに於けるスコープは当然ユーザの要望が取り入れられるとしても、契約時点に於いてユーザは最終的にどこまでやってもらえるのか不明な状態である。
(筆者の考察)
これに対し、従来の方法はスコープの精度は高いが調達日(契約上ではなく実際の納期)が不確実と言えます。
ただし、これは契約上、追加料金が請求できるかどうかの違いのみで、契約段階での納入予定日にリリースできる範囲が不明確なのは同じである。逆に従来の方法はこの点をごまかして契約していた為に、納期直前になって慌てて限定リリースならびに納期延長をユーザに頼み込まなければならなかったのではないでしょうか。
「半年先のことは分かりません」等と正直に言ってはユーザの不信感を招く危険性もあり、自分たちが技術不足であると認めるようで抵抗があるのは理解できます。しかし、今、アジャイルが注目される背景には、それがあくまで理想論であり、現実に不確定要素があるのならそれに応じた対応の必要性を皆が認識しだしたことにあるのです。
ここは営業との関連もあり難しい問題ですが、前章の内容及びリスク管理の面から説得するしかないと思われます。
・価値の高いソフトウェアは本当に今後も保守・拡張され続けるのか
XPでは、価値の高いソフトウェアはずっと保守・拡張され続け、その間はずっと同じチーム(メンバの異動や増員は途中で発生する)が作業することを前提としている。しかし従来のプロジェクトのメンバは、できるだけ生産性を向上させて早く納品を済ませ次の挑戦をしたいと思い、いつまでも保守を続けたいなんて思っていない。
(筆者の考察)
営業や経営サイドからすると一般に保守の方がリスクが少なく利益も上がるのでXPの方が良いかもしれませんが開発の現場のモチベーションを保てるか、管理者の手腕によるところが大きいと思います。
ただし、一過性のプロジェクトだから後のことを考えなくて良いとは言えません。そんなことをすれば次の仕事なんて来ないのではないでしょうか。
・メンバの技量に重きを置きすぎている
従来の管理手法では一部の者に重要な決定・標準の策定を行なわせそれを一般の要員に実行させることで失敗の芽を摘み取ってきた。XPは、世界のソフトウェア開発者人口の49.9999%は平均以下の能力しか持っていないということを忘れている。
(筆者の考察)
この反論はリスク回避という面では論点がずれているようです。XPでは各自の能力に合わせてスケジューリングをするので失敗の危険性は低いです。それより問題は、最初の反論にあるように要員の能力が低すぎるとスコープが狭くなりすぎて最終的にユーザの要望が満たせないことでしょう。
ただ、要員の能力が低かった場合、従来の方法であっても成功するとは思えません。結局メンバ間のコミュニケーションによって相互に能力を高めていくしかないのではないでしょうか。
逆に従来の方法での標準化は、「羹に懲りて膾を吹く」の例え通り、やたら防護壁が厚くなり機敏に動けません。その反省がアジャイルという概念を生み出したのです。
・XPは開発者の「恐れ」に囚われすぎている
XPの始祖Kent Beckは、先ずプロジェクトが直面するリスクを整理することから始めたが、実際はそれらのリスクから開発者には様々な恐れがうまれている。XPはこれらの恐れに対する処方箋であったために開発者の熱狂的な指示を得たが、リスクはあくまで見掛けの「症状」であって「病気」の本質そのものではない。「病気」そのものに焦点を当てなければ根治できない。「病気」は「無知」と「焦り」の2つの魔物から生み出されているのである。
「無知」に対する処方箋は、問題を「断片的な知識だけで成功する方法」と捉え直してチームが議論の席に着くことです(要件を完全に把握していないのに気づかず見切り発車していないか皆で反省するのです)。 「無知の知」
「焦り」は、我々の業界の風土病と言えます。今まで時間的に余裕のあるプロジェクトなど経験したことがない者が殆どではないでしょうか。ここではリヒターの法則「人は急かされても速く走れない」を思い出しましょう。納期遅れなどでチームに時間的な圧力が加わった時、メンバは本質的な解決方法よりも自分を忙しそうに見せることに注力してしまう傾向があります(無意味な徹夜など)。これは管理者がユーザに言い訳するためにそうすることも多いです。
XPは結果的にはこれら2つの魔物に対する良い処方箋となっています。
「無知」に対してはチームを同じ場所に配置し、またユーザをチームに取り込むことで断片的な知識による仮定(推測)のもとの作業をなくすことを奨励し、チーム全体のやり取りを活性化することによって重要な問題、特にユーザに確認しなければならない問題を見過ごすことを防止しています。
「焦り」に対しては既に周知の通り無理のないペースで継続的に行なっていくことで解消しています。
(筆者の考察)
これはXPに対する反論というよりも、実際には見過ごされている問題の本質に対する警鐘であり、我々が肝に銘ずるべきものです。これを忘れて表面的な技術論で中途半端にXPを導入すると問題が発生します。
・テストファーストは品質を完全に保証できるか
この問題に関しては別途「テストファースト」の回で考察します。
・XPは大規模プロジェクトには不向き
XPは元々大規模チームへの適用を想定したものではなかった(Kent Beckは、20名程度までは可能と言っているが現実的には10名前後が妥当と思われる)。開発者が100名を超えるような大規模システムには適用できないのではないか。
(筆者の考察)
懸案されているような大規模システムの場合、必ずサブシステム単位等でチームの階層化が行われるはずです。
一人のリーダーが20人以上を管理しては方法論によらず無理が生じるので、チーム編成の誤りとしか言えません。
また、オブジェクト指向の導入(コンポーネントやクラスライブラリといったフレームワークの充実)によって少人数でも以前よりずっと大規模のシステム構築が可能になった現在、この問題がそれほど致命的とは思えません。
ただし、大規模開発を複数のXPチームに分割した場合のチーム間の連携については未だ実績がないので不明です。
・XPよりも従来の方法の方が安く安定している
メインフレームでの開発のようにユーザの要望が安定していて頻繁に変更が発生しない時は従来のウォーターフォール型の方が安く良質なものが提供できる。
(筆者の考察)
そんなおいしい仕事がなくなってきているから問題なのですが、この点についてはKent Beck自身が言及しています。
「いつXPを使うべきか。それは要求が曖昧で変化している時である。」
従来の方法の方が良いというのなら「仕様変更が多くて堪らない」等と愚痴をこぼすべきではありません。
|