アジャイル開発のメリット・デメリット、向き不向き

アジャイル開発のメリットやデメリットとは?
現場で感じるアジャイル開発の向き・不向きは?
アジャイル開発が向いていないケースは?

アジャイル開発を導入するにあたって、ウォーターフォールと比較して、アジャイル開発のメリットやデメリット、向き・不向きについて、一番よく聞かれる質問です。

アジャイル開発とウォーターフォール開発の違いとは

ウォーターフォールは、将来を予測し、綿密な計画をたて、必要性が高いと考えられるニーズに基づき進めます。つまり、大きなサイクルで大きなプロダクトを完成させる手法です。

一方アジャイルの考え方では、リアルタイムなニーズやフィードバックを受けて、小さな単位で改善を繰り返し、ビジネスの変化に柔軟に対応していきます。つまり、小さなサイクルで小さなプロダクトを俊敏に完成させていきます。

そしてこの2つの開発手法の歴史については、どうでしょうか?

ウォーターフォール

ウォーターフォール開発モデルは、製造業や建設業で生まれました。高度に構造化された物理的環境では、事後の変更は不可能ではないにしても、非常に大きなコストがかかると考えられていました。そして、1956年のハーバートD.ベニントンと1970年のウィンストンW.ロイスの論文によって、ソフトウェア開発のためのフェーズ使用が説明されました。これがソフトウェアのウォーターフォール開発モデルの最初と言われることも多いですが、実際には誰がいつ「ウォーターフォール」と定義をしたのかは不明とされています。

近年ウォーターフォール開発離れが進む理由

・ステップが完了すると、前の段階に戻って変更を加えることができない
・ウォーターフォール手法は、初期要件に大きく依存する
・プロダクト全体は最後にのみテストされる
・計画では、クライアントの進化するニーズは考慮されない。プロジェクトの過程で生まれた新たな変更を加えたい場合は、プロジェクトは遅れ予算に影響を与える


アジャイル

このようなウォーターフォール開発モデルの欠点に対する解決策として、アジャイル開発モデルは2001年に生まれました。アジャイル開発モデルは、順次設計プロセスではなく、段階的なアプローチによってプロダクトを完成させることにより、ビジネスの変化に柔軟に対応します。

アジャイル開発の向き不向きというように言われることがありますが、時代背景の変化に伴って開発手法も変わってきたということだけなのです。現在は、VUCA時代ともいわれ、予測不可能なビジネス環境と不確実性は拡大しています。そのためアジャイルアプローチにより、ビジネスの変化に柔軟に対応していく必要があります。

それでもアジャイル開発で失敗したという経験がある方もいるかもしれません。
一般的に言われているアジャイル開発のメリットやデメリット以外に、認定スクラムマスター受講者、プロダクトオーナー受講者を対象にディスカッションした、実際の現場で感じたリアルな声もまとめています。

アジャイル開発のデメリットと言われるものの中には、実は克服可能なものも多く、アジャイル開発の現場で多くの実績と経験を持つ、ジョージャスティスのアドバイスも是非参考にしてください。


アジャイル開発のメリット|現場に導入した経験者のリアルな声

現場で感じたアジャイル開発のメリットとは?

一般的に言われているアジャイル開発のメリットだけでなく、現場で実際にアジャイルを導入した経験者が感じた現場レベルでのアジャイルのメリットをまとめてみました。

MERIT
メリット①開発スピードが早い

各チームが自律的に動き、他のチームを待ったり、余計なコミュニケーションによる非効率を解消できる。また優先度の高い必要な機能から順にリリースしていくことで、サービスインまでの期間を短縮することができ、迅速なスタートを切ることができる。

MERIT
メリット②大きな手戻りのリスクを軽減できる

ウォーターフォール開発のような開発の最後にテストしリリースするということはなく、細かくテストし、リリースを繰り返すので手戻りのリスクを軽減できる。

MERIT
メリット③プロジェクトの軌道修正が柔軟にできる

アジャイル開発では、状況の変化があったとしても柔軟に対応できる。そのため、不確実性の高いビジネス状況であっても、無駄を少なく開発することが可能。また投資の撤退となった場合でも最小限で判断できる。

MERIT
メリット④顧客満足度の向上

顧客・クライアントのフィードバックを受けながら開発をしていくので、ニーズのズレが少なくなる。また、リリースとフィードバックを繰り返すことで、新たなアイディアも生まれ、最終的に価値の高いプロダクトに繋がる。

MERIT
メリット⑤イノベーションの実現

迅速な意思決定と変化への対応ができることで、業務の効率化やスピーディーなイノベーションを生み出すことを可能とし、企業の価値向上に貢献する。

MERIT
メリット⑥メンバーのモチベーション向上

小さなリリースをしていくことで成功体験が得られやすく、メンバーの士気向上に繋がる。また振り返りによる改善の機会が多く、生産性をあげることができる。

MERIT
メリット⑦離職率の低下

自律的なメンバーで組成されているアジャイルチームは、各メンバーに権限が分散されており、やりがいを感じることができる。また心理的安全性が保たれており、離職原因の改善に役立つ。

認定スクラムマスター受講者、プロダクトオーナー受講者を対象にアジャイル開発を現場に導入した際に感じたアジャイル開発のメリットについてディスカッションした際の記録です。(現場の声:アジャイル開発のメリット編)

