見出し画像

海外エンジニアとフルリモートで働く上で、工夫していること

michitekuでエンジニアをしている鈴木(@suzuki-0000)です。
こちらの記事では、海外エンジニア(インターン)との働き方について書きたいと思います。


1. 海外エンジニアの定義について

はじめに、海外エンジニアという定義について補足します。

  • 海外エンジニア = IIT(インド工科大学)に通う学生2名

  • サマーインターン(2ヶ月)の期間を利用した、インターンをしてもらう

  • 彼らは海外(インド)よりフルリモートで作業を行う

  • IITで基礎的なIT知識と、一部高度な専門的知識を持ち合わせている

  • 日本語は「おはよう」ぐらいしか話せない

今回は、海外エンジニアを上記の定義として、お話していきます。
我々は、すでにこの条件下で2ヶ月間一緒に仕事をしています。

イメージです(若干似ています)

働く中で、ネットで調べてもわからない、実経験やノウハウを学ぶことができました。
ご自身の環境と照らし合わせて、少しでも参考になれば嬉しいです。

2. 海外エンジニアとフルリモートで働く上で、工夫していること

2-1. オンボーディング・業務設計は丁寧に行う

まず「期待値の擦り合わせ」を丁寧に行いました。
インターンしてもらう上で

  • 優秀な学生なんだから、考えて動いてもらえるだろう

  • 彼ら自身に、作業を考えてもらおう

では、やはり彼らも困ってしまいます。
インターン開始時に、こちらの期待値・目的をしっかり伝える。
そうすることで、彼らにとっても、モチベーション高く行動を起こしてもらい、技術を学んでもらえる良い環境が実現すると考えています。

なぜmichitekuは存在するのか。どのような作業を期待しているのか。
何をもってインターンが成功したと言えるのか。といったことを記載しています
(上記は一部抜粋)

また、彼らとの共通言語は英語です。
インド、及び、英語はローコンテクスト(言葉で伝える)であることが知られています。
期待値を言語として明確にすることで、彼らにとってもストレスなく、目標に向かって作業ができると考えています。

また、2ヶ月という短い期間で、お互いの期待値を合わせるためには、時に厳しいことも記載する必要性があります。

イエローカードとレッドカード

こちらは「あなたが、もし約束を守れなかった場合は、警告します。その警告を何度も破った場合、インターンは即時終了しますよ」という内容になっています。
厳しいと思うかもしれませんが、期待していることと同時に「期待していないこと」を明確に伝えることが重要だと考えています。

本来あるべき姿は、お互いの文化を正しく理解する時間を設ける。そして、お互いにとって、ストレスのない折衷案を見つけることだと思います。
今回は限られた期間の中で、まず最低限守ってもらいたいルールを、こちらから提示する。その上で、並行してお互いの文化・価値観を共有する機会をつくる、というスタイルで進めることにしました。
(お互いの文化・価値観を共有する機会は、毎週作っていました。後述記載)

このように、オンボーディング、定期的なケアは丁寧を心がけました。上記の説明ページ(Notionで作成)も、彼らにブックマークしてもらい、なるべく見返すようにしてもらいました。

2-2. 時差を味方につける

インドと日本には3時間半の時差あります。

そのため、インド側の作業開始は、日本側でのお昼過ぎとなっています。
具体的には、日本が13:00の時、インドでは9:30となっています。
彼らはフルリモートで作業してくれるので、この時差は、超えられない壁として、むしろ積極的に利用する形で作業を考える必要性があります。
そこで、インド側で作業を終えてもらった際に、デイリーレポートという形でSlackに書き込んでもらうようにしていました。

デイリーレポートの例

事前にデイリーレポートを記載してもらうことで、翌日、日本で彼らの作業状況を事前にキャッチアップし、適切な指示やサポートを意識しました。

2-3. 同期的なコミュニケーションを大切にする(認識合わせ)

