オフショア開発といえば安いというのがメリットとして叫ばれていますが、「デメリットもあるのでは?」「失敗例も聞いた…」と、実際のところが気になる人もいるでしょう。

私がベトナムのオフショア開発業界に入って2年、実際にオフショア開発のプロジェクトを見えてきたことや、この業界でよく聞く失敗例とその原因や対策について、改めてまとめてみました!

1. 納期が守られず…

オフショアの失敗例
システム開発においては納期厳守な日本人にとって、「納期を守れない」なんて失敗を聞いたら背筋を凍るような気持ちがしますが…、ベトナムでオフショア開発をしていて、たまに聞く失敗談の一つが「納期が守られない」ということです。

ベトナムオフショア開発では、基本的には日本人のプロジェクトマネージャーが入って開発を行なっていることが多いので、それほど大きく納期がずれることはないと思いますが、ある条件下ではよく起こってしまう失敗です。

ベトナムオフショア開発で納期が守られないという失敗が起こってしまう要因の多くは設計や要件を設定するフェーズでの準備不足です。

ベトナムオフショア開発における要件定義にまつわる失敗の要因は、下記の2つです。
1. 仕様書になかった要件を追加してしまう
2. 仕様が明瞭でなく、確認に時間を要してしまった

ベトナムに限らず日本もですが、要件定義にまつわる上記のようなことが発生すると開発期間が伸びてしまい、納期が遅れやすくなり失敗します。
ベトナムオフショア開発の準備についての記事でも言及していますが、失敗を避けるために要件定義フェーズは非常に大切です。

1-1.仕様書になかった要件を追加してしまう

最初に決めた仕様から、やっぱり変えたい!これを追加したい!と開発の途中で言われると、思わぬところまで影響することがあり、開発期間が伸びがちになるという失敗につながります。

かっちりとリリース日を決めずに、柔軟にやっている場合は良いですが、特にウォーターフォールで開発を行っている場合はリリース日を後ろ倒しにするのが難しいため失敗を避けたい場合は追加要件を出すのはお勧めできません。

新しい要件を出すときは、まずは本当に今入れないといけないのかを考えましょう。
リリースの後の追加でも構わないような機能である可能性があります。
失敗を避けるためには、そのような機能はなるべく後々の対応にしましょう。

それを考えても必要だと考えた場合は、オフショア開発先のプロジェクトマネージャーと開発にかかる期間や、影響範囲をしっかりと相談して懸念事項を洗い出してから、大きな失敗に繋がるものではないかを考慮した上で依頼するようにすると良いでしょう。

1-2.仕様が明瞭でなく、確認に時間を要してしまった

また、仕様の細かいところが決まっていなかったりした場合も、ベトナムオフショア開発では開発期間が伸びてしまう失敗の原因となります。

ベトナムオフショア開発は、距離のある開発体制です。
仕様の細かいところをすぐに確認しようと思っても、チャットやメールになることが多くどうしても待ち時間が発生することがあります

ベトナムオフショア開発をする際に、そのような仕様の確認のための待ち時間が積み重ねられるとどうしても開発のリズムやスピードが崩れてしまうので、開発の完了が遅くなります。

ベトナムに限らずオフショア開発を依頼する際は、なるべく細かいところまでしっかりと仕様を決めてから依頼する、もしくは開発チームがわからないところがあった場合にもすぐに返事ができるような体制を作っておくことで、納期が遅れてしまう失敗を防ぐことができます。

2. 品質が悪い!

ベトナムオフショア失敗例
ベトナムオフショア開発においてよくある失敗の1つが「品質が悪い!」ということです。
品質が悪いという失敗にも、下記の2種類あります。

1. デザインや機能が思った通りではない
2. コードの品質が悪く、パフォーマンスが悪い

ベトナムオフショア開発においてよく発生してしまうこの失敗例を、1つずつ見ていってみましょう。

2-1. デザインや機能が思った通りではない

ベトナムオフショア失敗例
ベトナムへオフショア開発を頼んだはいいが、頼んだものとデザインが微妙に違いなんだかしっくりこない…。
機能要件を十分に満たしていない…。
ベトナムオフショア開発ではこのような失敗が発生することがあります。

早めに気付ければいいですが、受入テストで初めて発覚してしまうと手戻りでの損失が大きくなってしまうので大きな失敗となってしまうため、避けたいところですよね。

この失敗の原因の大半は、中間チェックを細かく入れていなかったこと、イメージを適切に伝えていなかったことの2点であることが多いです。

ベトナムのオフショア開発へ頼む際には、「まぁ適当にうまくやってくれるから大丈夫だろう」と任せっぱなしにしていると、認識の齟齬があるまま進んでしまうことで失敗に繋がることが少なくありません。
お互いに違う文化を持っているため、「普通」の基準が違ったりして失敗してしまうのです。

例えば、日本人が思う「モダンなデザイン」がAirBnBだとすると、ベトナム人が思う「モダンなデザイン」がVietjetのホームページである、というようなことが起こり得るのです(例えです!)

ベトナムオフショア失敗例

VietJetのHP。日本人が思う「モダンなデザイン」とは少しイメージが違うかも…

オフショア開発で全く違う基準を持つ人と働くときは、明確に期待するものを伝えた上で少なくとも2週間に1度は機能やデザインのチェックをさせてもらった方が良いでしょう。

