スタンドアップ は、アジャイル開発の基本を構成するもののひとつですが、これには誤解がつきまとうことがよくあります。率直に言うと、スタンドアップだけではチームをアジャイルにすることはできないのです。また、スタンドアップはエゴを押し通す場ではないし、作業内容の正しさを主張する場でもありません。そして計画作りの場でもありません。それはスプリント計画の役割です。さらに言えば、ブロッカーの発生を伝える唯一の場でもないのです。もしブロッカーにより作業が進まないならば、助言を求めることをためらってはなりません!
本稿では、ブロッカーを効率的に管理する方法に加え、アトラシアンにおいて私たちが活用している様々なヒントとコツについてお話ししたいと思います。私たちはお客様のスタンドアップが (そしてアジャイル開発全体が) 素晴らしいものになることを望んでいるのです。
ところでスタンドアップとは何でしょうか?
(アメリカン) フットボールやラグビーのように、次のプレーに入る前にハドル (円陣) を行うスポーツが数多くあります。このハドルは戦略的なもので、チームメンバーに情報を行き渡らせ、結束を強め、試合全体への対応を最善のものにする役割があります。ソフトウェア開発チームにおけるスタンドアップはハドルのようなものです。これはデイリースクラムという名前の方が広く知られていて、チーム全体の状態や進捗状況を全員が理解して一体感を高めることを目的としています。
別の言い方をするとスタンドアップは、プロダクトオーナー、開発者、スクラムマスターなどチームのコアメンバーが参加する毎日のミーティングです。このミーティングの内容はチームによって異なりますが、アトラシアンでは次の三つの単純な質問でこのミーティングを構成しています :
- 昨日どのような作業をしたか?
- 今日どのような作業をする予定か?
- 障害となることは何か?
これらの質問によって進捗状況が明らかになり、ブロッカーの発生に関する注意を喚起することができます。さらに、各々のメンバーのチームへの貢献の成果として生ずる進捗の状況を全員が共有することでチームが強くなります。各々のメンバーの進捗状況と作業予定の共有を毎日奨励することによって、各々のメンバーはチームが全体として所属組織に貢献できているという充実感を持てるのです。
個人のレベルでは、何を話すかについて自ら考えてからスタンドアップに参加することが大切です。このことによってスタンドアップの活力と全員の参加意識が高く維持されます。アトラシアンでは各々のメンバーがプロジェクトの作業をこなしていくために、JIRA Agile ボードのクイックフィルター機能を活用しています。"only my issues" と "recently updated" という二つの強力なフィルターの併用がスタンドアップの準備に役立ちます。この二つのフィルターを共に使うことにより、自分にアサインされた課題が前日に更新された場合にそれを知ることができます。
プロのアドバイス : Only My Issues フィルターにおいては、JIRA Toolkit Add-on を用いて参加者フィールドを追加するというカスタマイズがよく行われています。これにより、自分にアサインされた課題だけではなく自分が関わった課題を知ることができます。このフィルターの JQL は次の通りです :
assignee = currentuser() or participants in (currentuser())
アトラシアンにおける スタンドアップ
スタンドアップに決まりきったやり方はありません。アトラシアンの各チームでは、各々のメンバーの参加意識を高めるために個人個人に合わせた工夫が行われています。どの二つをとっても全く同じミーティングはありません。
スタンドアップを有意義なものにするために何が必要かをさらに説明し、当社におけるその事例を紹介したいと思います。
- 全員にとって都合の良い時間を選ぶ ‐ 職場が一か所に集中しているチームの場合、アトラシアンではほとんどのスタンドアップは午前 9 時から 10 時の間に行われます。これは一日の仕事につながっていく時間であり、またそのために早起きする必要は生じません。地理的に離れた場所に分散しているチームの場合は、全員にとって最も都合のよい時間を選びます。例えば、JIRA Service Desk のチームはサンフランシスコとシドニーに分かれています。このチームのスタンドアップはサンフランシスコ時間の午後 3:30 に行われています。午後のスタンドアップがあまり一般的でないことは確かですが、シドニーという地球上の遠隔地にいる仲間との連絡を密にするためにはこれが最善の方法なのです。
- スタンドアップを効率的に実施する ‐ アトラシアンにおいては、各々のメンバーの集中力を保ちスタンドアップを効率的なものに維持するため、多くのチームはミーティング時間の長さについては形式にとらわれないようにしています。各々のメンバーの明晰さと集中力を保つために時間管理者を交代で決めておきましょう。スタンドアップの時間は長くても 15 分に抑えることが適当です。また、チームが小さい場合はさらに短くするべきです。
- キャッチボールをする ‐ JIRA チームでは、全員の参加意識を高めるためにチームメンバー間でビーチボールをトスし合います。すぐ横にいる人やそこにいない人にトスすることはできません。よそ見をしている余裕はないのです!もしあなたがこの方法を試したことがなかったら、これが全員の参加意識を高める強力な方法であることが分かるでしょう。
- スタンドアップもチームのふりかえりの対象とする ‐ スタンドアップは数多くあるアジャイルカルチャーの一部ですが、それはふりかえりにおいてスタンドアップの効率性に関する議論を行ってはならないという意味ではありません。アトラシアンにおいては、毎日スタンドアップミーティングを行っているチームもあれば、週三回のチームもあります。JIRA Agile のチームでは、ふりかえりにおいていつもスタンドアップの改善策を議論するようにしています。チームとしてスタンドアップの意義を見出せなかった場合はその理由をよく話し合う必要があります。そして何かを変えましょう!スタンドアップはアジャイルそのものと言えるのです。
分散チームに最適な HipChat とスタンドアップの組み合わせ
アトラシアンのチームメンバーは、12 箇所にある当社のオフィスでの勤務や在宅勤務の形で地球上のさまざまな場所で仕事をしています。そこで私たちは、地理的に離れているすべてのメンバーの結束を強めるために HipChat を活用しています。アトラシアンのすべてのチームは、すべてのメンバーが互いに情報を頻繁に伝え合うためのルームを持っているのです。HipChat には、ルーチン作業を自動化する外部サービス (ボット) を組み込む機能があります。私たちはすべてのメンバーの結束を強めるために、Stand-up ボットおよび Chatty の二つのボットを利用しています。
Stand-up ボット
Stand-up ボットは、スタンドアップに用いるためのステータス情報の検索とリポートを支援するもので、特に複数のタイムゾーンに分散するチームにとって有用です。Stand-up ボットの組み込みについては、http://botlab.hipch.at/ を開いてお客様の HipChat ルームに接続してください。スタンドアップの時間になったら次のコマンドをタイプするだけです :
1
|
/standup
|
すべてのメンバーは好きなときにリポートすることができ、チームメンバーの全体状況を理解するためにルームに対してクエリーを送ることも簡単です。単に
1
|
/standup
|
とタイプするだけでボットが各々のメンバーのスタンドアップリポートを作成します。
Chatty
もうひとつのボットである Chatty はチームのルームに対してスタンドアップの時間が来た旨の穏やかなリマインダーを送ります。Chatty の詳細は Bitbucket をご覧ください。
スタンドアップは、チーム全体に進捗状況のハイライトを伝え、すべてのメンバーが常にチーム全体の状況を理解するためのものです。チームが一か所に集中している場合でも地理的に分散している場合でも、スタンドアップによってチームの結束は強まり生産性は向上します。長期にわたってこれを継続するコツは、簡素で楽しいものとすることによって参加意識を高めることと、単なる日課としてだらだら繰り返すという悪弊を防止することです。
一緒に考えましょう!
皆様のご意見を歓迎します。有意義なスタンドアップにする方法について考えてみませんか?
*本ブログは Atlassian Blogs の翻訳です。本文中の日時などは投稿当時のものですのでご了承ください。
*原文 : 2015 年 3 月 4 日投稿 "Stand-up at Atlassian: how we do it"