Think globally, code locally: the secret to remote teams

分散チームやリモートオフィスがなくなることはありません。
しかし、アジャイル文化の一部としてうまく機能することは可能でしょうか?私たちは可能と考えます。

Dan Radigan Dan Radigan

Agile development was originally imagined for clustered teams, or teams physically located together in the same office. In keeping with the idea that "the most efficient and effective method of conveying information to and within a development team is face-to-face conversation", early agile teams were meant to work together in close proximity.

しかし現在、ほとんどの企業が分散チームを展開しています。これは単なる流行ではなく、合理的なトレンドです。分散チームは 24 時間プロジェクトに取り組むことができ、競争の少ない市場において優れた人材を確保できます (望まれない再配置が不要なため、人材の維持も容易です)。 ただし、分散チームの利点の裏には欠点もあります。 多くの分散チームにとって、アジャイルプラクティスである対面でのやりとりは困難です。

分散ソフトウェアチームには他にも次のような課題が生じます。

  • タイムゾーン間での調整
  • 全員が同じオフィスにいるわけではない場合の人間関係の構築
  • 異なる開発文化間での協力
  • 双方のチームが同時にオンラインであるときの数時間程度のミーティングや非公式の話し合いのスケジュール設定

これらは現実の問題ですが、解決不可能というわけではありません。ローカルオフィスとリモートオフィスの距離を埋めるのに役立ついくつかの方法と、他の問題を軽減するためのアイデアを見ていきましょう。

グローバルなチームを構築する方法

優れたソフトウェアアーキテクチャはモジュール設計です。チームも同様に構築しましょう。すべてのオフィスが自給自足でテクノロジーを開発できる状態が理想的です。タイムゾーンの異なるチームとの共同作業が最小限で済み、一般的に自律性を確保できるからです。 プロジェクトでさまざまな場所のチームが活動する必要がある場合は、それぞれのインテグレーションポイントや API に重点的に取り組むことができます。

Code reviews also play an important role. Since people are online at different times, distributing knowledge of the code between offices makes support and maintenance much easier. If a production issue emerges when the team is not online, another office can easily step in to support and resolve the issue, thanks to the know-how they gained from cross-team or cross-location code reviews.

人間関係の構築

It's important in any program, especially agile programs, to have solid rapport across the team. Personal connection builds trust, minimizes missed expectations, eases self-organization, and boosts morale. Within your office, take time getting to know everyone on your team. And, as much as possible, do the same with the people you work with in remote offices. Personal connections are important. The stronger they become, the greater the chance of seeing these colleagues as any other, rather than distant coworkers from unfamiliar places without good relationships.

Pro Tip:

At Atlassian, each new employee posts a "intro blog" on our internal Confluence instance, Atlassian's content collaboration tool. The blog introduces the new hire professionally as well as personally (hobbies, interests, family, etc.) which really helps bridge the gap between offices. The more we know each other as people, the stronger we are working together as teams. 

直接顔を見て話すことに勝るものはありません。各オフィスのチームメンバーが定期的に顔を合わせれば、好ましい効果が得られます。これには、ビデオ会議やリモートオフィスへの訪問も含まれます。

ビデオ会議は特に分散アジャイルチーム間の溝を埋めるのに大いに役立ちます。ただし、ビデオ会議を行っているチームでは、特定の制限事項に留意が必要です。

  • ビデオ会議では短時間のコミュニケーションしかとれません。同じオフィスにいれば、お互いの課題、成功、機会がしっかりと見えます。
  • オフィス間のネットワークの問題のため、ビデオやオーディオが不安定、不鮮明、理解しにくいことがあります。
  • 今もなお、ビデオ会議はスケジュールを決めて行うという考え方が一般的です。 突発的な日常会話にビデオチャットを使用する文化を作り出すには時間がかかります。

ビデオ会議に関する問題を軽減するには、チームメンバーが毎週 1 対 1 のチャットセッションを行うとよいでしょう。気軽な会話を通じて、知識の共有を促進します。 チームはこの機会を活かして人間関係を構築し、協力して仕事に取り組むことができます。 

コミュニケーションにおいては、口調や声、態度が大きな役割を果たすことに注意しましょう。直接顔を合せることで、別の場所にいる仕事仲間がどのような人物かをより正確に理解し、その後のビデオ会議の効果が高まります。

Whether it's a house or a product, you need to define the vision and outline the strategic themes. Think of themes as organization-wide focus areas. What do you want to focus on over the next quarter, 6-months, year? Where do you want to spend time and resources? Performance, user experience, security, new competitive features (hot tub anyone?), or a combination of all these?

How we do it:

Secondments are temporary assignments in a new job role or location, ranging anywhere from a few weeks to a year. They're not only an effective way to build rapport and spread culture across the team, but it is also a great way for employees to experience a different culture. 

