
yepがベトナムラボを使ってオフショア開発して2年半が経ちます。
今までやってきた案件を振り返ってみます。
モバイルアプリの開発
契約: 準委任
言語: Swift, Kotlin
ブリッジエンジニア: 1人(yep社員)
PG 1人(yep社員)
PG 5人(オフショア)
Shopify カスタムアプリの開発
契約: 受託
言語: PHP
ブリッジエンジニア: 1人(yep社員)
PG 2人(オフショア)
モバイルアプリの開発
契約: 自社
言語: Unity, C#, PHP
ブリッジエンジニア: 1人(yep社員)
PG 3人(オフショア)
Webアプリの開発
契約: 受託
言語: PHP
ブリッジエンジニア: 1人(yep社員)
PG 1人(オフショア)
Webアプリの開発
契約: 受託
言語: PHP
ブリッジエンジニア: 1人(yep社員)
PG 3人(オフショア)
Webアプリの開発
契約: 受託
言語: PHP, C++
ブリッジエンジニア: 1人(yep社員)
PG 1人(オフショア)
LINEミニアプリの開発
契約: 自社
言語: PHP
ブリッジエンジニア: 1人(yep社員)
PG 3人(オフショア)
Shopify カスタムアプリの開発
契約: 自社
言語: PHP
ブリッジエンジニア: 1人(yep社員)
PG 2人(オフショア)
モバイルアプリの開発
契約: 自社
言語: Swift, Kotlin
ブリッジエンジニア: 1人(yep社員)
PG 4人(オフショア)
振り返ると9つもの案件をこなしていました。そのほとんどがとても苦労しました。
1. 言語の壁
微妙なニュアンスが伝わらない。これが伝わると3倍は開発スピードが上がる。
例えば
検索条件でAは前方一致だけど、Bは部分一致にして
と翻訳ツールを使うと
In the search condition, A is a prefix match, but B is a partial match
これだと仕様を間違って作られる可能性があります。英語ペラペラの自分が見てもこれで理解しろとは言えない。
じゃあどうするか? 相手はPGです。そして自分もPG歴10年以上なので、SQL文で伝えます。
SELECT * FROM tables WHERE A LIKE 'put_a%' and B LIKE '%put_b%';
という感じで仕様書にバリバリ書き込んでいきます。SQL文で仕様書を書くため、全てのtableと相互関係を100%把握する必要があるため、ER図も自分で作ります。
もちろんオフショア側でも設計はできるんですが、急に辞めたりするリスクがあるため、辞めた後誰も仕様が分からない状態になり、運用保守にも支障をきたします。
2. 品質
yepで開発を行う時は単体テストをしっかり行い、その後コードレビューをPR時に行います。
大手企業ではQCチームがいたりしますが、ベトナムではテスターと呼ばれるエンジニアに任せる傾向にあり、正直品質が悪いです。そのため何度も怒り、単体テストを徹底させるyepとしての文化を根付かせる必要があります。
3. 会議の長さ
実は自分は会議がとても苦手です。特に話しが長い人。端的に言えば3分で終わるのに、なぜその説明で30分かかるのか?説明を聞いてるだけで集中力が無くなり疲れてしまいますよね。
ベトナムとの会議は通訳を介すため、通常の会議より2倍長くなります。また仕様を把握するため画面共有し動作確認する際にも通訳とのラグがあるためこれまた時間がかかります。
4. コミュニケーション
コミュニケーションもとても大事だと思っています。実際に会って、ご飯食べて、自分はこんな人間なんだよと怒ってばかりいるわけじゃないよ。とアピールすることがとても大事。それはベトナムだけに言える事ではないが、特に遠方で基本オンラインのみで仕事をしているとなるとお互いに齟齬が起き、辞めてしまう事があります。
yepではブリッジエンジニアも複数人経験し、トライアンドエラーを繰り返してきました。もし開発案件でオフショアをご検討されていれば一度ご相談をいただければと思います。