日本のエンタープライズ企業がグローバル開発をはじめた半年間の話

この記事は [**セゾン情報システムズ Advent Calendar 2020**](https://qiita.com/advent-calendar/2020/sisco) 17日目の記事です。

# はじめに
私が所属しているセゾン情報システムズは、HULFTやDataSpiderなどのデータ連携を中心とした製品、サービスの製造、販売、保守を行っている日本の会社です。

2016年にソフトウェアの中心のUSに拠点を設立し、北米ビジネスをスタートしました。USビジネスが伸長し、2020/4にUSのProduct Market Fit(PMF)を目的とした独立した開発チームを作ることになりました。

チームの運営は、今後のグローバルでの開発の拡大を見据え、USで標準的な開発で行うことを方針としました。

この記事では、グローバル開発チームが立ち上がった半年を書いてみたいと思います。

# メンバー集め
USで標準的な開発を行うにあたり、現地メンバーのハイアリングを始めました。2020/4から現地で募集をかけ、時期的に人の流動が大きくなった影響もあってか、2020/5から数名のメンバーがジョインすることになりました。チームは、USに赴任したメンバー数名、現地メンバー数名、コスタリカメンバー数名、日本メンバー数名の合計10名ほどのチームとなりました。

# チーム運営
Project Managerは現地メンバーで、2週間のスプリントで開発を行っています。スプリントの最後のレビューでチームの成果発表デモを行います。

タスクはチケット化され、進捗は毎週US時間水曜日夕方、日本時間木曜日の朝、進捗会議がオンラインで開かれ共有されています。進捗会議では、Project Managerから担当者にチケットの状況をヒアリングされます。担当者は、結果をデモったり、ソースを見せたりして状況を共有します。

このデモはとても重要で、スプリントレビューに向けたデモは、何ができればスプリントが成功となるのか、視覚的に明確にわかるため、チーム全員がデモ成功に向け集中します。今でも思い出すスプリントがあります。チームが難易度の高いEpicに取り組んだとき、2週間スプリントの2週間目のはじめもあっちが動かず、こっちが動かずでデモが動く気配はありませんでした。しかしチームは諦めず課題を修正し続けました。デモ当日、デモは成功しました。するとチームからは「うぉー」と歓喜の声があがりました。デモを成功させる、一点に思いが集まった瞬間でした。

また進捗会議でのデモでは、自分の成果をProject Manager、チームに見せる見せ場でもあります。進捗報告までに見せられるものを動かす！緊張感が芽生え良いリズムになります。UX視点での改善やソースコードへのフィードバックもその場で得られます。デモったとき「Wow!」とか「Great!」とか聞こえたときなんて最高の気分になります！

# 情報共有・コミュニケーション
文字ベースでFlowの情報はslack、Stockの情報はConfluenceで情報共有を行っています。オンラインミーティングはzoomで行っています。働く場所が異なるメンバーが多いので、様々な相談事はslackのpublicチャネルで行われます。情報共有・コミュケーションは日本語を理解できないメンバーが多数ですので、すべて英語で行われています。時差の壁もあり、コミュニケーションは文字ベースが多くはなりますが、チームはオンライン、口頭でのやりとりを重視しています。

情報共有・コミュニケーションにおいて、チームメンバーが日、米、コスタリカに分かれていることもあり、大きな壁になった、なっているのは英語と時差です。

# 英語の壁
日本メンバーで英語に課題を感じるメンバーは、英会話スクールに会社負担で行っています。開発開始から半年も経つとメンバーの英語力も向上し、使用する単語、フレーズもこなれてきて、チームが開発をするにあたり英語が大きな壁にはならなくなってきました。とは言え、口頭でのディスカッションで内容が難しくなると日英ができるメンバーが通訳することもあります。

# 時差の壁
英語の壁よりも大きな壁が時差の壁です。ここ半年間はUSの夏時間(PDT)で、時差は16時間あります。日本時間朝8時はPST午後4時です。コスタリカ時間は午後5時です。自ずとオンラインで会話できるゴールデンタイム(と私たちは呼んでいます)が決まり、日本時間8時から10時まではUS、コスタリカメンバーと自由に会話できる重要な時間になっています。朝起きてSlackをみると「Please ping me when you are ready at work.」みたいなメッセージが届いています。会社も在宅OKなので、日本メンバーは在宅で8時から仕事をしています。ペアプロもゴールデンタイムで行うことが多いです。もし時間が足りなさそうな場合、前後の一時間を使うことがあります。私の会社では在宅OKですが、時差の壁を乗り越えるためには在宅はキーになると思います。

# ドキュメンテーション
技術的なことを共有しようとする際にはドキュメンテーションは重要になります。一方でドキュメトの粒度は開発生産性に大きな影響を及ぼします。今チームは大きめの機能(アーキテクティングが必要なレベルの機能)は以下の内容をドキュメンテーションしています。

* 目的
* 背景
* アーキテクチャ
* コールシーケンス
* 使用例

ドキュメントはどんどん作られているので、ここ四半期経った後、すべて一度Obsoleteフォルダに捨て、必要なドキュメントだけ新しく作ったカテゴリに沿ったフォルダに移動することで整理を行いました。

# オンボーディング
開発開始当初のオンボーディングの時期は、主にガイドライン系(コーディング規約など)と製品資料(製品自体と製品アーキテクチャなどの説明)を整備しました。資料を作って共有し、オンラインでペアプロ的に資料やソースコードを確認しながら互いに理解を深めていきました。

私が意外に思ったことは、私たちのチームでは、入社時点からチケットが割り当てられていたことです。私の感覚だと入社時点は勉強的な時間が取られることが多いと思っていたのですが、入社当日からチケットが割り当てられ、そのチケットに沿って必要な勉強時間が割り当てられていました。私は新しいメンバーに教えることが多かったのですが、ざっくり全体を教えるよりも、チケットが割り当てられていることもあり、何を得られればこの教育が完了するのかが明確になっていたので教えやすかったです。

# 半年間の気づき

* Role&Responsibilityが明確！
チームでは、この分野はこの人が決めることがはっきりしています。例えばアーキテクチャはチーフアーキテクトが決めるなどです。決める役割を持っている人は、提案書を作り、チームにプレゼンし、チームから意見を求めています。意見を求める場では、フラットにディスカッションをしています。忖度のようなことはゼロではありませんが、ほとんど見られません。チームで相談し、合議的にチームで決めるというよりも、チームで相談し、役割を持った人がびしっと決めています。また決める役割の人はチームからの質問に論理的に回答し、チームがタスクを完遂することをサポートしています。

* アピール重要！
USメンバーは自分の成果をチームに見せる習慣が付いています。私も毎週自分の成果をチームにデモしていますが、雰囲気として感じるのが、成果をチームに見せないと、チームから成果がなかったかのように思わそうということです。チームに自分自身がプロとしてみてもらうためには、自分の成果をチームに見せ続けることが必須なんだろうなと感じています。

* 議論強い！
USメンバーは議論になれていて、自分の意見をしっかり表現してきます。母国語でも難しいことですが、白熱した議論の中で自分の意見を外国語で相手に理解してもらうことはとても苦労しています。ただ一つ言えることは、ひるまず議論のポイントを正確に整理し、伝わるまで伝え続けることかなと思っています。

* 日本は祝日が多い国！
意外かも知れませんが、日本はUSと比較し祝日が多いです。進捗会議などで、来週日本は祝日だと共有すると、USメンバーから「また祝日？」と笑いながら冷やかされます。

# さいごに
私たちが直面している継続中の大きな課題は以下の2つです。

* スピード
* コミュニケーションプロトコル

### スピード
USと日本の一番大きく一番重要なGapを一つあげろと言われれば「スピード」と答えます。USはソフトウェアの中心だけあって、競争がすさまじいです。すぐに決めて動き出さないと生き残れない感覚がビシビシ伝わってきます。一方で日本の決め方、進め方の良さも感じています。これからどのようにUS、日本の良さを最大限活かしつつGapを解消していくのかを探っていかなければならないと思っています。
### コミュニケーションプロトコル
今でもよくある課題で、文字で表現するのが難しいのですが、ディスカッションをする際のプロトコルが異なる、脳の理解の仕方が異なる点です。例えばこのようなシーンです。あるアーキテクチャについてのディスカッションをする際に、

1. 資料が事前に配られる
2. ディスカッション当日、自分の理解、意見をアウトプットし、
3. 自分の理解、意見とのギャップを質問する

という流れがUSメンバーには多いのですが、日本メンバーはよく1からいきなり3に移行し、質問を受けた人がなぜその質問をされたのかがわからなくなっているシーンがあります。このような課題ができるだけでないように、まず2の自分の理解や意見を最初に述べることを心掛けています。

またこのようなシーンも課題で残っています。上記と同じようにアーキテクチャのディスカッションをする際に、

1. USメンバーはポイントを押さえたアウトプットを素早く出す。でも粒度は荒いため完了させるまでにはさらに磨く必要がある
2. 日本メンバーはさまざまなことが考慮されたアプトプットを出す。でも最初のアウトプットまで時間がかかるため、ポイントがずれていたときの戻りインパクトが大きい

ということがあります。チームはUSメンバーが多いため、ディスカッションする際には、荒くてもいいので素早くポイントを絞ってアウトプットを出すことを重要視しています。

※上記シーンは私たちチームに依ったものでもありますし、人に依るものでもあると思います。

グローバル開発を半年間やってきて、さまざまな課題に直面し、ひとつひとつ解決していきました。今でも毎日大小さまざまな課題が発生しています。私たちがどのようにグローバル開発の課題を解決していったのか、今後も共有できればと思います。

さいごのさいごに、私ははじめてUS、コスタリカメンバーと毎日仕事をして、多様ってこんな状態のことを言うんだろうな、いっぱい課題あるなーと感じつつ、毎日何か得られるものがあるので、日々の自分の成長、チームの成長を楽しんでいます。