モダンオフショア開発のすすめ

2020.08.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

シンチャオ! CX事業本部グローバルチーム担当兼アジャイルコーチの藤村です。

2019年7月、主に受託開発案件の人的リソースをスケールする目的で、ベトナム開発パートナーとの協働開発を支援する専門チーム(グローバルチーム)を発足しました。今回はその発足から1年以上経過したタイミングということで、改めて私達の取り組みについてご紹介させて頂きます。

※経緯については、以下の記事を参照ください

経緯

グローバルチーム発足時に作成したインセプションデッキの一部をご紹介します。

前述した通り、受託開発案件の人的リソースのスケールが設立の第一の目的ではありますが、今後より重要性が増すこと間違い無しの英語を使った多国籍チームでの開発ノウハウの蓄積、世界中の働きたいところで働けるといったウィズコロナ時代に即した働き方の推進、国をまたいでエンジニア同士が切磋琢磨できるような魅力的な職場環境の構築なども視野に入れています。

グローバルチームの現状

現在、支援しているプロジェクト数は5、アサインしているベトナム人メンバーの人数は40名を越え、緩やかではありますが、順調に成長できているかなと考えています。

なぜベトナムなのか

この記事を読んでくれてる方の中には、「なぜ日本国内だけじゃダメなのか?」、「なぜベトナムなのか?」という疑問を持つ方もいらっしゃるかもしれません。私がなぜベトナムとの開発にこだわるのか、簡単に説明します。

若者が多い

以下の図は、ベトナム(左)と日本(右)の人口ピラミッドです。図を見ればひと目で分かる通り、ベトナムは若者が多いです。

ITスキルの標準レベルが高い

以下の調査結果は、経産省による主要な国々のITスキルレベルの比較となります。 オフショアと聞くと、未だにITスキルは大丈夫なのかと心配する人がいますが、現実を見てください。既にベトナムの開発者の方がスキルレベルは上です。

勉強熱心

こちらも同じく経産省による主要な国々のスキルアップに向けた取組状況となります。 IT関連のスキル、技術だけでなく、語学への取り組みにおいても、ベトナム開発者の積極的な姿勢が見てとれます。日本大丈夫か…。

まとめると、ベトナム人の開発者は、若くてITスキルが高くて勉強熱心という傾向が見てとれるため、ベトナムでの開発にこだわっているのです。

グローバルチームが目指していること

グローバルチームが目指していることを一言で言うと、モダンオフショアの実践です。モダンオフショアとは何かを説明する前に、従来の古き悪きオフショア(レガシーオフショア)の何がいけなかったのかについて、説明します。

うまくいかない可能性が高いオフショア開発事例

ブリッジSEのみを介したコミュニケーション

従来のオフショア開発の文脈で必ずと言っていいほど出てくる用語にブリッジSE(BSE)があります。私自身、BSEを使ったオフショア開発は、今の時代にそぐわなくなってきていると考えています。その理由を下記します。

  • 大切なのは人と人とのコミュニケーション
  • お互い顔も名前も知らないメンバーとでは良いプロダクトは作れない

結局のところ、ソフトウェアを開発するのは人間である以上、大切なことは人と人とのコミュニケーションだと考えています。BSEはそのコミュニケーションを分断します。

想像してみてください。現場の開発者がクライアントのためにより良いプロダクトを作ろうと思っても、顔も名前も分からず、姿も現さないクライアントが何を求めているか、分かるわけがないでしょう。一方で日頃からクライアントと密接にコミュニケーションを取っているBSEと現場の開発者との間には、圧倒的な情報格差が生じます。BSEは自分が開発にとって必要だと思う情報しか開発者に流しません。その限られた情報の中で、いくら現場のエンジニアが想像力を働かせてクライアントの期待値以上の成果を出そうとしても無理があります。その結果、開発者からそのような熱意が失われ、現場の開発者はBSEが言う通りにだけ作っていれば良いと考えるようになってしまうのです。