時差があり、フルリモートであり、言語の壁もあるので、非同期で物事を進めやすい環境だとは思います。
ですが、今回は採用直結型のインターンですので「彼らと一緒に効率よく、楽しく働けるか?」という解像度を上げることが重要になってきます。
そのため、同期的な会議を意図的に、毎日行うようにしていました。
以下、会議の例を示します。

オンボーディング時に説明した会議体の例

平日13:00時からは
「Daily stand up Japan & India(名付けて日印朝会)」
を実施していました。ここでインターンの

  • 昨日やったこと

  • 今日やること

  • 困りごと、共有したいこと

をキャッチアップするようにしました。
また、前述した、事前に彼らの進捗をデイリーレポートとして受け取ることで、この限られた時間にスムーズに会話ができるように心がけました。

2-4. 同期的なコミュニケーションを大切にする(Zoomでの工夫)

海外のエンジニアと仕事する上で1つの壁となるのが、言語です。
今回michitekuでは、英語を公用語化するという手段はとらず、必要に応じて英語を用いる、という方法を採用しました。

michitekuでは、Zoomによって同期的なコミュニケーションを行いました。
英語の壁を突破するために、Zoomによる自動翻訳が有効です。
自動翻訳のためには、有料アカウント(ビジネスプラス)か、Zoom翻訳版字幕のアドオンが必要になります(お金がいるよ)。
今回michitekuでは、海外インターンがいる2ヶ月を期限として、トライアルで利用しました。
この機能は途中から入れたのですが、会話がリアルタイムで

  • 日本語 ⇛ 英語

  • 英語 ⇛ 日本語

へ翻訳されるため、英語での会話が不慣れなエンジニアでも、お互いの母国語で会話が可能で、8割程度の理解が可能になります。

Zoomでの自動翻訳例。日本語と英語が両方でてくる。

一部利用にコツがあって

  • 日本語は、短く区切って話す

  • 翻訳が難しいPJ特有の言葉を使わない、または平易な言葉で言い直す

  • インド側で日本語⇛英語の自動翻訳が届くのに、2,3秒のタイムラグがあるので、あえて2秒ぐらい開けてから、会話の続きを発話する

ということをやると精度がグッと上がります。
自分が、ちょっと古いロボットになったかのように発言すると、うまく翻訳されやすいです。
人間がシステムを利用して便利に仕事しているはずなのに、気がつけば、人間がシステムのように話している。というなんとも皮肉なことが起こります(楽しんでいます)。

2-5. 非同期でのコミュニケーションを工夫する(Slack編)

michitekuでは、Slackによって非同期のコミュニケーションを行います。
チャンネルが多くなるとインターンの認知負荷が上がると考え、最低限のチャンネルを用意し、サポートする体制としました。

slackチャンネルは3つに制限

また会話をすべて英語にすると、今度は日本人同士のコミュニケーションコストやミスが増えると考えました。
今回は、自動翻訳が可能なKiaraを試験的に採用しました。

Kiaraは非常に早いレスポンスで、高い精度があるので、プロジェクトで許されるなら、十分利用する価値があると考えています。
余談ですが、誤訳が面白い時があり、和ませてくれるのも高ポイントです。

毎回誤訳では使えませんが、たまに出てくるので笑えます。
岡ちゃんがお母さんに誤訳された例

2-5. 非同期でのコミュニケーションを工夫する(Notion編)

michitekuでは、仕様記載のツールとしてNotionを用いています。
NotionAIによる翻訳が非常に便利です。
英語からドキュメントを書く必要がなく、8、9割程度の精度がでていると感じてます。

  1. 日本語で記載する

  2. NotionAIで自動翻訳

  3. 英語翻訳を見てもらう

という方法で対応しています。
仕様理解は、日本語を日本人が読んで理解しても、齟齬が出やすいところです。すべて英語化することはコミュニケーションミスを招いたり、開発者にストレスが大きいと考えました。
(将来的には、すべて英語にしたいと考えています)

2-6. 開発でのコミュニケーション/作業効率を工夫する(Github編)

