CircleCI で私が所属するチームは、エンジニア 7 名、プロダクト マネージャー 1 名、デザイナー 1 名、エンジニアリング マネージャー 1 名で構成され、米国、セルビア、タイ、日本に分散しています。通常、米国はサンフランシスコ、チャンドラー、テンピ、ボルダー、ノックスビル、セルビアはノヴィサド、タイはバンコク、日本は藤沢と秋田がそれぞれの拠点です。先日、サンディエゴでのチーム イベントに全員が集合したので、「もし選べるなら、今のようにお互いのタイムゾーンが違う状態で働くのと、全員の勤務地がもっと近いの、どっちが良いだろう?」と改めて考えてみました。

私たちの答えは「今のままが良い」というものでした。タイムゾーンを超えたメンバー間のコミュニケーションには、タイム ラグがつきものです。しかしそれは、メンバー全員が平等に、働く場所や時間を選べる自由とフレキシビリティが保証されているということでもあります。CircleCI ではこの自由とフレキシビリティを大切にしています。なぜなら、私たち 1 人ひとりの生活が豊かになるだけでなく、より力強く、トラブルにも負けないチームを作ることができるからです。

このリモート チームが編成されたのは、わずか 5 か月前です。各メンバーが地理的に離れた場所にいるため、どうすればチームとして成果を挙げられるか早い段階から熟慮を重ねる中で、実にさまざまなことを学びました。

リモート チームが非リアルタイムで連携するためのヒント

この記事では、タイムゾーンをまたいで 1 つのチームとして協力するうえで役に立つベスト プラクティスを厳選して紹介します。過去の所属チームでの経験からアイデアを得たものが多いですが、現在のチーム メンバーの好みや優先事項を踏まえて新しく考案したものもあります。

オーバーコミュニケーション

チームの結成当初から、過剰と思えるほどの頻繁なコミュニケーション = オーバーコミュニケーションを心掛けようという方針をチーム内で明示的に打ち立てていて、結果実際に大きな効果がありました。なにしろ、一度も対面したことのないメンバーが世界のあちこちに散らばった状態でチームを組むわけです。オーバーコミュニケーションを意識することで、少なくとも情報共有の不足を回避できますし、どのくらいコミュニケーションを取る必要があるのかも把握できます。

実際にオーバーコミュニケーションを奨励すると、日々の小さな悩みが解消されます。たとえば、こんな場面を思い浮かべてください。

  • 「いまダイレクト メッセージで送ろうとしている情報が、同僚にとって重要な情報かどうかわからない。それでもメッセージを送るべきかな?」ぜひとも送りましょう
  • 「同僚のタイムゾーンだと今は日曜の午後だけど、メッセージを送っても大丈夫かな?」悩まず送ってかまいません。いつ返信するかは相手が決めることです。お互いに不在ステータスやサイレント モードを上手に利用すれば、タイミングを心配する必要はありません。
  • 「これからメールしようとしている内容を同僚はもう知っているかもしれない。メッセージを書くのはやめておいたほうが良い?」いいえ、ぜひ書いてください。後悔するよりも安全策をとるべきです。
  • 「ちょっと退席して赤ちゃんのおむつを替えたいけど、他のメンバーの迷惑になるかな?」メンバーに退席することを伝えましょう。詳細までは書かなくてもかまいません。
  • 「おむつの中身のカラー コードは Pantone 3995 みたいだな。この発見もチームに伝えるべき?」うーん、それはやめておきましょう。

ペアリングによる共同作業

当初からタイムゾーンの近いメンバーどうしで小さなサブチームに分かれてしまうことへの危惧があり、その防止策を検討していました。その 1 つが、タイムゾーンをまたぐ作業を積極的に行うことです。これを「ピンポン ペアリング」と呼んでいます。

ピンポン ペアリングとは、従来の「ペアプログラミング」の非同期バージョンです。2 人のプログラマーがドライバー (コードを書く人) とナビゲーター (バグ チェックをする人) に分かれて開発を行いますが、従来のペアプログラミングのようにドライバーが書いているコードにナビゲーターがリアルタイムでコメントしたり、ドライバーとナビゲーターの役割交替を頻繁に行うことはありません。役割交替は、各自のスケジュールに合わせて柔軟に行います。この方法なら、知識の共有というペアプログラミングの利点を活かしつつ、複数のメンバーが参加することができます。

ピンポン = 役割交替をスムーズに行うコツは、次のとおりです。

  • 進行中の作業のカードは 3 枚までに抑える (チーム内のエンジニア数を 2 で割って端数を切り捨て)。こうすることで、新しい作業を開始する前に、進行中のチケットを確認する習慣が身につきます。
  • 進行中の作業のプル リクエスト (PR) はなるべく早くポストする。 その時点でそのタスクに取り組んでいる担当者がいなければ、他のだれかが PR や関連するやり取りに目を通し、タスクを引き継げるようにします。
  • 進行中の作業をハンドオフする。 Slack を使用して非リアルタイムでハンドオフする方法もありますが、もし他のメンバーと勤務時間が重なっているなら、ビデオ通話でハンドオフしてもかまいません。一方のメンバーの終業時刻ともう一方のメンバーの始業時刻が重なるタイミングがお勧めです。