言った通りにそのまま開発さえしてくれれば良いというなら、BSEを使ったオフショア開発も良いでしょう。しかしながら、せっかく若くてITスキルが高くて勉強熱心なベトナム人メンバーと一緒に開発するのであれば、そのスキル、能力を存分に発揮してもらった方が良いと思いませんか?そのためには、BSEが窓口になるのではなく、チームメンバー全員が人と人とのコミュニケーションを取ることができる開発体制を目指すと良いでしょう。

コスト削減が目的のオフショア開発

いまだにコスト削減が目的でオフショア開発を選択する人がいますが、もうそのような時代でもなくなってきています。 以下はベトナムの実質GDP成長率の推移です。 ご覧の通り、ここ数年は7%前後の成長率で推移してきています。もうベトナムだからといって、人件費が安いから安くアプリケーションを開発できるという時代ではありません。

繰り返しになりますが、我々がベトナムとの開発を目指している理由は、(日本では採用が難しいような)若くてITスキルが高くて勉強熱心な開発者と共にアプリケーション開発を実践したいからです。決して人件費が安いからといった理由ではありません。確かに現実的には、開発者の給与や単価は日本の1/2〜1/3ではありますが、オフショア開発ならではの以下のようなコストが発生します。

  • 代理プロダクトオーナー、QCメンバー、通訳など、ベトナムとのリモート開発ならではの人件費
  • 潤沢な出張費

そのため、開発者の単価だけに目を奪われて安い開発費を想定していると、実際には日本での開発と比べてそれほど安くならないという印象を持つ方が多いです。オフショア開発を手段と考え、日本国内だけで開発しようが、日本とベトナムの多国籍チームで開発しようが、求めるコストや品質は変わらないと考えてくださるクライアントにとっては何の問題もありませんが、コスト削減が目的のオフショア開発にこだわるクライアントは、「なんでオフショアなのに金額があまり変わらないんだ!?」と思い、より良いプロダクトを作ることよりもコスト削減ばかりに目が行き、無理なコストカットをベトナム側に強いることで失敗を繰り返してきました

現実的には、ベトナムの開発者の給与と日本の開発者の給与はまだまだ差があるのが実情であり、私も今すぐ給与を同じにしろと言っているわけではありません。優秀な開発者は、その国、その土地で相対的に良い報酬を受け取るべきだと考えているのです。

これからオフショア開発を行おうと考えている方は、オフショアだから安かろうなどと考えず、日本では採用が難しいような若くてITスキルが高くて勉強熱心な開発者をチームメンバーに加える事ができる上に開発費が変わらないなんて最高!って考えると良いと思います。現実的には、日本国内で開発するよりも、結果的に安くなることは多く、さらにお得感を感じられると思います。

お金で集めた傭兵チーム

オフショア開発を専門で請け負う会社の中には、プロジェクトで必要な人員を倍の給与で他社から引き抜き、チームを編成するような進め方をしている会社もあります。倍の給与といっても元の給与が安いため大したコストがかからず、一見合理的なチームビルディングのように感じる方もいるでしょう。しかし、このような形で集められた開発者たちが、クライアントのため、プロダクトの成功のためを考えた開発を行なうことができるのでしょうか。

もちろん人にもよりますが、お金で引き抜かれた開発者は、別の会社からより高い給与を提示されれば躊躇なく移籍する人が多いです。また、そこまでいかなくても、お金で集められた開発者は短期的な視点でしか物事を考えられないことが多く、言われたことだけやって、効率よくお金をもらおうと考えがちです。今すぐ言った通りにさえ作ってくれればそれで良いといったプロジェクトにおいては、このようなやり方でチームビルディングするのも一つの手だとは思いますが、より良いプロダクトを作ることが目的であればオススメしません。

レガシーオフショアとモダンオフショアの比較

上記したような、古き悪きレガシーオフショアと、我々が目指しているモダンオフショアの違いについて、説明します。

目的

