アジャイル開発12の原則

12の原則

顧客との満足を最優先する

開発者の最も重要な活動は、価値のあるソフトウェアを素早く継続的に提供して、QCD(品質の良いものを安く早く提供する)の達成ではなく、ビジネスゴールを達成するという観点で顧客に満足してもらうこと。

つまり、開発者は常に顧客と同じ目線でビジネスゴールを達成するにはどうすればいいかを考えなければならない。

そのためには、プロジェクトの初期段階で顧客とビジネスゴールについて徹底的に話し合う必要がある。

また開発中も常にそれを意識して、方向がずれている場合は素早く修正するべきである。

要求の本質を見抜き、変更を前向きに捉える

開発者は要求の変更がたとえ開発の後期であろうと、それが改善につながる価値ある要求であるならば新しい価値を見つけたと捉え、前向きに受け入れるべきである。

そのため、開発者は開発の後期であろうと常に要求の本質を見抜き、価値ある要求かを判断する必要がある。

また関係者は全員、改善につながる要求を生み出すことに努めるべきである。

成果物を2-3週間という短い時間間隔で、リリースし続ける

開発者は顧客がビジネスに積極的に取り組めるよう、成果物を頻繁にリリースするべきである。

そうすることで、顧客からのフィードバックを定期的に得ることができ、結果として顧客が本当に欲しいものを作ることができる。

また、たとえ後戻りがあったとしても小さく済ませることができる。

そうするためには、関係者は要求は不確実で変化することが前提であるということを共有するべきである。

また価値に結びつかない中間成果物ではなく、ビジネス観点で評価できるものを提供するべきである。

全員で共通の目標に向かう

不確実性の高いプロジェクトでは状況が刻々と変化するため、共通の目標がないまま進めると認識の齟齬などが発生してしまう。

よってビジネス側と開発側の関係者は全員、共通目標に向かって一緒に働くことべきで、そうすることによって一連のリリースおよびフィードバックのサイクルが円滑になる。

そのためには、常にあるべき姿を関係者全員で共有し、必要に応じて改善し続ける必要がある。

意欲のある人々を集め、信頼する

プロジェクトを成功させるためには開発チームに意欲のある前向きな人々を集め、関係者は彼らが働きやすい環境を整えることが求められる。

細かな作業指示は開発者の自律的な行動を阻害するので、関係者は開発チームを信頼して仕事を任せるべきである。

また開発者は自ら行動し、顧客やチームのために何ができるかを常に考える必要がある。

顧客、開発チーム、共に直接対話を重視する

情報を伝える最も効率的な方法は直接対話することである。

メールやメッセージだけでは伝わらない希望や不安はたくさんあり、これらを直接対話なしに伝えようとすると齟齬が誤解を生んでしまう。

関係者が全員同じ空間で対面で対話することで、お互いの本音を汲み取ることができ、齟齬が起きにくくなる。

よって、顧客も開発者もメールだけの伝達は対話よりも非効率であることを共通認識し、直接対話するように心がけるべきである。

動くソフトウェアこそが進捗を表す

進捗状況を正確に把握するためには、動くソフトウェアと確認することが最も信頼できるやり方である。

なお動くソフトウェアとは計画通り進んでいるかではなく、設計、実装、テスト、デザインの全てが完了済みでありいつでもリリース可能な状態の物を指す。

設計の完成度など、動くソフトウェア以外のもので測る進捗は、実際に動かしてみるまで問題に気づけないことがあるため、表面上の進捗状況しか把握できない。

進捗状況を常に正確に把握するためには、顧客も開発者も報告書などに時間をかけるのではなく、実物を触って進捗を測るようにするべきである。

一定のペースを維持する

アジャイル開発は持続可能な開発を促進し、無理のない一定の開発ペースを保つことはビジネスの成功につながる。

無理をした状態では創意工夫したり、改善をする欲求が湧いてこない。また無理をして一時的に生産性をあげたとしても、その後に無理が祟って生産が落ち、結果的にトータルパフォーマンスは低下してしまう。

