はじめまして、ピクスタ開発部の小張といいます。ベトナムでラボ型オフショア開発を始めて約3ヶ月経ちましたので、今日はその話をします。
ラボ型オフショア開発?
従来のオフショアと異なり、一定期間チームをアサインしてもらう形式です。以下の説明が詳しいです。
ピクスタではフランジアさんという会社のベトナム拠点に数人のチームを組成してもらい、私が常駐して一緒に開発をしています。
なぜオフショア?
日本でのエンジニア採用が理想的なスピードではできていなかったことと、海外事業を伸ばすため、日本に限定せずグローバルに開発を進められる体制に変えていきたいという思いが重なり、近年オフショアが熱いと言われるベトナムを視察した結果、Rubyに強いフランジアさんと一緒にやることにしました。
やっていること
今はバックエンドシステムを中心に、ピクスタのマイクロサービス化の一翼を担ってもらっています。機械学習を取り入れたり、AWSの新機能を試したりと技術的なチャレンジもしています。ゆくゆくは日本との区別なくなんでもやってもらうつもりです。
高い実装力
実装力については思っていたよりずっと高くて驚きました。キャリア1〜2年のメンバーが多いので(若い!)、勉強してもらうこともありますが、キャッチアップが早いのであまり問題ありません。一方、仕様面についてはしっかりまとめて伝えないと意図と違うものがでてきたり、機能の過不足が生じやすいです。WEBサービスやシステムをユーザーとして利用した経験が日本人より少ないので、よくあるxxxっぽい感じでみたいなふゎっとしたオーダーは通じませんし、出来上がったものもしっかり動作確認が必要です。とはいえフランジアのメンバーはよく教育されていて、そこまでかっちり仕様書作らなくてもOKです。いわゆる受託開発マインドに染まっていなくて、提案もどんどんしてくれるし、いいものを作ろうという意識が高くて助かっています。
デメリット
決して安くはないのでコストメリットはそんなにありません。日本と同等のコストで優秀なエンジニアが確保できる、と考えたほうが良いです。そしてコミュニケーションについても、日本人とおなじ感覚で接するとやはり失敗します。日本側とのコミュニケーションも、SkypeやHangoutで行うことになりますので、リモート会議に慣れていない会社は最初は大変かもしれません。
ラボ成功のポイント
日本側のエンジニアがしばらく常駐して、直接コミュニケーションを取る
自分たちの事業や会社のことを全く知らないし国も言葉も違う人がいきなりアサインされますので、最初のうちは日本からエンジニアを派遣し、相互理解を深めながら一緒に開発していくことがほぼ必須になります。フランジアさんは常駐クライアントにも席を用意してくれますので、利用しない手はありません。最初長めに来て、そのあとは定期的に短期間来る、というパターンが多いようです。
日本のチームとリモートでもうまく連携できる人が現地にいくこと
常駐する人は、エンジニアであることはもちろんですが、なるべく上位のポジションか社歴の長い人が行くほうがよいでしょう。日本側と全く別の開発をするなら問題ありませんが、多くの場合、日本側と何かと連携が必要になります。仕様・要件のやり取り、インフラ面の整備、システム結合等。その際に、日本側ともしっかりコミュニケーションが取れないと、うまく連携できず失敗することになります。オンラインミーティングは対面に比べて情報量が落ちますので、日本側のチームをよく知るメンバーが行ったほうがうまくいきやすいです。
日本側を巻き込む、信頼を積み上げる
オフショア=品質大丈夫?という心配をどうしても日本サイドは持っていますので、実績で示して信頼してもらうことが重要です。特に初期のプロジェクトで失敗するとそのイメージがついて回りますので、最初が肝心です。こちらの状況をよく伝えて、協力しあい開発を成功させましょう。また、可能なら常駐エンジニア以外に日本側のエンジニアを時々呼んで、こちらの状況を知るメンバーを日本側に増やしていくと、日本とベトナムとのコミュニケーションがスムーズになります。ピクスタでも、対面レビューを通じた育成、設計支援等目的に既に何度か来てもらいました。 日本から2回来たエンジニアはこう言っています:
ベトナムに2度渡った id:necojackarc です。
1度目はスタート段階の引き継ぎ*1、ベトナムメンバーとの直接交流、開発環境の構築、2度目は設計支援と育成(ペアプログラミングとレビュー)でベトナムへ渡りました。
やはり初期段階や重要なポイントでの面と向かってのコミュニケーションは非常に重要だと感じました。 2度目の渡越は、リモートでの設計支援に限界を感じたことが一番の理由です。
現地メンバーと面と向かっての英語でのコミュニケーションは、リモートとは比べ物にならない程効率的でした。
また、ベトナムメンバーと直接会うことによって、現地メンバーがそれぞれどういう人物(レベル感やこちらの指示への対応の仕方、コミュニケーションでのノリ)がある程度はつかめるため、リモートでのコミュニケーションも円滑になると感じました。
こちらは個人的な感想ですが、海外エンジニアと一緒に働くこと、ベトナムの文化に触れること、英語でコミュニケーションを取ることなど、非常に刺激的で楽しいです。
いわゆる純粋な国際交流のメリットもあると感じました。
できれば、ブリッジSEをはさまず英語で全員と会話
ブリッジSEという、日本語ができるエンジニアを一人アサインしてもらい、そのブリッジSEを通してその他のエンジニアにベトナム語で仕様等を伝えてもらうのはよくあるパターンです。この形なら日本語だけで開発は一応進められますが、やはり直接エンジニアとやりとりしたほうが伝達漏れや誤解が少ないので、細かい実装面はエンジニアとなるべく直接英語でやり取りすると良いです。英会話レベルは個人差がありますが、読み書きはだいたい問題なくできるので、ピクスタのベトナムチームでもチャット・コードレビュー・ドキュメントは、日本側の関連エンジニアも含め基本英語にしています。
最終的には、日本チーム・ベトナムチームという垣根なく、エンジニア同士相互連携している状態にしたいですね。
よかった点
人数のスケーラビリティを確保できた
フランジアさんはどんどん人を増やしていて、チームメンバーを増員したいというとすぐにアレンジしてくれます。しかも、フランジアさんの採用フィルター・育成ステップを通っていますので、技術力に関して心配はありません。何か開発したいと思った時に、スケールさせて対応できるオプションを持てたことは大きいです。
エンジニアリングへの集中
開発拠点ですから、開発にフォーカスでき、結果として高い生産性を発揮できています。
英語によるコミュニケーションの浸透
日本のエンジニアも英語でやり取りするのがいい刺激になっているようです。
まとめ
日本でエンジニア採用がなかなか進まず困っているようなら是非ベトナムのラボを検討したらよいと思います。仕様が決まっててコードを書くだけではなく、WEBサービスを一緒に開発していくことも問題なくできます。特にRailsのアジャイル開発であれば、フランジアさんはそこに特化していますので、かなりオススメです。繰り返しになりますが、実装力はどのメンバーも総じて高く、日本と変わらないかそれ以上かもしれません。日本のマーケット向けのプロダクトしかやらないなら日本だけで開発する意味がありますが、海外向けもやっていくなら日本での開発にこだわる理由はありません。
ピクスタでは、国境を越えた開発チームを一緒に作っていきたいエンジニアを募集しています!!
*1:私が担当していたタグ翻訳に関わる部分、後日紹介予定です。