モダンオフショアの目的については、今まで散々書いてきた通り、コストメリットではなく若くてITスキルが高くて勉強熱心な優秀な開発者の確保です。繰り返しになりますが、オフショア=安いという考えを捨てる事が重要です。

イメージ

コストカットばかり重視すれば、プロジェクトの至るところに歪みが生じます。プロジェクトがうまくいかないのはそのコストメリットを突き詰める姿勢なのに、それに気づかずにやっぱりオフショア開発は品質が低いという認識が広がり、それがオフショアは安かろう悪かろうというイメージに繋がってしまったと考えています。

しかしながら、もうそんな時代ではありません。国をまたいだ優秀なエンジニアとの協働開発というイメージに変わってきています。

関係

従来のオフショア開発では、開発プロセスにおける上流工程(要検定義、設計など)を日本国内で、下流工程(開発、テストなど)を海外でと考えてきました。そもそもそんな分業体制で、変化の激しい今の時代に適応できるか疑問ですし、せっかく優秀な開発者を集めても言った通りにだけ開発することを求めるなんてなんてもったいないと思いませんか?そもそもオフショア関係なく、日本のIT業界の下請構造の問題な気もしますが、上流、下流なんて分け方をせず、モダンオフショアでは同じチームのフラットなメンバーという関係を実現します。

窓口

ブリッジSEの弊害については上述しました。理想はそんな窓口なんて置かないことですが、後述するベトナムで閉じたスクラム開発を行なう上で、代理プロダクトオーナーがクライアントとの窓口になるケースは現実的に多いと考えています。こちらについては後ほど説明します。

メンバー

繰り返しになりますが、チーム開発を行なう上では人と人とのコミュニケーションが大変重要です。物理的に拠点が分かれている状況でBSEとしかコミュニケーションを取らないと、その向こう側にいる現地の開発者を単なる開発リソースとして考えてしまいがちです。しかしながら、プロダクトを開発しているのは数値化できるような単なるリソースではありません。それぞれ個性も違う1人の人間であり、同じ目的のために集った仲間です。

プロセス

色々と書きましたが、結局のところモダンオフショアって何?って聞かれたら、アジャイルなオフショア開発になると思います。関わる皆がアジャイルなマインドセットを持ち、アジャイル開発プロセスをオフショア開発に活かしていくことが、我々が目指すモダンオフショア開発です。

重視している原則

モダンオフショアを実践していく上で、特に重視しているのは、以下の原則です。

  • 相互利益
    • 安さを求めず、お互い儲けようの精神
  • 信頼
    • 情報や権限を制限しない、透明性を重視(カンバン、単一のコードベース、動くソフトウェア)
  • リスペクト
    • 礼節を重んじる
  • 組織は拠点配置に従う
    • 一緒に作業する人が同じ場所にいられるような、ベトナムで完結したスクラムチーム
  • 離れて作業する前の顔合わせ
    • ベトナムでのキックオフ、チームビルディング
  • プロセスやツールよりも個人と対話を
    • 現地では机を並べて直接個人と対話、リモートでもSlack等で直接コミュニケーション
  • 出張に備える
    • オフショア開発開発プロジェクトにおいて、潤沢な出張費を見込んでおく

多くのの内容について、既に説明済みではあるので、ここでは以下の2点に絞って説明します。

  • 離れて作業する前の顔合わせ
  • 組織は拠点配置に従う

離れて作業する前の顔合わせ

通常、プロジェクト開始時には、クライアントとクラスメソッドのメンバーでベトナムへ渡航し、フェイス・トゥ・フェイスでのコミュニケーションを行なうようにしています。現地での滞在中には、クライアントからベトナム開発メンバーに対して、プロジェクトの背景、目的を直接説明してもらったり、全関係者が参加するチームビルディングという名の飲み会を実施して、交流を深めます。お酒が好きなベトナムメンバーも多いため、モッ、ハイ、バー、ヨー!(1, 2, 3, 入れる!)という掛け声での乾杯を繰り返しながら交流を深めます。その際に、出来るだけメンバー全員の顔と名前を覚え、率先して名前で呼ぶことも重要です。

