アジャイルソフトウェア開発宣言と原則を再考する

アジャイルソフトウェア開発宣言

  • プロセスやツールよりも個人と対話を、
  • 包括的なドキュメントよりも動くソフトウェアを、
  • 契約交渉よりも顧客との協調を、
  • 計画に従うことよりも変化への対応を、

価値とする。すなわち、左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく。

これ本当に価値なのかという点で若干疑問がある。

△に価値があることを認めながらも○により価値を置く、としているときに、○が価値だろうか。 いや、○ over △となる□という価値(観)がある、なのではないかな。それを語った方がよりダイレクトな気がする。

で、考えてみたが、つきつめるとアジャイルの価値は「本質」ではないか。

と言ってしまうと、アジャイルの本質は本質です、と言っているかのようだ。目的はもちろん関係者のビジネスとか人生の充足でありまして、それを有意義に有効に行いたいという根源的なところは原本でも明記はされていないので引き続き略させてもらうとして、

  • 本質を外れたプロセスやツール、
  • 本質を忘れた生産物、
  • 本質を忘れた責任範囲論、
  • 本質を忘れたマネジメント、

そういうものが無駄を生みビジネスを失敗させ、関係を壊し尊厳を棄損するのをずっと体験してきた。もうそんなことはやめよう、という宣言なのではないかと。

  • 本質的な対話を
  • 本質的な成果を
  • 本質的な協働を
  • 本質的な行動を

本質を見つけ見失わず本質的な行いをするための、考え方ややり方、できることがあるだろう、と。なお、元本を要約して対話、成果、協働、行動ということばにしてみたけれども、それで全てでもない気はする。

さて、考え方のことを、原則と呼ぶ。

以下はアジャイル宣言の背後にある原則

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

これも原則じゃないものも混ざっているような気がする。これも再整理のために、ケント・ベック風に言い直してみる。何が本質かを問い、見出し、迫るには、以下のことを心がけるといい(ただし文脈依存)、というように読むやつ。

  • 優先順位
  • 小さな成果
  • 継続
  • 繰り返し
  • 変化
  • 人間性(これは価値かも)
  • 協働
  • 尊敬(これも価値かも)
  • 安全
  • 対話
  • 結果で評価する
  • 持続可能
  • 技術的卓越性
  • シンプル
  • 自己組織化
  • ふりかえり
  • 改善

加えて、アジャイル宣言の背後にある原則にはでてこないけど、これもあるじゃろ、と思うのは、

  • 仮説検証
  • 透明性
  • 品質を作り込む
  • 宣言的
  • テスト
  • 学習
  • 流れ
  • 習慣

やっぱりこれもまだまだあるような気がする。