団結した開発文化の構築

チームがさまざまな場所に分散して活動し、共通の開発文化を共有するには、4 つのシンプルな方法があります。

  • すべての場所に意思決定を過剰なほど伝える
  • 開発環境の設定における摩擦を最小限に抑える
  • 「完了」がどのような状態を意味するかを明確に定義する
  • 効果的なバグレポートを作成するためのガイドラインを策定する

では、順番に解説していきましょう。

第 1 に、共同オフィスから分散文化に移行すると、コミュニケーションが非常に困難になります。まず、意思決定が行われた場合はそのことを伝えなければならないということをチームに理解させるのが一苦労です。簡単なようでいて、実は忘れがちなことです。重要な決定が、廊下での会話やローカルチームの非公式のミーティング、または個人によって行われることもよくあります。さらに、小さな決定を些細なこととして片付けがちです。 

双方のオフィスが軌道に乗るまで、事細かに伝えるようにします。

意思決定が行われた場合は、それぞれのオフィスの全員が決定事項 (およびその理由) を理解する必要があります。電子メールは使用しないでください。重要な情報が簡単に失われます。Wiki のようなコンテンツ管理システムを使用して、チームメンバーが簡単にチーム全体の最新情報を見ることができるように (また、電子メールやグループチャットツールを通じて更新通知を受け取れるように) します。情報が古かったため活動が遅れ、問題が発生し、問い合わせをする事態に陥ると、情報を積極的に共有するよりも長い時間がかかります。

第 2 に、チーム全体で一貫した開発環境を使用することで、共同作業や課題管理がしやすくなります。時間をかけて簡単な「スタートアップガイド」を作成し、設定をできるだけ自動化することで、初日の摩擦を和らげます。

Third, when working between offices, clear standards around the definition of done makes it easier to manage expectations and build rapport across teams. A firm definition of done eliminates ambiguity in the work. For instance, when shipping a release that involves multiple teams, make it clear what it means to be "complete": code written, pull request created, code reviewed, tested, and merged into the appropriate branch.

第 4 に、分散型開発では、問題が発生した時点で全員がオンラインであることはありません。バグレポートやトラブルシューティング方法のガイドラインを明確にすることで、チームの誰もが課題を簡単に管理できるようになります。コードレビューと十分な自動化テストでも、コードベースに関する知識を共有し、影響を受けるチームが修正を行って、変更によって予期しない副次的影響が生じないことを確認します。したがって、チームが障害となることはありません。 

ゴールデンアワーを最大化

写真家であれば誰でも、「ゴールデンアワー」を知っています。美しい風景写真を撮るのに最もよい、日の出や日没の直前直後の時間帯のことです。分散ソフトウェアチームにとってのゴールデンアワーは、ローカルチームとリモートチームの両方が同時にそれぞれのオフィスで在席しているときを指します。すべてのチームがオフィスにいる時間はスタンドアップに最適です。

For teams that share work between time zones, stand-up is a great time to pass the baton so the team just coming online can pick up where the other team left off. And holding stand-up via video conference makes it easy to ask questions and get up to speed so everyone is off and running as soon as the meeting is done.

ときには、オフィスが非常に離れていて、一方のチームにとってミーティングが非常に苦痛になることがあります (午前 5 時にもう一つのチームとのスタンドアップを行うのは遠慮したいものです)。ミーティング時刻を交代で設定することで負担を共有し、リモートチームに無理を強いてやる気を低下させることのないようにしましょう。スタンドアップでは、チーム全体の意欲をよく観察します。過度の緊張がある場合や、あまり成果が挙がっていない場合、チームメンバーの意欲が低下し始め、意見を聞いたり共有したりといった行動が止まります。スタンドアップは絶対に毎日のミーティングでなければならないわけではありません。リモートチームとのミーティングを週に数回行い、残りの日にローカルスタンドアップを行ってもかまいません。同様に、スタンドアップを朝行わなければならないというわけでもありません。参加者全員にとって最も都合のよい時間帯に行うのが最適です。 

すべてのチームが分散

In a distributed organization, the reality is that every team is remote. All teams need to adapt and learn how to share work between offices, communicate effectively, and grow a consistent culture across geographies. The most effective teams don't just make the remote office conform to the headquarter's culture because they understand that every office can learn something from the others. They seek to find and share successful practices across all locations. They also embrace "we" rather than an "us vs. them" culture.

同じオフィスにいるチームでも、ときどき分散状態になることがあります。出張のためオフィスを離れたり、仕事とプライベートのバランスを考えて自宅勤務することもあります。構造と透明性の両方を尊重するチームでは、効率的な拡張が可能です。プロジェクトがオフィスを超えて広がれば、仕事に適した文化が自然と醸成されます。