質問: **クローズされました**。この質問は 主観性の高い質問 です。この質問では現在、回答を受け付けていません。 --- **この質問を改善したいですか?** 質問を更新、この投稿を編集して事実と引用で回答されるようにしてください。 4年前 にクローズされました。 この質問を改善する アジャイルは、客の望むソフトウェアができやすいという利点があります。こう考えるとアジャイルは良さそうに思えます。 そのアジャイルの欠点は何でしょうか?
回答: オフトピックな気がしますが回答します。 日本の大企業で4年間ウォータフォールの現場にいた後、アメリカの大企業で4年半ほどアジャイルの一手法であるスクラムの現場にいる私の主観です。 1. 開発初心者には難しい 一般的にアジャイルな開発手法は、チームメンバが意欲に満ちた優秀なエンジニアであることが前提です。少なくとも一人で見積もり、設計、コーディング、(自動)テストができないと辛いです。さらにコーディングの部分では、ドキュメントをほとんど書かないので、仕様を(人が書いた)コードから読み取る能力が必須です。こういったことから、アジャイルは一定の経験を積んだエンジニアを集めないとうまく回りません。 2. 品質を確保しにくい ここで言う品質がいいとは、バグが少ないとか、設計・コードの保守性が高いとかいう意味です。アジャイルでは、設計・コーディングがエンジニア個人の力量に依ってバラバラになってしまう傾向があります。普通は静的解析ツールや自動ユニット・統合テストツールを使って対策しますが、自動テストはそれ自体書くのが大変ですし、テストを書くのもエンジニア個人の力量や性格に依ってしまうので、網羅性は低くなりがちです。 3. 設計や修正の意図が風化する アジャイルでは包括的網羅的ドキュメントは書かないので、コードが仕様という感じになりますが、その裏にある設計の意図は開発メンバの入れ替わりや時間の経過とともに風化してしまうことがあります。結果、意図に沿わないコードが書き足されていき、つぎはぎでちぐはぐなコードになっていってしまうことがあります。まあ、動くものが最優先という理念なのでそれでもいいのかもしれませんが、保守性が低くなってしまいます。また、バグ等の修正についても、コミットログやちょっとした開発メモ程度でしか情報が残らないので、修正者がいなくなったあとで再修正が必要になった場合、割と苦労しがちです。 ただ、このような欠点を補って余りある利点がアジャイルにはあるので、今日の世界では9割以上のプロジェクトがアジャイルを採用していると言われます。主には、その名前の通り、開発スピードが速いと言うメリットのためです。現代はビジネスアイデアをいち早くサービスとして実装して世に出すことが肝要で、逆に(少なくともアメリカでは)品質に対しては割と寛容です。Pokemon Goのリリース時もバグが多かったですが、アメリカのApp Storeのレビューでは大目に見てあげようという声がよく見られました。