【PdM的考察】AgileとWaterfallって同じなんじゃないか説

ある面接で「AgileとWaterfallの本質は同じ」みたいなことを言われました(面接官様、これを読まれて受け取り方が間違っていたらすみません)。実際どうかはともかく、少しおもしろいと思い再度勉強のためも含め、二つのメソッドについて調べたことを記事にまとめます。

Waterfallとはなにか

従来製造業などで活用されてきた開発手法・プロセス。予算とスケジュールがある程度決まっていることが前提で、個別の工程へ分割し、それらの工程で行うことが明確に定義されている。プロジェクト進行中に起きうる変化や不確定要素が少ないほど、効率的に網羅的な完成品を目指せる。また、Sequential development/ Sequential modelとも呼ばれる

強み

  • 全ての資料がしっかりまとまっており、バージョンコントロールできている

  • 予算やスケジュールがはっきりしているプロジェクトの推進に最適

  • 計画と管理がしやすい

  • 全体像や工程がはっきりしているため、比較的ゴールまで早い

弱み

  • 時がたつにつれ要件が変化するプロジェクトには向いていない

  • 序盤の要件定義や基礎部分がしっかり構築されていないと失敗、または変化への対応の効率が悪いためコストが余分にかかる

  • 既に完了しているのフェーズに戻ってやり直すことが難しい

  • 最後のテスティングでバグなどが発覚した場合、戻って直すのに時間とコストが大幅にかかる

Agile(アジャイル)とはなにか

2001年のAgile Manifestoに基づき、ソフトウェア開発にルーツを持つ、Waterfallよりも新しい開発手法。要件定義、開発、リリースなどの過程を「スプリント」というを一つのサイクルとし、何度も回すことで(イテレーション)完成を目指す。小さなサイクルで回すことで、スコープの変化など不確定要素が多い場合において、変化する環境への機敏に柔軟な対応を実現する。
もう一つ特徴としては早い段階でビジネスとテクノロジーの協業が求められる。クライアントを含むステークホルダーを常に巻き込むことで軌道修正を早く正確に行い、より良いものを作ることがゴールとしている。また、よく言われているScrum/スクラムと同義語。

強み

  • 開発サイクルが早い(通常は2週間のスプリント・Sprintに分けている)

  • 各サイクルが小さいため、プロジェクトのリスクやコストが削減される

  • 開発プロセスを管理しやすい

  • システム構成・アーキテクチャをシンプルにできる

  • クライアントやステークホルダーとの対話がオープン・協業しやすい

  • 変化に強い(プロジェクト進捗への影響が少ない)

弱み

  • 最終的なコストと時間が予測しにくい。場合によってはコストが多めにかかることも

  • 初めからそもそもの基礎や人材のスキル自体がしっかりしていないといけない

  • 文書化・ドキュメンテーションをしっかり行わないと、変化が多いためメンバー同士のコミュニケーションや新しいメンバーの参画が困難になる

  • プロジェクトの範囲や条件など意識しておかないと、スコープが広がりすぎてプロジェクトが永遠と続くリスクがある

  • 明確なゴール・完成品を具体的にイメージできていないと進みにくい

WaterfallとAgileの違う部分

強み弱みといろいろ書いてわかりにくいので、簡単に要点をまとめると以下のような感じかと思いました:

WaterfallとAgileの似ている部分

ハイレベルですが、本質的には以下の二点だと思います:

1. プロジェクト(プロダクト)マネージメントの手法である:目的があり、達成する手段を明確にする

2. 実質行うことは同じ:計画・プラニング、要件定義、デザイン、開発、テスティング、リリース、運用とモニタリング、管理やメンテナンス

実際の現場での経験

  • 純粋なAgile以外にもAgileとWaterfallの要素を混ぜた混合系も存在した

  • エンジニアチームはAgileをより意識している

  • クライアントのマインドセットに合わせる必要性もある

まとめ(TLDR;全文を読むのがめんどくさい方はここから)

もちろんAgileもWaterfallも独立したメソッドには間違いないが、記事のきっかけとなった言葉通り、本質はどちらの手法も同じであると思いました。
重要なのはどちらとも目的・ゴールを達成するための手法であり、ゴールまでの道筋をはっきりさせることです。しかもどちらの手法でも行われる各工程の本質は同じであり、単純にまとめられ方が違うだけだと感じました。下は各工程を二つの手法ごとにまとめたものです(ソースによってはステップの若干の違いがありますが、要は行っていることの本質が同じということ)

では本質が同じという中でどっちの手法を使えばいいのか?という疑問については、プロジェクトの特徴によります。ざっくりいうと不覚的要素が多く、変化がたくさん期待されるプロジェクトに対してはAgileを、既に行うことは決まっていて予算もスケジュールもはっきりしている場合はWaterfallを、といったところでしょう。
書く手法には前述したように特徴や向き不向きはあるものの、「本質は同じ」と割れる理由がわかった気がしました。


この記事が気に入ったらサポートをしてみませんか?