生産性を最大限に引き出すためにも、開発チームと関係者は全員、持続可能なペースを保つことを大切するべきである。

より良い技術と設計、そして高い保守性を追求する

ソフトウェアは状況に応じて素早く変更できることが求められる。

また低い保守性は市場変化の対応に遅れをもたらし、ビジネスを成長させる大きな阻害要因となる。

より良い技術を追い求め、効果的にその技術を活用することで素早く、品質良く、変化に対応し続けることができる。

よって、開発者は常に最新の技術を学び、保守性を高めるために設計や可読性を意識し、また自動テストによって問題を早期発見するように心がけるべきである。

無駄を徹底的に探して無くす

顧客が求める価値が何かを全員で考え、その価値に直結しない作業や機能は無駄と断定して、その無駄を無くすためにたゆまぬ努力をすることこそがアジャイル開発における本質の活動である。

そのためには顧客に価値をもたらさない会議や報告は無くすべきである。

また、開発者は顧客からの要求を鵜呑みにせず、本当に価値があるのかを常に疑うべきである。

日々の作業の中から、全員が無駄を見つけ、無くすことは、最終的にコスト削減と生産性向上をもたらす。

良いものは良いチームから生まれる

最良のアーキテクチャ・要求・設計は、最良のチームから生み出される。

最良のチームとは自律方のチームのことであり、これは開発者一人一人が常に改善の意識をもち、お互いの能力を高めながら共通の目的や目標に対して継続的に取り組むチームことである。

このようなチームは開発者個々の能力以上の成果を発揮することが可能となり、その結果ベストな成果が生み出さられることになる。

よって、開発者チームは常に自律型のチームを目指すべきである。

定期的に振り返り、調整する

チームが成長し続けるためには、定期的に(長くても2〜3週間、オススメは毎週)振り返り、自分たちのやり方を調整し続けることが大切である。

また、この振り返りとは30分〜1時間が目安の振り返りであり、だらだら続けるのはやめるべきである。

このような短い時間で定期的に振り返ることによって、良いやり方はどんどん良くなり、もし失敗しても影響を最小限に留めることができる。

また、定期的な振り返りの場があることで、チームメンバーはプロジェクトとっては有用であるが言いにくいことを言える機会ができる。

まとめ

  1. 顧客との満足を最優先する。
  2. 要求の本質を見抜き、変更を前向きに捉える。
  3. 成果物を2−3週間という短い時間感覚で、リリースし続ける。
  4. 全員で共通の目標に向かう。
  5. 意欲のある人々を集め、信頼する。
  6. 顧客、開発チーム、共に直接対話を重視する。
  7. 動くソフトウェアこそが進捗を表す。
  8. 一定のペースを維持する。
  9. より良い技術を設計、そして高い保守性を追求する。
  10. 無駄を徹底的に探して無くす。
  11. 良いものは良いチームから生まれる。
  12. 定期的に振り返り、調整する。

上記は個人的に解釈して書き直したものです。

ちなみにオリジナルの原文は以下の通りです。

  1. 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。
  2. 要求の変更はたとえ開発の後期であっても歓迎します。変化を見方につけることによって、お客様の競争力を引き上げます。
  3. 動くソフトウェアを、2−3週間から2−3ヶ月というできるだけ短い時間感覚でリリースします。
  4. ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働かなければなりません。
  5. 意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与え仕事が無事終わるまで彼らを信頼します。
  6. 情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイスで話をすることです。
  7. 動くソフトウェアこそが進捗の最も重要な尺度です。
  8. アジャイル・プロセスは持続可能な開発を促進します。一定のペースを継続的に維持できるようにしなければなりません。
  9. 技術的卓越性と優れた設計に対する不断の注意が機敏さを高めます。
  10. シンプルさ(ムダなく作れる量を最大限にすること)が本質です。
  11. 最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます。
  12. チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整します。