📗

アジャイル&ウォーターフォール④ ~哲学とプラクティス~

2024/10/25に公開

はじめに

アジャイル開発手法は、近年のソフトウェア開発において広く採用されています。しかし、その本質が正しく理解されているとは言い難い状況があります。アジャイルが最も重視するのは「事実に基づいた判断」と「顧客に対する便益の最大化」です。これらの本質的な価値が、現場では往々にして見過ごされがちです。本稿では、アジャイルの本質とその誤解、そして従来の開発手法との違いを考察しながら、真のアジャイル実践について考えていきます。

アジャイルの本質

アジャイルの核心は、事実に基づき、顧客にとっての価値を提供することです。スクラムやカンバン、スプリント、スタンドアップミーティングといった具体的な手法は、この本質的な目的を達成するための手段です。現実に基づいた開発を行い、柔軟に変化に対応することで、最終的に顧客のニーズに最適な形で応えることが求められます。
開発の迅速性やチームの協調性は、これらの目的を達成するための重要な要素ではありますが、それ自体が最優先されるべきものではありません。

アジャイルの性質である「制約の少なさ」

アジャイルの特筆すべき特徴の一つは、その驚くべき単純さにあります。アジャイルが真に依存する原則は、「事実に基づいた判断」と「顧客に対する便益の最大化」のたった2つだけです。この2つの原則は、ビジネスの文脈において否定されることが極めて稀な、普遍的な価値を持っています。
この最小限の制約という特徴は、アジャイルに独特の強みをもたらします。まず、状況に応じて適切なプラクティスを採用または除外できる柔軟性が生まれます。また、異なる業界や規模のプロジェクトにも適用できる高い応用性を持ち合わせることになります。さらに、すべての判断が2つの原則に集約されることで、プロジェクト全体を通じた統一性が実現されます。
これは、手順や役割、文書化など、多くの要素を「守るべきもの」として規定しているウォーターフォール型開発と対照的です。ウォーターフォールでは、これらの多様な制約が時として柔軟な対応や変化への適応を困難にする場合があります。

アジャイルをめぐる誤解の現状

世間では、アジャイルが「スピードを重視する手法」「チームの協力を促す開発スタイル」として理解される傾向が強くなっています。多くの書籍や講義が具体的なフレームワークやツールの使い方に焦点を当てており、プラクティスを守ることがアジャイルを実践することだと誤解させてしまいます。
その結果、本来最優先されるべき「事実に基づいた価値提供」が二の次となり、形式的な実践に終始するケースが増えています。

ウォーターフォールとの比較における表面的な類似性

アジャイルの特徴として「事実に基づく価値提供」が強調されることに、多くの初心者が違和感を覚えます。なぜなら、ウォーターフォール型開発においても、事実に基づく判断や顧客価値の提供は決して軽視されていないからです。この違和感の正体を理解することは、アジャイルの本質を理解する上で極めて重要です。

ウォーターフォールの隠れた哲学

この違和感は私たちが無意識のうちにウォーターフォールの哲学を基準にして物事を見ているために生じます。ウォーターフォールの非公式ながらも根本的な哲学は「正しいプロセスを実践すれば、知識や経験が不足している人でもプロジェクトを成功させられるはずだ。だから何よりも手法を徹底して実践せよ」というものです。
興味深いことに、この哲学はウォーターフォールがこのような哲学を持っていることを知らない人でさえ、無意識のうちにこの考え方を基準として、ウォーターフォールやアジャイルに限らず、あらゆる開発手法を評価する傾向があります。

価値提供に対する根本的な考え方の違い

このような視点に立つと、「事実に基づく価値提供」は、単なるプロセスの一部として捉えられます。つまり、「正しいプロセスの中に、事実確認や価値確認のステップを組み込めばよい」という理解になってしまうのです。これが、アジャイルの本質を理解する上での大きな障壁となっています。
一方、アジャイルの哲学では、事実や価値はプロセスに組み込まれるべきステップではなく、すべての判断の基準となるべき存在です。つまり、プロセスやプラクティスは事実と価値に従属するものであり、その逆ではないのです。この根本的な考え方の違いは、一見すると些細なように見えますが、実際の開発現場での意思決定や行動に大きな違いをもたらします。

実務における具体的な違い

ウォーターフォールでは「プロセスに従うことで事実に基づく判断ができる」と考えますが、アジャイルでは「事実に基づく判断を行うためにプロセスを調整する」というアプローチを取ります。この違いは、特に予期せぬ状況や変化に直面したときに顕著になります。

アジャイルの実践的成功に向けて

アジャイルを成功させるためには、具体的なプロジェクト状況において「事実に基づいた判断」をどのように行うかを考える必要があります。例えば、ユーザーテストの結果や実際の使用データに基づいて機能の優先順位を決定したり、顧客との密接なコミュニケーションを通じて要件の本質を理解したりすることが重要です。プラクティスはこれらの活動を支援する手段として活用されるべきであり、形式的な遵守が目的化してはいけません。

アジャイルにおける価値提供の実現方法

アジャイルでは、短いサイクルでの開発と検証を繰り返すことで、常に最新の事実に基づいた判断が可能になります。これは単なる迅速性のためではなく、より確実に顧客価値を提供するための仕組みです。スプリントレビューやデイリースクラムといったプラクティスも、本質的にはこの「継続的な事実確認と価値判断」を実現するための手段なのです。

まとめ

アジャイル開発の本質は「事実に基づいた価値提供」と「顧客にとっての便益」にあり、プラクティスはそれらを実現するための手段です。この本質は一見するとウォーターフォール型開発と変わらないように
見えますが、事実と価値をすべての判断基準の中心に据える点に、アジャイルならではの特徴があります。現在広がっている誤解を正し、真のアジャイルを実践するためには、形式的なプラクティスの遵守にとどまらず、その背後にある本質的な考え方を理解し、実践に活かすことが不可欠です。

Discussion