その後クラスメソッドの開発メンバーは1〜2週間程度ベトナム開発パートナーのオフィスに滞在し、机を並べて共に開発を行なうことで開発のリズムを掴むようにしています。最初にフェイス・トゥ・フェイスで開発のリズムを掴むことができると、帰国後のリモート開発もとても進めやすくなります。その後は2ヶ月に1回程度の出張(2週間程度の滞在)を繰り返し、コミュニケーションを深めていきます。

しかしながら、現在は新型コロナウイルスの感染拡大に伴い、今年の1月以降はベトナムへ渡航できない状況が続いています。5月からベトナムパートナーとの新しいプロジェクトが始まりましたが、プロジェクト開始時に出張で顔合わせしなかったのはこのプロジェクトが初めてでした。今回のプロジェクトは元々信頼関係が築けているメンバーが多かったこともあって今のところは順調に開発は進んでいますが、やはり細かい部分でコミュニケーションの課題を感じることも多いです。

今後の情勢がどうなるかは分かりませんが、現地に行けるのであればもちろん行ってコミュニケーションを深める、行けないなら行けないなりに工夫しながら、その制約の中で協働開発を進めていくしかないかなと考えています。

組織は拠点配置に従う

国をまたぐオフショア開発において、今まで色々な拠点配置を試してきましたが、今のところのベストな体制は、ベトナムで完結したスクラムチームであると考えています。 具体的には、以下のような体制となります。

ベトナム側で完結したスクラムチームとはその名の通り、(代理)プロダクトオーナー、スクラムマスター、開発チームの全ての機能をベトナム側に備えた体制となります。その際に我々クラスメソッドのグローバルチームでは、主にスクラムマスターとテックリードを担当します。1つのプロジェクトに2人のスクラムマスターがいることに違和感を感じる方もいるかもしれません。

スクラムマスターの主な役割に、プロダクトオーナーの支援、開発チームの支援、組織の支援がありますが、ベトナム側のスクラムマスターは主に開発チームの支援とベトナム側の組織の支援を担当し、クラスメソッドのグローバルチームのスクラムマスターは主にプロダクトオーナー(クライアント)の支援とクライアントの組織、クラスメソッドの組織の支援を担当するイメージです。

なお、クラスメソッド側のスクラムマスターは、ベトナムの開発チームの進め方に対して基本的には口を出しません。やり方について任せます。その分、デジタルカンバン、単一のコードベース(GitHubなど)、スプリントレビューにおける実際に動くデモ等で透明性を担保してもらっています。

上述した通り、我々のモダンオフショア開発においては、BSEなどの特定の窓口を介さないコミュニケーションを意識しています。しかしながら、ベトナム側の代理プロダクトオーナーがベトナムの開発チームに対してプロダクトオーナーとして振る舞うために、ベトナムの代理プロダクトオーナー(主に日本語話者)とクライアントが密なコミュニケーションを取ることが多いです。しかしながら、代理プロダクトオーナーが全ての窓口を担当するわけではなく、クライアントやクラスメソッドのメンバーとベトナムエンジニアとは、日々Slackなどを使って直接コミュニケーションを取るようにしています。

さいごに

いかがでしたでしょうか。この記事を読んで頂いたことで、我々が目指しているモダンオフショアについて少しでも興味を持って頂けると幸いです。

今回書いた内容について、より多くの皆さんに知ってもらいたいと思い、Regional Scrum Gathering Tokyo 2021というアジャイル開発、スクラム開発のカンファレンスにプロポーザルを出しました。もう少し詳しく話を聞いてみたいと思ってくれた方がもしいらっしゃったら、ぜひ以下のリンク先からLikeをポチッとしてくれるととても嬉しく思います。

また、我々のグローバルチームと一緒にモダンオフショア開発を行いたいクライアント様、エンジニアの方もいらっしゃいましたら、ぜひお気軽にお声がけください!