はじめに
最近お仕事で、アジャイル開発を推進したり、アジャイル開発する人たちをサポートしたりしています。その結果、「アジャイルってなんだったっけ」と考える時間が増えました。
世の中、「アジャイルとは」と書かれた記事はいっぱいあります。かなりの市民権です。アジャイル開発から始まり、アジャイル型組織って言葉も出てきて、今やビジネスに必要不可欠なものとして扱われることもあります。どんどん「アジャイル」が複雑で難しいものになっている気がします。飾りになっていたり、単なるプラクティスの集合になっていたりします。
「アジャイルってなんだったっけ」となったときに、立ち返るものを。シンプルで原点思考で。この記事は、そんなメモです✍。
アジャイルマニフェスト(アジャイルソフトウェア開発宣言)
原点。
私たちは、ソフトウェア開発の実践あるいは実践を手助けをする活動を通じて、よりよい開発方法を見つけだそうとしている。この活動を通して、私たちは以下の価値に至った。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、価値とする。すなわち、左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく。
この「右記」がアジャイル開発の価値基準ですね。「左記」は当時主流だったウォーターフォール開発と対比させるための言葉でしょう。 初めてこれを見たときは衝撃でした。「価値とはなにか。哲学なのか。」この感覚は多分それほど間違っていないし、今でもそんな感覚でいます。
「個人・対話」「動くソフトウェア」「協調」「変化への対応」。大事。 ウォーターフォール開発でなくても、企業の文化的に「左記」が重視されたプロセスになっていたりすることもあるので、侵食されないように立ち返りたいドキュメントです。
12の原則(アジャイル宣言の背後にある原則)
原点パート2。
英語ですが、Agile Allianceのサイトの方が見やすいですね。
12 Principles Behind the Agile Manifesto | Agile Alliance
- 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。
- 要求の変更はたとえ開発の後期であっても歓迎します。変化を味方につけることによって、お客様の競争力を引き上げます。
- 動くソフトウェアを、2-3週間から2-3ヶ月というできるだけ短い時間間隔でリリースします。
- ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働かなければなりません。
- 意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与え仕事が無事終わるまで彼らを信頼します。
- 情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイスで話をすることです。
- 動くソフトウェアこそが進捗の最も重要な尺度です。
- アジャイル・プロセスは持続可能な開発を促進します。一定のペースを継続的に維持できるようにしなければなりません。
- 技術的卓越性と優れた設計に対する不断の注意が機敏さを高めます。
- シンプルさ(ムダなく作れる量を最大限にすること)が本質です。
- 最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます。
- チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整します。
原則の方がより具体的な行動を示しています。20年も立っているのに、まだまだ意識しないとできていないこともありますよね。「一緒に働く」とか「意欲に満ちた人々を集める」とか「シンプルさ」とか、いつみてもあぁそうだなぁとなります。
Agile Alliance
Agile Allianceのウェブページは、今のアジャイルの捉え方がよくまとまっています。
What is Agile? | Agile 101 | Agile Alliance
Agile is the ability to create and respond to change.
Agile is a Mindset
Agile software development is an umbrella term for a set of frameworks and practices based on the values and principles expressed in the Manifesto for Agile Software Development and the 12 Principles behind it. When you approach software development in a particular manner, it’s generally good to live by these values and principles and use them to help figure out the right things to do given your particular context.
「アジャイル」は、変化を作り出し、変化に対応する能力。「アジャイル」は、マインドセット。 「アジャイル開発」は、アジャイルマニフェストの価値基準と原則を土台にしたフレームワークやプラクティスを包括した言葉。
一部を抜粋しただけですが、納得感があります。特に「Agile is a Mindset」が好きです。 この他にも、特に「アジャイル開発」に関しては詳しく書かれているので、DeepLさんにもお世話になりつつ読み返したいです。
アジャイルサムライ
アジャイルサムライ――達人開発者への道
JonathanRasmusson(著), 西村直人(著), 角谷信太郎(著), 近藤修平(翻訳), 角掛拓未(翻訳), 西村 直人(読み手), 角谷 信太郎(読み手)
オーム社
やっぱりここに立ち戻りますね。最初にアジャイル開発を始めるとき先輩に勧められて読んだ本です。今でも結局これが一番納得感を得られる本です。マインドセットから行動まで、12の原則と紐付けながら紹介されています。 インセプションデッキが紹介されているのも素晴らしいです。アジャイルに関係なく、プロダクト・プロジェクトのスタートにはインセプションデッキが欠かせないです。
エクストリームプログラミング
エクストリームプログラミング
KentBeck(著), CynthiaAndres(著), 角征典(翻訳)
オーム社
アジャイルマニフェストにはXPに関わっていた人も多いからか、アジャイルにはXPが色濃いですね。 XPは少し技術プラクティスの印象が強かったのですが、この本はその印象をガラッと変えてくれました。人とコミュニケーションとコラボレーションが重視されている。運転のメタファーもとてもわかりやすい。
Clean Agile
Clean Agile 基本に立ち戻れ (アスキードワンゴ)
Robert C.Martin(著), 角 征典(著), 角谷 信太郎(著)
ドワンゴ
この本はとても好きな文章があるんですよね。
アジャイルとは、小さなことをしている小さなプログラミングチームの小さな問題を扱う小さなアイデアである。
アジャイルとは、大きなことをしている大きなプログラミングチームの大きな問題を扱う大きなアイデアではない。
「大きなことは大きなチームでするんじゃないの?」そんなことはない!
大きなことは大きなチームなんかじゃできない。小さなことをする小さなチームがいくつも集まり、コラボレーションしながら大きなことを成し遂げるのだ。
ハッとさせられます。
おわりに
またアジャイルってなんだったっけとなったら読み返す。このリストもふりかえよう。
アジャイルってなんだったっけ。 今は、「答えが見えない中ででも、チームでさらなる価値を届けるために、考えることと行動すること」って感じかなぁ。