Agileとは何なのか?なぜこんなに評価されてるのか?
対比としてウォーターフォール型が語られるので、それと比較します。
目的
ウォーターフォール
スケジュールを守ること。段取りをかっちり固めること
Agile
顧客の価値の最大化
特徴
ウォーターフォール
- 設計をかっちり固める
- 長期的に行う
- 途中でミスると手戻りがすごく大きくなる
- 仕様書が大事
- 契約に従う
- 管理が楽
- 開発者はただの実装者になる
- 顧客は自分の欲しいものが明確に伝えられる
Agile
- 設計はあとから変化するかもしれない
- 短いスパンで切っていく
- ミスを早めに見つけて対応できる
- 動くシステム(≒Mock)が大事
- 仕様より顧客との協調を優先する
- バランスを取るのが難しい
- 開発者も全体の流れを考える必要がある。
- 顧客も製品を見るまではっきりしていない
背景
では、なぜAgileが盛んになったのか。 僕が考える理由は以下です。
アプリケーションの複雑化
電卓レベルではなく複雑なシステムになるにつれて、顧客がアプリケーションの全体像や意義を全て把握できない規模になってきた。
同時に、開発の規模も増加してきて、長期計画を立てられるレベルでなくなってきた。
IT環境の変化の激しさ
インターネットの普及により、技術の進歩や他社の変化が激しくなってきたため、1年2年前では考えられない要因が多数入ってくるから。
設計の洗練
手続き型からオブジェクト、関数型へ変化していき、 初めにきっちり仕様を固めなくても変化に強い設計が行えるようになった。 オブジェクト指向の色々な原則も小さく柔軟に、というところから来ている。