こんにちは。GAOGAO でエンジニアをしている Tsubasa と申します。
GAOGAO にてエンジニアとして働き、まる3年になりました。
直近のプロジェクトではベトナム人エンジニアを含めた 3 名のチームで開発を行いました。
今回はそのプロジェクトでの学びをシェアさせていただきます!
目次
0. はじめに
0.1 本プロジェクトのチーム体制
本プロジェクトのチーム体制は下記になります。
- 日本人エンジニア 2 名(4 年目エンジニア2名、内 1 人が私)
- ベトナム人エンジニア 1 名(13 年目のシニアエンジニア)
ベトナム人のエンジニアを含めた開発の中で工夫した点、及び困難だった点について振り返っていきます。
また、全員別々の場所に住んでおり基本的にフルリモートで開発は進んでいきました。
0.2 なぜベトナム人エンジニアが参画するに至ったのか
本題に入る前に、今回のプロジェクトがなぜ始まったのかについて説明いたします。
GAOGAO では ビジョンとして「世界中でモノつくりの連鎖を起こす」を掲げております。
また、カルチャーコードの中には「Borderless」があり、グローバルマインドをもち、海外の方とも主体的にコミュニケーションをとり信頼関係を築ける人材を増やしています。
そういった背景もあり、今回私はベトナム人エンジニアを含めたチームで開発を行う機会をいただきました。
また、私が現在ホーチミンに居住していることも、今回のプロジェクトが始まった一端になっています。
カルチャーデックにご共感いただけた方はぜひ下記からご応募ください!
1. 開発中に工夫をした点
では、本題である私たちのチームで工夫をした点について記載していきます。
この記事をまとめる中で、外国人人材を含めた開発だけでなく、日本人のみのチームでも大切であることに気づきました。
1.1 コミュニケーションの機会を増やす
まずはコミュニケーションの機会を増やしました。
具体的には毎朝、Slack でのメッセージによるタスクの投稿と、10〜15分の朝会を行いました。
朝会では、Slack に投稿した朝の宣言を元に、下記の点についてコミュニケーションをとりました。
- 雑談(その時々に応じて。ちょうど、ベトナムダナンで台風の被害があったためその話など、ベトナムの好きなカフェなど)
- 本日やるタスクについて
- 今現在困っていること
現在困っていることを共有することはチーム開発で最も重要でした。
どうしても、ドキュメント化した仕様の理解が難しい部分がありそちらを画面共有などを通して明白化しました。
幸いなことに、参画いただいていたベトナム人のエンジニアの方はエンジニア歴も長く、コードの書き方は私たち日本人が学ぶことが多くありました。
1.2 ドキュメント化し、会話で生まれるミスコミュニケーションを補う
ベトナム人、日本人共に英語が第二言語であるため、やはりミスコミュニケーションが発生することは避けられません。ましてや、開発内容に関しては言わずもがなです。
日本語でも認識の齟齬はありますからね…
私たちはプロジェクトを GitHub プロジェクトで管理していたこともあり、Issue に取り組むべき内容や、期待される挙動を詳細に記載しました。
特に、完了の定義をチェックボックスとすることで仕様の抜け漏れを防ぎました。
また、このように仕様を落とし込むことで、テストコード実装が楽になりました。
GitHub の Issue ではコメントを通して、会話をすることも可能です。
コメント機能を用いることで、Slack でのメッセージですと散らばりがちな仕様詰めを集約し、すぐに参照できるようにしました。
1.3 開発内容の背景を含めて共有する
仕様を Issue に落とし込む際に、ユーザーストーリーを日本人オンリーの開発の際に比べて多くしました。
単純に欲しい機能を説明するだけよりも、「その機能でユーザーがしたいこと」=「ユーザーストーリー」を説明することで、参画いただいたベトナム人エンジニアの方から、仕様の理解がスムーズになりましたとの良いフィードバックもいただきました。
またを記載したため、ベトナム人のエンジニアの方からの、設計の提案などをいただけ非常に建設的な開発フローになりました。
2. 困難だった点
2.1 事業ドメインの説明
今回のプロジェクトは社会インフラの分野であり、日本企業の特色が色濃く出ているドメインでした。
日本人としても、直接馴染みがなく(馴染みがない一方で大変お世話になっているドメイン)商流の理解に苦しみました。
これはベトナム人のエンジニアにとってはより難しい課題でした。
開発チームの中で、クライアント企業の HP に掲載される商流図や、作成するアプリケーションの UI を見る中で、どのようにお客さんがこのアプリを使うのかを想像することで、全員で事業ドメインの理解の認識合わせのミーティングを行いました。
2.2 日本企業における会計知識の共有
今回のプロジェクトでは基幹システムを作ることもあり、入金、請求、消込処理の実装が必要でした。
参画した日本人エンジニアもあまり基幹システムの開発の知見がないこともあり、日本人エンジニアの仕様の理解が薄いため参画いただいたベトナム人エンジニアの方を混乱させてしまいました。
これは私の反省点の一つです。
学びとしては、あまりにも要件が難しい(日本語でも理解が難しい)仕様に関しては無理をして仕様を英語化することで、外国人エンジニアとの間で混乱が起きる場合があるということです。
この問題に関しては、日本人のエンジニアでバックエンドの実装を進め、ベトナム人のエンジニアにはフロントの実装をお願いするなど分業をする形で進めました。
チームメンバーの配置を最適化し、チームでのアウトプットを最大化させるのは、外国人エンジニアを含まない場合でも同様ですね。
結論
外国人エンジニアを含めた開発チームで最も重要なことは、「コミュニケーション」と「ドキュメント化」でした。
「ドキュメント化」した仕様の理解を「コミュニケーション」で補う。「コミュニケーション」で足りない部分を「ドキュメント」で補う。
双方が外国人エンジニアとの円滑なチーム開発に必要であると思います。
上記があることにより、私たちのチームでは円滑に開発を進めることができ、非常に楽しい経験になりました。
全体をまとめると、日本人オンリーの開発チームにおいても重要なことが多かったのではないでしょうか。
GAOGAO では多数の多国籍開発チームが立ち上がってきています!
現在 GAOGAO では複数の多国籍開発チームが立ち上がっており、グローバルマインドを持ったエンジニアの方々を募集しております!
英語を使った環境で刺激を受けながら開発をしたいと思っているエンジニアの方は下記の Wantedly 採用ページからのご応募お待ちしております!