アジャイル開発のデメリット|現場に導入した経験者のリアルな声

日本の企業におけるアジャイル開発導入の障壁についても考えてみましょう。
認定スクラムマスター受講者、プロダクトオーナー受講者を対象にアジャイル開発を現場に導入した際に感じたアジャイル開発のデメリットや課題についてディスカッションしました。
それに対するジョージャスティスからのアドバイスも是非参考にしてください。

全体のスケジュール感の管理が難しい場合がある

弊社のクラスを受講頂く方から、現場のリアルな声としてご相談を受けます。全体スケジュール感がわかりずらく、顧客の「アジャイルなら途中でなんでも追加できる」という誤った解釈から、どんどん追加作業が増え、結果的にウォーターフォール開発のように最終的に作業を詰め込み、残業せざるを得ないというケースが発生します。

これは導入の初期段階で、よくある問題かもしれません。Joeのアドバイスも是非参考にしてください。

Joe’sアドバイス:スプリントバーンダウンチャートや、リリースバーンダウンチャートを使用して、作業トレンドを可視化させてください。

スプリントバーンダウンチャートや、リリースバーンダウンチャートを使用して、作業トレンドを可視化させてください。作業ペースは、スキルの向上や自動化の導入がなければ、大きくは変わりません。つまり、追加作業があれば、その分時間は掛かりますし、何を優先すべきか考える必要があります。そして顧客に正しくアジャイルを理解してもらえるよう、スクラムマスターは働きかけてください。

チームメンバーのスキルのバラツキが開発の遅れに繋がりやすい

弊社のクラスを受講頂く方から、現場のリアルな声としてご相談を受けます。知識と経験値に差があり、若手メンバーの育成や、そもそも経験の低いメンバーをアジャイルチームに入れるべきではないのかという悩みがある。

現場で起こりうるこの悩みに対するJoeのアドバイスも是非参考にしてください。

Joe’sアドバイス:チームでモブをしてみてください。

モブ(Mob)とは、チーム全員が同じことを同時に、同じスペースで、同じコンピューターで作業する方法です。(ペアから進化したのがモブです)
チームで知識を共有しクロスファンクショナルなチームの育成に役立ちます。シニアメンバーは、技術力を持ち、ジュニアメンバーは創造性を持っているかもしれません。ジュニアメンバーにはぜひ成功体験をしてもらってください。小さくても構いません。これは自信へと繋がり、より自律的なチームの一員になることを助けます。

開発チームメンバーが固定されず、アジャイル開発のスキルがなかなか上がらない

弊社のクラスを受講頂くエンジニアの方から、現場のリアルな声としてご相談を受けるのが、開発メンバーが固定されない件です。
日本の企業では、1つのプロジェクトが終了する度に都度解散し、また新しいメンバーで次のプロジェクトがスタートするケースが多いようです。

せっかくアジャイル開発に慣れて来て、チーム全体がスキルアップしたタイミングでプロジェクトが解散されてしまい、別のメンバーで次のプロジェクトがスタートする為、またゼロからのスタートとなってしまい、チームが育ちにくいと言ったご相談をよく受けます。

日本のエンジニアの現場で起こりうるこの問題に対するJoeのアドバイスも是非参考にしてください。

Joe’sアドバイス:チームメンバーは一定期間同じであることが望ましいです

しかしアジャイル開発へ移行段階にある場合は、プロジェクトを掛け持つこともしばしばあるかもしれません。その場合でも、チームで一緒に働く時間を作ることをおすすめしています。例えば月曜日はAチーム、火曜日はBチームなど。もしくは、午前中はAチーム、午後はBチームなど。そしてモブで働ければ、チームメンバーはより早くお互いを理解し、チームのスキルの向上も早いでしょう。チームで働く時間を増やせるといいですね。

大規模開発で上手くいくイメージがもてない

弊社のクラスを受講頂くエンジニアの方から、現場のリアルな声としてご相談を受けるのが、大規模開発についてです。以前の大規模開発プロジェクトでアジャイル手法で行いましたが、上手くいかなかった経験があります。そのため大規模開発はウォーターフォール開発がいいのではないかと感じています。大規模開発でもアジャイル手法は有効なのでしょうか?

これは失敗したケースで、よくある問題かもしれません。Joeのアドバイスも是非参考にしてください。

Joe’sアドバイス:大規模開発でもアジャイル手法は有効です。

大規模開発に向けて、アジャイルのスケールの手法は多く存在しています。失敗は色々なケースが考えられますが、よくあるのは、モジュールの分割が上手くいっていないこと。そしてインターフェースがきちんと定義されていないことが挙げられます。30日以内に設計、分析、構築、テスト、デプロイが完了できるように、並列実行可能なモジュールに分割できるよう再検討してみてください。

まとめ

プロジェクトの成果を最初から明確に理解でき、敏捷性を求められない場合はウォーターフォール開発が合っている場合もあるかもしれません。しかし時代の変化に伴って開発手法が変わってきているということは、もはや必然的なのかもしれません。アメリカやヨーロッパではもちろん、日本国内でもアジャイル開発の成功事例はたくさんあります。ぜひ、スモールスタートからでも初めてみてください!

【関連記事】
アジャイル開発事例