海外からフルリモートで働くソフトウェアエンジニアの仕事のすすめかた
元記事
はじめに
こちらは、グロービス Advent Calender 15日目の記事です。
コジコジと申します。今年の2月からグロービス社に参画しているバックエンドエンジニアです。
今回、この記事では海外からフルリモートで働いている自分が、他の多くのメンバーと時差がある環境でどのように一緒に働いているか、どのような点に気をつけているかについて書いております🌎
海外に住んでソフトウェアエンジニアとして働いているケースはまだまだ少ないかと思われますので、海外に少しでも興味のある方の参考になれば幸いです。
どこから働いているか?
現在は、カナダのバンクーバーからフルリモートで働いています。バンクーバーには今年の7月から移り住んでおり、カナダ歴は約6ヶ月ほどです。
そして、バンクーバーと日本の時差はなんと**-17時間**です!ですので、基本的に日本とは昼夜逆転になり、カナダから見ると日本は1日進んでいる状態です。チーム体制としては自分含め他のメンバーも全員フルリモートですが、海外在住は今のところ自分だけです。
メンバーたちの住んでいるエリアをマップにすると、圧倒的少数派であるのが一目瞭然ですね!
働き方について
基本的には、日本時間に合わせて勤務しています。
時差が-17時間もあるので、完全なフルタイムではなく現在は時短でだいたい6時間程度の勤務をしています。
普段のスケジュールとしては、週5で日本時間午前9時から午後4時まで勤務することが多く、バンクーバー現地時間で、毎週日曜から木曜の16時から休憩時間含めて23時までというスケジュールになります。
-17時間の時差にどのように立ち向かうか?
時差が半日以上あるので、日本に住んでいた時には考える必要もなかった問題にいろいろとぶち当たります。まず最初に最も重要なことはスケジュール管理です。
スケジュール管理
結論から言うと、Googleカレンダーでだいたいのことは解決します。
Googleカレンダーには複数のタイムゾーンを同じカレンダー上に表示することが可能です。
詳しい設定方法は、Googleカレンダーの公式ドキュメントを見てもらえればと思いますが、以下のように1つの画面上に複数のタイムゾーンの時刻を表示することができます。
また作成された予定は、自動で自分の属するタイムゾーンに変換されるので、自分や他のメンバーが自分自身でどこのタイムゾーンかをわざわざ設定する必要はありません。Googleカレンダーは流石ですね✨
カレンダーによるスケジュール管理は、Googleカレンダーで解決しましたが、現在の時間は現地時間だけでなく日本時間も一緒に確認したくなるのは自然の摂理ですよね👀
自分は、Macbookを使っているので、画面上のメニューバーにバンクーバー時間と日本時間が表示されて欲しいと思いました。しかし、MacOS標準の時計アプリやMacのシステム設定ではメニューバーに複数のタイムゾーンの時刻を表示することができませんでした。
そこで、有料にはなりますが `Times` というアプリを購入しました。
このようにメニューバーに複数のタイムゾーンが表示されます。
Simple is best ✨
睡眠時間の確保
これは、バンクーバーで働く場合特有の問題かもしれませんが、-17時間という時差の都合上、勤務終了が夜の23時頃なのでそのあとすぐに入眠するには少し工夫が必要です。
仕事をしている最中は脳が活性化しているので、そこから入眠モードになるために効果に個人差はありそうですが、夜9時以降は部屋の照明を間接照明にしたり、寝る前にホットミルクや白湯を飲むようになるべく丁寧な生活をするよう心がけています。
ただバンクーバーは11月からの冬の時期は、曇りか雨の日が続き晴れる日が短いので、日光を浴びる機会が減り、睡眠に必要なホルモンの分泌が十分でなくなるケースがあるようです。
なので自分もカナディアンの友人のアドバイスに倣い、ビタミンDやメラトニンのサプリメントを摂取しています。
どのように仕事を進めているか?
先述した通り私は、時短勤務なので自分が着手しているタスクが後続のタスクのブロック要因になることを全力で避けるために以下の3つを心がけて実施しています。
開発を進める前に関連実装の調査に時間をかける
一見当たり前のことですが、これは単に1~2時間で調査を終えるのではなく、今日は調査だけする日と決めて1日まるごとを調査に割り当てることが多いです。既存の実装のコードリーディングから、git blameで該当箇所の最新コミットから過去のプルリクエストやissue、社内ドキュメントまでたどり、なるべく背景や経緯を把握することに時間をかけます。我々デベロッパーはコードを書くのが好きですが、すぐにコードを書こうとする前にひと呼吸して調査に時間をかけることは、とても大事だと私は思います。
コードを書く前にドキュメントを書く
調査をする中で自分の脳内にインデックスができてくるので、自分の頭の中の思考を整理するためドキュメントとしてアウトプットをします。
ドキュメントの内容としては読み手がエンジニアメンバーであることを想定した仕様書のようなメモを書いておくことが多いです。
いわゆるデザインドキュメントやADR(アーキテクチャ・デシジョン・レコード)と呼ばれるようなものかもしれません。
最近、出版され話題になっている「世界一流エンジニアの思考法」というマイクロソフトアメリカ本社でソフトウェアエンジニアとして勤務する著者の方が属するチームでも、まず手を動かす前にドキュメントを書くことのメリットが書かれているので、興味のある方は読んでみてください。明日の自分にすぐ活かせそうなメソッドが多いのでとてもオススメです✨
気軽にドラフトでPull Requestを出しておく
まだ実装が完成していなくても、ひとまずチームメンバーと相談したりペアプロ・モブプロをしやすくするためのたたき台として、他のチームメンバーが見れる状態にしておけば、次の日にスムーズにタスクを再開できる状態になりやすいかなと思います。
どのような組織・チームだと時差があるメンバーがいても仕事がやりやすいか?
実際に海外から働いている自分の目線では、以下のような環境だとフルリモートかつ時差があるメンバーでも仕事がしやすいかなと思います。
ペアプロ・モブプロが気軽にできる環境
これは積極的にメンバー同士でペアプロやモブプロをしたり、疑問やわからないことがあれば職種に関係なく互いにコミュニケーションをすることが浸透しているチームや環境です。
コミュニケーション空間がバーチャル寄り
リモート勤務しているメンバーとオフィス出社しているメンバーは、Gather というバーチャルオフィスツール上にみんなが集まるというリモート主体の体制になっています。
全従業員がリモート勤務していることで、有名なGitLab社のCEOもリモートとオフィスのハイブリッドは最悪だと述べていましたが、Gatherのようなバーチャルオフィスに全員がいる状態であれば、リモート主体でオフィス出社しているメンバーと在宅勤務しているメンバー同士でのコミュニケーションがスムーズになります。
具体的にどのようにGatherを活用しているかは、グロービスアドベントカレンダー2023の12日目の記事である**「バーチャルオフィス活用によるコミュニケーションの活発化」**に書かれているのでよかったら読んでみてください。
各メンバーが並行して仕事ができる状態
ペアプロやGather上で話せるなど同期的なコミュニケーションができることも重要ですが、それと同時にやはり時差があるので、時には日本時間の深夜早朝のタイミングで仕事にとりかかることもあります。
このように自分しか稼働していないタイミングでは、一人でもタスクに取り組めるよう、週次の開発チームの開発計画のミーティングなどで、できるだけ小さい単位でやるべきタスクを明確化して棚卸しすることが重要だと考えます。
自分が住んでいる国や都市について興味を持ってくれる人がいる
自分もですが、自分とは異なる国や街で暮らしている人の話を聞くのはけっこう楽しいので、会話が弾みやすく結果的にお互いの人となりを知ることができ、仕事上のコミュニケーションも円滑になるのかなと思います。
ちなみに自分が日本からカナダ・バンクーバーに来て一番驚いたことは、普通に二郎系ラーメンが食べれることです🍜
さいごに
ということで、バンクーバーからフルリモートで働いている自分の事例や考えを紹介してみました。海外に興味のある方の参考に少しでもなれば幸いです😃