中国のオフショア開発を使用するにあたって「案件の進捗が悪い!」「納期に間に合わない!」「単価は安いが品質が悪い!」と悩んでいる発注者の方々は多々いらっしゃると思います。
今まで2年にわたり中国開発会社への案件発注、実際の指示出しを行ってきたBSEのHMが中国開発側の特性を含めて、案件を成功させる為のポイントをまとめたいと思います。
スケジュールの面でできる限りバッファを持つこと
これは日本でも同じですが経験豊かな開発者の場合、スケジュールにバッファを持って提出してくるし、案件の品質もある程度保証できます。ただ、中国の場合、開発経験の短い開発者、またはずるずると納期いっぱいまで開発するタイプの開発者が多いです。結果として、品質の高い納品物を得られることができず、日本側でのテスト期間にしわ寄せがきてしまうことがよくあります。
当たり前のことですが社内スケジュールを立てる際、バッファを持つことはとても大事です。開発側がギリギリまで開発を行っており、納品物の品質がかなり悪くても上司に言い訳はできませんので、怒られることがないように、中国開発側のスケジュールを鵜呑みにしないように注意しましょう。
中国の重要な祝日(特別な日)を開発期間から除く
中国オフショアを使用する際に、日本と同じカレンダーでスケジュールを引くのは危険です!中国のカレンダーを確認しましょう!
中国の重要な祝日の場合、開発が完全STOPしてしまうケースが少なくありません。ここで特に注意して欲しいのは、日本と違って旧暦の新年が中国の本当の新年で、この時期になると、どんなに遠い場所で働いていても、新年の除夜までに必ず実家に帰ります。北の北京から南の広州まで2000km先で働いていても、家族の為に実家に帰って親戚と「年夜饭」を一緒に食べることは中国人にとってとても重要なことです。
※「年夜饭」:新年のとき家族の人と一緒におせち料理を食べること。
話が逸れますが、下記は最近の新年時期によく見られる「風景」です。
この風景を見ると、中国の祝日を開発スケジュール内に計算するのはどれだけ危ないのかはお分かりでしょう。
仕様を隅々まで伝達する
簡単な資料とざっくりとした仕様を開発者に口頭で1回のみ伝え「あとは出来上がったものを見て修正指示を出せばいいな」などと考えているとあとで痛い目を見ます。仕様の伝達は口頭だけだと、あとで何回も聞かれることになります。または詳細仕様書で細かい動きのところまで仕様を明確にしておかないと「この仕様は最初話にならなかったので、工数追加できますか」「この仕様は最初に話した内容と違うよ」というように、開発側と発注側が揉めることになり、結局損するのはやはり発注側です。現在はスカイプなどのテレビ電話で仕様の伝達手段がかなり楽になりましたが、可能であればメールなり、ほかの管理ツールなり、より詳細な資料を作って開発側に送った方がいいです。
もう一つの問題としては「報連相」を行うことがあまり無い開発者、プライドの高い開発者は、細かい仕様の不明点があってもSEに聞かず、自分の好きな簡単な方法で実装します。発注側の対策としては、開発途中のものを実際に確認して仕様を繰り返し確認するべきです。どんなに細かい仕様でも「まぁわかるだろう」ではなくしっかり開発者に伝えるべきです。例え考えられなくても、定期的に開発側に「仕様上にまだ不明点があるのか」を聞くこともとても大事です。
案件進捗と品質を常にチェックすること
「開発側の納品が完了してからテストを始めれば大丈夫だろう」と考えるのは大きな間違いです。しっかりした納品物が得られるケースもありますが、中にはちゃんとテストもせず直接ぼろぼろのアプリを納品してくる開発者も少なくありません。中国開発側の品質認識が低いのは一般的な現象です。「開発途中段階も油断するな!」ということを肝に銘じておかなければならないです。
開発期間での対策としては当たり前のことですが、細かい単位で成果物を確認することで開発スケジュールが遅れているのか、品質がどのレベルかなどを把握することができます。品質が低い場合も「いつかなおるだろう」ではなく明確に文面にして伝えるべきです。また上にもあるように期間にバッファを持つことで、修正期間も長く取ることが出来、より良い納品物を得られることが出来るでしょう!
案件の管理ツールを活用すること
従来だとメールなどでのやり取りが一般的な方法だと思いますが、バグ修正が多い時、仕様がうまく伝わない時、手元の管理ツールを活用するのもいい方法です。
プロジェクト管理ツールは仕様の伝達、機能の説明、バグ項目の登録など様々なことに使用できるのでとても便利です。メールでやり取りした場合、メールが多くて埋まってしまったり、課題を洗い出すことなどで結構時間がかかってしまいます。プロジェクト管理ツールだと、タスクを一つ一つ管理できるので中国開発側でも理解しやすいです。あとこれだけの課題があるから急がなきゃならないとか、これくらいのタスクならいつまでにできるなどお互いの理解にもすごく便利です。またツールにもよりますが、バグのキャプチャーも貼れるので実際の現象の理解にも役立ちます。(再現確認が出来ませんということが多々あります…)課題の優先度やマイルストーンもつけられるものがあるので、案件の進行的にはとても効率がいいと思います。オフショア開発の際には導入してみてはいかがでしょうか?
他にある重要なポイントも随時追加していきます。アドバイスがある人はどんどんコメントお待ちしています!