アジャイルって、その1。

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

あちこちで「アジャイル」って目にするようになって、ハケンでも「今回のお仕事はアジャイル開発です」なんてのがあって。ちょいと検索したら、「アジャイルソフトウェア開発宣言」が出てきて。
「この宣言は、この注意書きも含めた形で全文を含めることを条件に自由にコピーしてよい」ってなってたので、あれこれ考えてみます。

宣言。

URLは以下ですよ。
http://agilemanifesto.org/iso/ja/
英語版と並べてみましょう。
Manifesto for Agile Software Development
アジャイルソフトウェア開発宣言
・・宣言はマニフェストなんですね。流行語だったねえ。民主党と共に消えていきました。そういえばアジェンダを連発していたみんなの党。わりと好きだったのになあ。
We are uncovering better ways of developing software by doing it and helping others do it.Through this work we have come to value:
私たちは、ソフトウェア開発の実践あるいは実践を手助けをする活動を通じて、よりよい開発方法を見つけだそうとしている。この活動を通して、私たちは以下の価値に至った。
・・アンカバー、つまりカバーを剥がすとそこに、こんなん出ました。
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。
・・Individualsを個人、Customerを顧客としてますが、ここでの個人って、顧客と同等なんでしょうか。それとも、顧客の個性とか独自性、っていう意味なんでしょうか。
包括的なドキュメントは、包括「的」なばかりでなく内容を適切に記述できているならば、ソフトウェアと同じくらい価値があると思います。
契約交渉だって大事だし、場当たり的に変更するより計画通り進んだ方がいいに決まっている。

読んでいるうちに見えてきた事。

Principles behind the Agile Manifesto
アジャイル宣言の背後にある原則
We follow these principles:
私たちは以下の原則に従う:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。
Welcome changing requirements, even late in development. Agile processes harness change forthe customer's competitive advantage.
要求の変更はたとえ開発の後期であっても歓迎します。変化を味方につけることによって、お客様の競争力を引き上げます。
・・価値あるソフトウェア。それは、さくさくエラーなく動く、軽くて安いソフトウエア。アップグレードも簡単で、セキュリティもばっちり。
そんなもんあるかよ、なんですけど、ソフトハウスのほとんどはそういうシステムを目指して日々頑張っている、んだと思いたい。
けどね。問題はほとんどの場合、顧客側にあるんですよ。
顧客は、お客様は、満足なんてしません。だって、どれが完成品か分からないんだもん。もとより、どんなシステム作って欲しいのか、自分達が分かってないんだもん。
だから、いくらでも変更を要求してきますよ。完成するまで報酬は支払わないつもりなんだから、永遠に開発が続きます。だって別にもともとそんなシステム必要ないんだもん。人海戦術でコピペして、印刷したあとで間違いに気づいたら鉛筆で直せばいいんだもん。
・・changingは変更、changeは変化。
お客様は、変更はさせたいけど変化は望みません。だって変わりたくないもん。自分達は完璧だもん。変わるんだったら業者の側が変えればいいじゃん。それが仕事でしょ。納期までに契約通りのものを持ってくるのが仕事でしょ。

宣言。

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
動くソフトウェアを、2-3週間から2-3ヶ月というできるだけ短い時間間隔でリリースします。
・・これね、どこからどこまでが期間なのかな。まさか計画立案から納品までが最短で2-3週間てことはないわよね。日本の会社は、特に古い会社は決済がおりるだけでも下手すると一ヵ月掛かるんだから、決済が降りてからちゃんと動くようなソフト作るのに2-3週間て、どう考えても無理だと思うんだけど。
Business people and developers must work together daily throughout the project.
ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働かなければなりません。
・・Business peopleは顧客側で、developersはソフトハウス側ね。
日々一緒に働く。それは顧客側に常駐が第一条件、ていう意味なのかな。
開発用の端末から細々した事務用品まで、顧客が持ってくれるってことなのかな。給湯室のコーヒーも飲み放題、ってことなのかな。
Build projects around motivated individuals.Give them the environment and support they need,and trust them to get the job done.
意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与え仕事が無事終わるまで彼らを信頼します。
・・畦道だってできることなら意欲に満ちた人々と仕事したいです。でも、いないよそんな人。環境を与えるのはこの場合顧客なのだろうね。そしたら支援は誰がするんだろう。チームに支援できる能力のある人がリーダーになるべきなんだろうけど、そんな人、いないよ。え、外注するの?
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイスで話をすることです。
・・畦道だってちゃんと話したいです。ちゃんと聞いて欲しいです。でも、話好きでやたら話が長い人はいるけど、話を聞ける人なんてほとんどいないです。

突っ込み入れるのもしんどくなってきたのでいっぺんに引用。

Working software is the primary measure of progress.
動くソフトウェアこそが進捗の最も重要な尺度です。
・・当然だけど、動く「だけ」じゃだめよね。
Agile processes promote sustainable development.The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
アジャイル・プロセスは持続可能な開発を促進します。一定のペースを継続的に維持できるようにしなければなりません。
・・The sponsors, developers, and users。どこまでが顧客でどこまでが開発者なのか。スポンサーはお金出してくれる人だから顧客かな。デベロッパーが開発者だとしたら、ユーザーは顧客なのね。それとも、メンテナンスし続けるからユーザーも開発者に含まれるのかね。
Continuous attention to technical excellence and good design enhances agility.
技術的卓越性と優れた設計に対する不断の注意が機敏さを高めます。
・・注意するのは誰ですか。継続して注意する、つまりずーっと新しい機能を追加するために改修し続けるってことですか。いつ入力するですか。
Simplicity--the art of maximizing the amount of work not done--is essential.
シンプルさ(ムダなく作れる量を最大限にすること)が本質です。
・・work not doneって、「ムダなく」なのかな。あ、中途半端にならないように、ってことかな。
The best architectures, requirements, and designs emerge from self-organizing teams.
最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます。
・・selfの主体は開発者ですよね。
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整します。
・・the teamは顧客と開発者両方、ってことですよね。定期的って、そんなしょっちゅう振り返ってて、いつシステムは実務で利用できるようになるんでしょうか。