モダンアジャイルの原則・実践について

Agile Japan 2017 小冊子である、「アジャイルの魂 2017」で執筆させてもらえることになりました。

本年は、ジョシュアさんが基調講演に来られるということで、モダンアジャイルのプラクティスについて書かせていただきました。

おかしなところがありましたら、教えていただけると嬉しいです。


はじめに

ここでは、私が勝手に図を訳して公開した、Industrial Logic社の「Modern Agile」の記事に書かれた十二の「モダンアジャイルの原則・実践」について見ていこうと思います。と、思案して何度か推敲したのですが、ジョシュアの言葉をストレートに皆に伝えるのが最も価値が高くなると考え、ブログ記事の部分的な勝手訳となりました。現在のモダンアジャイルは、公式サイト(http://modernagile.org/)で、洗練化されていますが、源流を覗く事で理解が深まれば幸いです。

この後の見出しの頭は、関係する次の原則(元は規律だった!)を表します(先頭が主要な原則)。

  • [最高]人々を最高に輝かせる
  • [安全]安全を必須条件にする
  • [高速]高速に実験&学習する
  • [継続]継続的に価値を届ける

 

[最高・安全]仕事の憲章化(Charter Your Work)

人々を最高に輝かせたいなら、その意味を定義する必要があります。アジャイル憲章は、明確なビジョン、ミッション、テスト可能な成果物を、プロダクトコミュニティが発見し、同じ立場で考えてもらうための軽量なプラクティスです。憲章の設置は、プロジェクトの最初に一度だけ行うものではありません:憲章の設置は継続的な試みです(アジャイル憲章は英語だと “ing”が付いています)。良い憲章はガードレールのようなものです。道を逸れるのを妨きます。 憲章の二人の専門家、エインズレイ・ニースとダイアナ・ラーセンは、著書「Liftoff:Launching Agile Teams&Projects(リンク先は第2版)」でこの重要なプラクティスについて述べています。

 

[高速・最高・安全]リーン・スタートアップの活用(Leverage Lean Startup)

大規模な組織、小規模なスタートアップ、またはその中間のソフトウェアを開発する場合でも、エリック・リースの古典的な「リーン・スタートアップ」の知識を活用するとよいでしょう。人々を最高に輝かせるために、エリックは、私たちの大部分が「不確実な状況下で活動してしまっている」ことを理解するのを助け、ユーザーが必要とするものを推測する事がいかに安全でないのかを明らかにしてくれます。 彼は、素早く簡素な実験や仮説の迅速な検証・無効化など、精緻なコードを作るための投資をしてしまう前に、何を作るべきなのかを発見するための、さまざまで有用な方法を提案してくれます。 もし、ユーザーが実際にソフトウェアを使用しているかどうか、利益を受けているかどうか、超すげーことになっているかどうかを、あなたが分かってないならDoneの定義を再定義する必要があります。 また、企業内でリーンをスケールするのに苦労しているなら、ジェズ・ハンブル、ジョアンヌ・モレスキー、バリー・オライリーの「リーンエンタープライズ――イノベーションを実現する創発的な組織づくり」を勉強するのがいいです。

 

[高速・最高]リーンUXの適用(Apply Lean UX)

リーン・スタートアップに密接に関係しているのがリーンUXです。リーンUXは、優れたユーザー体験を発見して作り出すための、迅速で低コストな分析主導のアプローチです。 私は、リーンUXコミュニティの代表者であるローラ・クラインの「機能の見せ掛け」テクニック(多くのリーンUX技術の一つ)を学びました。 リーンUXの詳細については、ジェフ・ゴーセルフとジョシュ・セイデンによる「Lean UX ―リーン思考によるユーザエクスペリエンス・デザイン」と、ローラ・クラインの「UX for Lean Startups: Faster, Smarter User Experience Research and Design」から学ぶことができます。

 

[高速・安全・継続]頻繁な協調と統合(Collaborate Integrate Frequently)

チーム内やチーム間でのコラボレーションと統合が貧弱だと、組織は危険にさらされます。これは、ソフトウェア開発における多くの問題の根本的な原因になっています。ソロワークは、知識サイロ(何かの仕組みを一人だけしか知らない)、より大きな欠陥、脆弱な問題の解決、より強い注意力の散漫と、より少ない規律(特に良いテストを書いたり、リファクタリングによる設計の改善に対する)を生み出す傾向があります。ペアリングとは、二人で一緒に仕事をし、ペアを定期的に交換することです。モブプログラミング(mobbing)は、三人以上で協力して、キーボード・マウスを「ドライブ」する人を定期的に交代する、開発に対するコミュニティアプローチです。ペアリングとモブプログラミングの両方が、学習のスピードを高め、価値のある結果を生み出す流れを加速し、重要なスキル・知識に対する危険な依存性を減らし、技術への容易な変更を可能にし、人々を最高に輝かせるものをもたらします。ディープソロの作業(深い単独作業)を可能にするチームもあります。彼らはコードレビューによる協調作業によって素早くマスターブランチに統合していきます。

 

[安全・高速]安全に失敗できる環境(Make it Safe to Fail)

あなたの会社に恐れの文化があるなら、どんなすばらしいプラクティスやプロセスもあなたを助けられません。最高の企業は、人々が実験、失敗、異議、そして彼ら自身が安全と感じる文化を育成します。デイブ・スノーデンは、小規模で安全な実験によって複雑なシステムに起きる大切な応答を得るのに役立つセーフフェイルプローブの利用を説きます。安全に失敗できる企業は、「学習する組織」です。 Etsy社は、その輝かしい例になります。最も最近入った新規社員の一人が、大切なCSSファイルを間違って削除してウェブサイトをダウンさせました。彼らは何をしたでしょうか? 彼らは、そのエンジニアに、重大な欠陥を発見した「三つ袖があるセーター賞」を与え、サイトをより柔軟性の高いデザインに修正しました。

 

[安全・継続]テストとリファクタリング(Test Refactor)

テストと設計はアジリティの本質です。モダンアジリストは、探索的テスト、自動テスト、(主に設計の活動であり、副次的にテストの活動でもある)テスト駆動開発や、いくつかの手動テストを実行します。Industrial Logic社でテストとリファクタリングの訓練・指導をしたモダンアジャイルコミュニティでの定量的な研究の一つでは、欠陥が八〇%以上減少しました。信頼できる高速で自動化されたソフトウェア動作チェックがあることは、プログラマが、コードの変更や欠陥の生成を恐れることが少なく高速に仕事ができるセイフティネットを持つことになります。リファクタリング(挙動を変えずに既存のコードの設計を改善する)は、設計が複雑になることを回避し、コードを簡単かつわかりやすく(したがって変更しやすく)する重要なプラクティスです。リファクタリングは「見直し」です。これは、ラテン語では再び見る(re-videre)を意味します。私たちはもっと学び、以前の作業の欠陥を発見し、コードの設計・読みやすさ・シンプルさを向上させるように努力することで見直しを行います。テストとリファクタリングは、共にチームのスピードに不可欠な存在であり、それゆえモダンアジャイルの重要な部分です。

 

[安全]人々への敬意と感謝(Respect Appreciate People)

安全の文化を確立するには、(役割、年齢、学歴、人種、性別によらない)心からの敬意と感謝が重要です。アンゼニア(Anzeneer)は、時間、お金、情報、評判、関係、健康を守り、人々を尊重します。コラボレーションアプリのSlackが、一ヶ月まるまるサービスにアクセスしなかったので、ある程度の金額を払い戻しましたというメールを送ってきた時、私は敬意と大事に思われていることを感じました。Alcoa社の前CEOであり、米国の財務長官であったポール・オニールは、組織が不断の卓越性を達成するためには、人々が何時でも誰にでも尊敬され感謝される文化を持たなければならないと述べました。Industrial Logic社では、DuePropsを使用して定期的に皆に感謝しています。

 

[安全・高速]非難しないふりかえりを指揮(Conduct Blameless Retrospectives)

セス・ゴーディンは、かつて「人々は失敗を恐れず、責任を恐れている」と言いました。ノーム・カースの二〇〇一年の古典的な本「Project Retrospectives: A Handbook for Team Reviews」に、「最初にふりかえりを試みたときに人々が最も露わにする恐れの1つは、儀式が非難と反論を撒き散らす否定的なグチのセッションになるというものです」とあります。ゆえに、ノルムは、ふりかえりの前に慣習的に読まれるかの有名な「ふりかえりのお約束」を定義しました:たとえどんなことに気付いたとしても、チーム全員が、その時点で知っていたことや彼(彼女)のスキル及び能力、利用可能なリソース、そしてその時の状況で最善を尽くしたのだと理解し、心の底から信じます。このお約束は、ふりかえりを学びに焦点を当てた安全な場になるように整えます。Etsy社のジョン・オルスポーは「Blameless Postmortems and a Just Culture」で、これについて書いています。エスター・ダービーとダイアナ・ラーセンは、「アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き」という優れた本を書いています。

 

[継続]フローに集中(Focus on Flow)

モダンアジャイルは、タイムボックス(例えば、スプリントやイテレーション)による作業の連続的な流れを好みます。カンバンは連続フローを可能にします。カンバンボードを使用して、チームは作業をボード上で見える化し、重要な作業をボードに設けられた列を移すことでプルし、仕掛品を制限し、サービスの分類(緊急または正常な作業など)を補助し、ボトルネックを見える化して取り除き、開発中の価値を人々に流します。タイムボックス内でどれくらいの作業をするかを予測しようとする時間を費やしたり、ストーリーポイントの正確な値を考慮したり、魅力的なバーンダウンやバーンアップチャートを公開するために見栄えを良くしようとする必要はありません。これは、合理化されたアジャイル計画です。デイヴィッド・アンダーソンは、彼の極めて重要な著書「カンバン: ソフトウェア開発の変革」でそれを美しく表現しています。

 

[継続・高速・安全]継続的なデプロイとリリース(Deploy Release Continuously)

ケント・ベックはかつて、ティモシー・フィッツによる「不可能な一日五十回をやっている」という衝撃的なビデオを私に示しました(ああ、不運なインターネットプロバイダーはティモシーの素晴らしいビデオを失いましたが、彼はそれについてのブログを書きました)。ティモシーは、IMVU(リーン・スタートアップの発祥の地)が、一日に何回もプロダクション環境へ安全にデプロイすることによって、初期アジリストの想像をはるかに上回る継続的インテグレーション(CI)の実践をしていることを説明しました。CIのダイアルは十一に調整されました。継続的デプロイは、早期な速い実験(A / Bテスト等)を実現し、ユーザーが最も必要とするものをできるだけ迅速かつ安全に提供することを可能にします。これは、「コンセプトをキャッシュにする」までのサイクルを劇的に減らすので、私が好きな、リーンに影響を受けたプラクティスの1つです。ティモシー・フィッツは Industrial Logic社と一緒にCD(継続的デリバリー)のeラーニングコースを作成し、現在、モダンアジャイル・プラクティスに関する本を書いています。ジェズ・ハンブルとデイビッド・ファーレイは、このプラクティスの深い専門家であり、「継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化」の著者です。

 

[継続・安全]プロダクトコミュニティを形成(Form Product Communities)

適切な人がいなければ、人々を最高に輝かせるソフトウェアを作成することはできません。適切な人々は、プロダクトコミュニティを作り上げます。 デイビッド・シュマルツの言葉によれば、プロダクトコミュニティは「プロダクトに影響を与えたり、プロダクトに影響を受ける可能性のある人々」です。デービッドは、このようなコミュニティは「常に」あなたが思っているよりも大きく、ほとんどのプロダクトが直面する主な問題は「自分自身のコミュニティ意識の欠如」であると考えています。プロダクトコミュニティは、フロントエンド、バックエンド、ミドルウェア、およびUXチームに分かれておらず、独自のバックログを持ちます。プロダクトコミュニティはフルスタックであり、原始的なソリューションを、人々を最高に輝かせ、組織の成功に役立つ洗練されたプロダクトへと進化させる準備ができています。プロダクトコミュニティを形成することは、誰が何をどのようにすることが重要な結果を達成するのに不可欠であるのか認識するのに役立ちます。プロダクトコミュニティは、「憲章」において頻繁に定義付けと洗練化が行われます。

 

[継続・高速・安全]ソリューションを進化(Evolve Solutions)

ソリューションをすばやく進化させるには、人材とチームを組織して、何を構築し、協調し、統合し、開発し、リリースするのか計画する必要があります。モダンアジャイルな「お店」は、フィードバックからすばやく学ぶため、ユーザーにプロダクトや機能をすばやく提供します。「進化の設計」はこのような学習の鍵であり、ユーザーに価値をすばやく伝える最良の方法の一つです。また、プロダクトコミュニティ内やプロダクトコミュニティ間での協調と統合のリスクを明らかにし、修正するための非常に便利な方法です。

 

参考文献

Joshua Kerievsky, “Modern Agile”, https://www.industriallogic.com/blog/modern-agile/

今給黎 隆, 「モダンアジャイル」, http://www.slideshare.net/imagire/ss-64457130