オフショア開発をするなら「品質担保」と「コミュニケーション」に注意

中野氏:
オフショア開発でよく聞く失敗、または、自分自身がやらかしたことを教えてください。

斎藤氏:
MXoGmvEDTSax8fXD3ykSDg_thumb_c01.jpg
丸3年、オフショアのラボ(※)を利用しているんですが、何回か失敗はしています。
立ち上げの時がそうでした。
最初プログラマを3人アサインしました。
思ったより成長のスピードが早く、プルリクエスト(※)がバンバンとんでくるんですよ。

 ※ラボ:ラボ型契約。プロジェクト単位ではなく、依頼企業専属のエンジニアをつける契約形態。長期的にチームを育成できるので生産性が上がりやすい。緊急案件が発生した場合でも対応できる。

※プルリクエスト:管理者に、開発したソースコードをリポジトリに取り込んでもらうためにリクエストすること。

僕一人でレビューするのが大変で、最終的にコードの品質の低下やバグが多くなってしまいました。
その後、フランジアのQA(品質保証)チームを入れたら、品質の低下を防げるようになりました。

最初の失敗は、フランジアのQAチームを入れずにスタートしたことですね。

城倉氏:
sEvqjHhVSZCZtxZloFL3Iw_thumb_bfd.jpg
弊社はフィリピンとベトナムでオフショアをやってますが、やはりコミュニケーションロスによる失敗はありましたね。

うちは「DMM Okan(おかん)」という家事代行サービスをやっているんですが、それをベトナムのオフショアで開発しました。

おかんとお客さんがマッチングしたあと、質問を投げられるチャット機能があるんですが、一問一答形式ですぐに終わる仕様のはずが、LINEのようなチャットUIができあがってきてしまった。

他にも細かいミスはあるんですが、根本的に、コミュニケーションロスは解決しなきゃいけない。

文化的な違いが原因で認識が異なるということが起こるかなとは思ったが、うちの場合はあまり関係なかったですね。
皆さん技術力は確かなので、しっかり仕様を伝えれば大丈夫かなと。
図で解説したり、振り返りをまめにやったりすることで解決していけるかなと思います。

成功するためには、先駆者の話をとにかくよく聞くこと

中野氏:
開発の工夫、これだけはやっておけって思うことはあります?

宮内氏:
61I_9ZB5Q_OvT0o7AxHF4Q_thumb_c02.jpg
私は、チームに入った人がすぐ抜けないかがすごく心配で。
ユーザベースはアジャイル開発をやっていてその仕組みをそのまま実現したいと考えました。

工夫としてしたのは、せっかく覚えてもらったことがチームからなくならないようにペアプログラミング(※)をしています。
ペアプロをしていると、人が抜けても誰かはコードの内容を知っている状態を作れるんです。
これはやってみてうまくいったなと思います。
品質担保にも役たちますしね。

ペアプロで、品質担保と属人化問題は結構解決されたかなと。

※ペアプログラミング:エンジニアが2人で1台のワークステーションを使って、共同で開発を行うこと。

中野氏:
ペアプロってなかなかレベル高くて取り組むの難しいですよね。

宮内氏:
最初は二人だけで、慣れたら人を増やしていきました。
できるようになるまでは急ぎませんでしたね。コミットラインをひくと時間に追われるので、品質を重視してじっくり取り組みました。

横井氏:
XMnRvh5LS9C0MFTFFW8o4g_thumb_bff.jpg
僕らが始めたのは去年の10月からで、後発勢ということを利用してひたすら先行者にヒアリングをしましたね。
それこそDMMさんやユーザベースにコツをいろいろ聞きました。
なので、最初から向こうにメインエンジニアを置いて、1〜2ヶ月常駐させてチームビルディングに全力を注げたのはよかったですね。

中野氏:
なるほど、最初にメインエンジニアを置くのが成功のメソッドなんですね。

横井氏:
そうですね。向こうにも、こちらの本気度が伝わりますしね。