michitekuでは、ソースコード管理にGithubを用いています。
構成はmonorepoです。
インターンには、フロントエンド、バックエンドの作業両方を期待していました。そこで、README.mdファイルをまず見直しました。
日本語でも言語化が甘いな、と感じる部分はより「国語辞典的で明晰な日本語」へと修正しました。
その上で

  1. DeepLを用いて翻訳

  2. README.en.mdファイルを新規作成、英語訳を転載

  3. 最後は手作業で整える

というやり方で翻訳を行いました。
この結果

  • 開発環境の構築方法

  • GraphQLSchemaの更新方法

  • Rails経由でのDBスキーマ変更・操作方法

  • ディレクトリごとの役割理解

など、開発言語を知らないインターンが見ても、理解できるように工夫しました。
環境構築においては、Dockerを利用しているので、ワンステップで構築可能な仕組みであることも、強みになったかなと思っています。
以下、日本語版と英語版を一部抜粋します。(バックエンドの例)

日本語の例。
「むしろ冗長では・・・?」と思うところまで、記載するようにしてから翻訳しています。
英語へ翻訳

IITの学生はPythonはよく学んでいるようです。
しかしRubyはほとんど使ったことがないため、PJ特有のカスタマイズを読み間違えて、無駄な時間を要してほしくない・・・そんな気持ちから丁寧な記載を心がけました。
(将来的には、グローバルで使われやすい言語の利用を促進していきたいと考えています)

2-7. デザイナーとのコミュニケーション、作業効率を工夫する(Figma編)

michitekuでは、UIデザインやワイヤーフレームの作成にFigmaを用いています。
今回は、Webサービスとしてすでにプロダクトを触れる状態だったため、ChromeのExtensionでGoogle Translationを入れてもらい、ページの自動翻訳してもらうことで、機能ごとの意味を理解してもらうことができました。

機能改善、新機能開発におけるUIの微調整に関しては、デザイナーから直接以下のように指示を出してもらい、直接彼らに伝えてもらうにしていました。

言語化が不要な便利な世界

2-8. お互いの文化・価値観を共有する

技術・ツールを駆使して、コミュニケーションをスムーズにしても、1つ、埋まらないものがあります。

それは価値観です。

わかりやすい具体的な例として「時間の考え方」があります。
例えばインドでは、2,3分の会議出席の遅れは「遅れ」として考えていない側面が(少なからず)あります(もちろん、人によりますが)。

その価値観は、彼らの体験に紐づいており、体験の多くは日常・文化的側面(歴史)からくるものです。彼らの日常・文化的側面(歴史)を理解すると、我々の価値観では「いつも会議に遅れてくる」と感じるものが、彼らにとって「時間通りに来ている」と感じていることを違和感なく理解できるようになります(わたしはそれをCyclical life-force, Karma, Fatalism, Jugaadといった観念から理解しました)。

そこでmichitekuでは、お互いの文化や価値観を共有する機会をつくる時間を、毎週用意しました。
日本の会社だからといって、日本の会社文化を強要しない。
お互いの文化・価値観を認識し、共有し、尊重する姿勢を持つ。そういったことを、しっかり共通認識として持てるように、働きかけていく。
D&Iをmichitekuでは大切にしたいと考えています。

最後に

いかがだったでしょうか。
今回は長くなるため省略しましたが、他にも

  • 海外エンジニア採用を始めた理由、その背景

  • 海外エンジニア採用の進め方、工夫したこと、スケジュール

  • 海外エンジニアとフルリモートで働いて感じたメリット・デメリット

  • 海外エンジニアの受け入れ、労務・総務・人事との連携について

などをトピックとして扱えればと思っています。
すこしでもご自身の環境に照らし合わせて、参考になれば幸いです。

今回IITの学生と協業を推進する上で、TechJapan様に協力いただいています。非常にサポーティブで助かっています(感謝)。

michitekuではエンジニアを積極的に募集しています。
カジュアル面談は随時募集しております。
皆さんと、お話しできることを楽しみにしております!


▲治療や生活を考える治療生活ツール「michiteku」 β版はこちらから。無料でお使い頂けます。