Slack の活用

CircleCI の他のチームと同じく、私たちのチームでも Slack は日々のコミュニケーションに欠かせない重要なツールです。Slack では、お互いの空き状況を報告したり、サポートを依頼したり、ビデオ通話のスケジュールを設定したりできます。さらに、全社公開のチーム チャンネルも 1 つ設けています。このチャンネルには、私たちの力を必要としている他のチームのメンバーも自由に参加することができます。

Slack 内で交わされるさまざまな会話をわかりやすく整理するために、チーム内で以下のようなルールを設けています。

  • 重要なメッセージには絵文字を付ける。 特に全員が Slack 上でオーバーコミュニケーションを心がけているチームでは、毎日の始まりにすべてのメッセージに目を通すのも一苦労です。休暇明けともなれば、大量の未読メッセージが溜まっています。その中から重要なものを効率的に拾い読みできるように、メッセージのタイプ別に決まった絵文字を付けることにしました。
    • メガホンまたはスピーカー: 全体へのお知らせ
    • エクスクラメーション マーク: 重要な注意事項
    • インフォメーション マーク: 重要性の低い情報
    • クエスチョン マーク: 質問
    • 大きな赤い右向き矢印 (カスタム): 休憩または退勤の報告

Slack_communication.png

  • スレッド内の重要な決定事項を見つけやすくする。 重要な決定事項が Slack スレッド (吹き出しアイコンで開始できます) の下のほうに埋もれてしまうと、見逃す危険性も高くなります。そこで私たちのチームでは、重要なメッセージは必ずメイン チャネルにも送るようにしています。
  • ビデオ通話の要約を作成する。 私たちはピンポン ペアリングの作業中に、よくビデオ通話で問題について話し合ったり、タスクのハンドオフを行ったりしています。この履歴を後から確認するのは難しいため、ビデオ通話が終わったら、話し合いの内容や決定事項を簡単にまとめるようにしています (冒頭に可愛いハグのカスタム絵文字を追加します)。こうすることで、ミーティングにリアルタイムで参加できなかったメンバーも、後で話し合いの内容を確認することができます。

ミーティング

メンバーどうしのタイムゾーンが離れているため、基本的に全員参加のミーティングは行いません。ただし、タイムゾーンが近いメンバーどうしで実施することはあります。その場合、次のような方法で情報を共有します。

  • 非リアルタイムのスタンドアップ ミーティングを行う。 メンバー全員とビデオ通話で話す時間はありませんが、毎日の情報共有は重要です。以前はこの目的で Slack メッセージ (+ スタンドアップの絵文字) を利用していましたが、現在はRangeというツールを試しています。
  • 共通のタイムゾーンを決める。 タイムゾーンが違うと「水曜日」と言ってもいつのことなのかはっきりしません。そこで、メンバーの所在地は関係なく、北米を共通の基準とすることに決めました。たとえば「木曜に振り返りミーティングを行いましょう」と言った場合、発言者が日本にいて、日本は既に金曜日を迎えていたとしても、それは北米の木曜日を指しています。
  • 振り返りミーティングの時間帯を交互にスケジュールする。 今週、米国時間のメンバーにとって都合の良い時間帯に行ったら、来週はアジア太平洋時間のメンバーにとって都合の良い時間帯に行うよう、スケジュールを設定します。全員が意見を出し、互いに耳を傾けられる環境を整えることで、チームのコラボレーションが促進されます。
  • ミーティングを録画し、議事録を作成する。 企画ミーティングと振り返りミーティングの両方を録画することで (振り返りミーティングでは議事録も作成します)、参加できなかったメンバーをフォローアップします。
  • 「ミッシング リンク」がある場合は、すり合わせのミーティングを実施する。 私たちのチームでは、エンジニアは北米とアジアにいますが、デザイナーはヨーロッパにいるため、毎週少なくとも 1 回はヨーロッパのデザイナーと参加できる他のメンバーで、すり合わせのビデオ通話を行っています。参加できなかったメンバーのために、ミーティングは録画し、議事録を残します。ここでもオーバーコミュニケーションは忘れません。

いかがでしたか? この記事では、私たちのチームで効果が見られたベスト プラクティスをご紹介しました。皆さんのチームではもっと別の方法が編み出されているかもしれません。チームの連携体制を強化するためにどのような取り組みを行っているのか、Twitter で @CircleCIJapan にメンションしてぜひお聞かせください。