ベトナムオフショア開発に限らず、認識齟齬という失敗はどんなプロジェクトでも起こり得ます。
早めに気づくことで、後々への影響や失敗を最小にできるため、任せっぱなしにせずに、プロジェクトが期待通り進んでいるかどうかをこまめに確認しましょう。

2-2. コードの品質が悪く、パフォーマンスが悪い

ソースコードの品質
ある程度の経験を積んだエンジニアなら、コードを見たときにそのコードが良いものか悪いものかを判断することができるかと思います。
ベトナムオフショア開発に頼んだときに聞く失敗例の1つが「動いてはいるのだけど、コードの質が悪いのでパフォーマンスが低い」ということです。

私もこちらに来る前に、オフショア開発を頼んだことがあります。
そのときはエンジニアだったためコードレビューをしましたが、不要な処理が多く入っていたり、エラーの処理が甘かったりして、パフォーマンスが悪くページのスピードが落ちてしまったり、バグが出た時にエラーを探すのに時間がかかったりということがありました。
もちろんこのプロジェクトは失敗に終わりました…。

この失敗も、受けている教育の違いや、コードを書く時に用いられる手法・セオリーなどがベトナムと日本で異なることから発生します。
コードの品質をあげるのは、ベトナムオフショア開発に限らず日本でも難しいことではあります。

対策としては、オフショア開発先にシニアのエンジニアをアサインしてもらい、コードレビュー体制をしっかり作ってもらうことや、日本側で一人信頼できるエンジニアにコードレビューだけ依頼するのが良いでしょう。

特に技術に明るくない人にとっては、コードの品質問題はなかなか難しい問題ではありますが、ここを最初にしっかりしておかないと、後々「技術的負債がどうしようもないほどひどく、コードを全て書き直しに…」という恐ろしい失敗が発生します。

3. 思っていたよりエンジニアが働かない?

ベトナムオフショア失敗例
ベトナムでオフショア開発をしていてたまに言われるのが、「ベトナム人はあまり働かないでしょう?」ということ。

一見失敗とは少し違いますが、詳しく聞いてみると、ベトナムにオフショア開発を頼んだが、ベトナム人エンジニアがあまり熱心に働いてくれないため、バグの対応が遅れた、納期が遅れた…などの背景から聞く人が多いようでした。

ベトナムのオフショア開発に関わっている身としては、このほとんどは勘違いだと思っています。

基本的にベトナムオフショア開発に限らず、海外では日本ほど身を削って働くような働き方をする人が少ないように思います。
ベトナムは基本的にジョブディスクリプションという、職務においてその人がやるべきこと、責任範囲を明確に記載したものがありますが、その範囲内で働く人が多いです。

ベトナムオフショア開発の失敗例
ベトナムでは残業代が高く企業もあまり出したがらないためか、残業は基本的にしませんし、開発が進行中だったとしても休みたいときはしっかり休みます。
また、朝の出勤はバイクの渋滞で時間通りにつけないことが多く遅刻がちです。

そのため、日本人の感覚からすると「サボってる?」という感想が出ることが多いのです。
(人それぞれで本当に怠け者もいますが…。)

このペースや文化背景を理解しないままプロジェクトを進めてしまうと、「残業すれば遅れを取り戻せるだろう!?」という日本側と、「残業はしたくありません」というベトナム側で齟齬が出て、プロジェクトを進めるのが難しくなるという失敗がおきてしまいます。

この失敗を避けるための対策は基本的に以下の3点です。

・やることや納期、期待することをしっかり伝える
・頻繁にコミュニケーションをとってベトナムのエンジニアがモチベーション維持できるようにしておく
・ベトナムの開発チームがどのようなペースで動いているのかを現地に行って把握しておく

日本人もそうだと思いますが、ベトナム人も基本的には「褒められるとやる気が出る!」というエンジニアが多いと思います。
なので、大きな失敗を避けるために開発の時は頻繁にコミュニケーションをとって、エンジニアのモチベーションが維持できるようにしましょう。

4. まとめ

ベトナムでオフショア開発を依頼し失敗してしまう時は、大抵がコミュニケーション不足や不明瞭な仕様から発生しています。
事前にきちんと対策をとっておくことで防げることばかりですので、ベトナムにオフショア開発を頼む時は気をつけてみましょう!

5. ベトナムでオフショア開発をするならバイタリフィへ

もちろん、「開発の経験がなくてあまりわからないので相談したい」という場合は、ぜひ弊社へご相談ください。
バイタリフィバイタリフィアアジアでは、ホーチミンで2008年から10年超のオフショア開発経験と実績を活かし、優秀なベトナム人エンジニアを活用したソフトウェア開発・サービス開発/保守運営が可能です。

ベトナムオフショアならバイタリフィへ

また、当社は、ベトナムに子会社(バイタリフィアジア・スクーティー)を設立しています。
バイタリフィアジア・スクーティーでは、当社で受けた案件の開発部分をベトナム拠点に依頼するようなオフショア開発ではなく、お客様がベトナム拠点と直接関わり、案件進行して頂く事によりコストを抑えたリソース提供を可能にしています。
お客様の専属エンジニアをベトナムにもって頂くようなイメージでの開発が可能となっていますので、「どのようなチームで、どんな風に開発を進めれば良いのかわからない…」と迷っている場合にも一度お気軽にご相談ください。
当社で受託するのがよいのか、バイタリフィアジアへお繋ぎするのがよいのか、お客様にとって適切な開発体制をご提案しています。