前記事で価格競争な話が出てきたので、勢いでオフショアな話も書いておきます。
開発分野を中国にオフショアする場合には、
- 日本の案件を、大手SIerが取りまとめ
- 設計書を日本で記述
- 実装、試験を中国オフショア
- 最終試験を日本で行う
という形になります。まぁ、3 のところが、日本の「協力会社」でも変わらないわけで、いわゆるゼネコン式になりますね。ここで、「ゼネコン式」が良い悪いかは別にして、かつ「オフショア自体は効率的かどうか」も別として、中国オフショアの成功率を高める方法を列記しておきます。私の経験から来るものなので、オフショア先によって違いは出るかもしれませんが、大体同じだと思います。
中国オフショアをするときには、第1に「単価が安い」ということでコストカット的な意味あいで出すことが多いのですが、中国のIT会社からすると、物価の差から結構な金額が入ってくることになります。なので、中国IT会社に勤める会社は、結構な高給取りです。なので、高給取りになるということは、結構な高学歴な人が多いのです。ものにとよると、日本のSEよりも中国プログラマのほうが高学歴だったりするのが普通です。まぁ、大手SIerの20代マネージャの下で、外注先のベテランマネージャが働くという「ゼネコン式」と思えば、同じことです。
さて、中国の場合は官僚主義ですから「官」のほうが圧倒的に権力があります。日本もそうですが、東大から官僚に流れるのと同じで、何かと中央に進もうとするのがステータスです。
で、中国プログラマは、高給取り&高学歴ではありますが、官僚に入れなかった人達です。勿論、自分からドロップアウトした人も多いでしょうが(ソフトウェア=理系なところなので、官僚には向かない)、最終地点がが微妙に違ってしまった人達です。
中国の教育ですが、全体主義の教育を受けるので、国策を重視します。命令に従うこと、が非常に当たり前に行われている国です。また実は民族の格差があり、中央を牛耳る漢民族とそれ以外の民族で格差があります。おそらく、小学校からの教育で民族差がでてきていると思われます。
今回は、上海での仕事だったので、なおさら「上海という都会」に出てくる地方の人という位置が彼らに用意されています。
これらをまとめると、
- 中国プログラマは「命令」に忠実である。
- 中国プログラマは、高学歴&高プライドを持つ。
- 中国プログラマは、官僚路線からドロップアウトしている(可能性が高い)。
- 中国プログラマは、国策を優先する。
という特徴があります。これらは、どこの国とやる時でも同じですが、相手の国の習慣は、自分の国(日本)の習慣とは異なることを忘れてはいけません。目的意識も違うし、価値観も違います。これは個人的な価値観ではなく、国というカテゴリに分けた時の価値観です。
あと忘れてはいけないのが、中国は「国策」として情報統制を行っているので、インターネット上の情報が自由に拾えるとは限りません。実際、今回の仕事でも日本のIT関係の情報ページを中国では読めない状態でした。また、google が撤退しているので、百度を使います。実は、IT関係の情報を得るには、かなり苦労する環境と言えます。
さて、中国オフショアの成功率を高めるためには、これらのことを踏まえて、設計なりプロジェクトを運営する(オフショアする)ことが重要です。
■決め事を「命令」として明確化する
中国の民間人は「命令」されることに慣れているので、「命令」がないとうまく動けません(逆に、官僚になれば「命令」されることが屈辱になりますが)。なので、日本からの意向を伝えるときには、明確に「命令」として決めます。
例えば「これは、1と2の方法があるけれども、どちらかやりやすい方法をやってください」という気遣いをすると却ってうまくいきません。なので「1の方法にしてくれ」と言います。主従関係を明確にするということでは、まるで犬猫の関係なのか?と不思議に思うかもしれませんが、どうも彼らは「自分で決める」こと苦手としています。
ただし、その反動なのかプライベートなことを決められることはしません。むしろプライベートが優先だったりします。ですが、ビジネスとしては「命令」で OK です。
■手取り足取りにしないが、ゴールは明確に。
「命令」をするとは言いましたが、新人ではないので「手取り足取り」する必要はありません。実は「手順」を求められるのですが、そのあたりは彼らの「高いプライド」を刺激するように「命令」を作り替えます。また、命令には明確なゴールを作る必要があります。そうしないと、彼らの「仕事」振りに巻き込まれてしまいます。彼らの「仕事」は動作する完成品を作ることではありません。彼らの「仕事」は、動かなくても「完成品を作る」ことだけなのです。なので、完成品を作るような場合には、「動作する」かつ「完成品を作る」と分けて命令を組み替える必要があります。
例えば、詳細設計書を記述させる「命令」を作る場合には、次のようにします。
- 詳細設計のフォーマットを提供する。
- 詳細設計のサンプルを提供する(この時、そのプロジェクトで動作するサンプルを記述する)
- 自己チェックのポイントを明確にする(関数名、引数名の記述など)
- 提出された詳細設計をチェックする場合は、間違いのみ指摘する(完成例は示さない)
ゴールは「間違えていない設計書」なので、4 で間違いのみ指摘します。下手に手直しする必要はありません。
この手直しの部分は、時間がかかるところですが、実は「必要経費」なのでオフショアするときに予算を見誤ってはいけません。
■高プライドを利用する
手取り足取りと同じですが、完璧な「完成品」を作るという目標を彼らに与えます。これは、一般的な中国プログラマの場合は違うかもしれません。高給取りであるというプライドを利用します。
中国プログラマは、いわゆる「人海戦術」が得意です。良くわかりませんが、手間暇かかるものも躊躇せずに手間暇かけてやります。まるで「バカのひとつ覚え」のような気もしますが、国の教育方針がそうであるような気がします。
なので、設計書の不具合や、プログラムの不具合は、中国プログラマが「自ら発見」するよりも、日本側でテストをして「チケットを発行する」という方法にシフトしたほうが品質があがります。
当然、画面も含む打鍵のテストは、日本で試験をするとコストもかかるし(派遣社員を雇ってもコストがかかる)、人員も不足することが多いでしょうから、打鍵の手順を示して中国で行い、結果を日本でチェックする、そして不具合票を日本で発行する、という手順にしておきます。
また、オブジェクト指向設計や、ある程度のフレームワークを組み込むことが可能であるならば、単体試験などの段階から不具合票を細かく発行するのも良いでしょう。中国オフショアの場合は、単体のコーディングレベルでの「高品質」は望めません。いわゆる、中国クオリティになってしまうので、日本の品質に上げるのはそれなりに手間が必要です。
■国策が優先する
小学校教育から大学教育、就職先や周りの人達の価値観、まで含めて考えると、中国プログラマが「個人主義」になる訳がありません。なので、「向上心」という曖昧なものではなく、「国策」という明確なものに従います。
日本の場合は、政治的な無関心(最近では揶揄されますが)というのは「暗黙的な了解」に従っている限りにおいてなので、昨今のような「好き勝手な」な政治手腕を発揮しようとした場合には通用しない…と思います。実際は「団塊世代」というのは、結構ひどいのではないか?と勘繰ってはいるのですが。「暗黙の了解」すら理解できない無恥なのかも。
さて、中国プログラマの場合は、「従う」という以外の選択肢がないために、自らを「従う」という立場に置きます。おそらく父を官僚に持った場合は違うのかもしれませんが、90 % 以上の人民はそうでしょう。なので、仕事の習慣として「国策」に反するものを持ってきても理解ができません。日本の常識と中国の常識が異なるために、ベースを省略することはご法度です。
「情報操作」としての国策は、実は中国のIT産業に結構なダメージを与えていると思います。なので、アジャイルなり単体の自動化なりオブジェクト指向なり、の情報をインターネットから得ることができません…と言うか、「インターネットから得る」という積極積な姿勢はありません。なので、日本のプログラマが(最近は違うかもしれないけど、人によるかもしれないけど)ネットなり書籍なりで自己学習するようなことを、中国プログラマに求めてはいけません。
今回のプロジェクトで必要な知識(オープンソースの利用など)があった場合は、先の「命令」とあわせて明確に手順化する必要があります。
中国中枢の独自なIT技術は方針として「国策」で進めれています。なので、それに沿わないものは「情報」として入ってこないし。情報として彼らは調べることをしないでしょう。君子李下に冠を正さず、ということですね。おそらく。
と、これぐらいが中国オフショアを進めるときのポイントです。では、具体的に仕事の割り振りを決めるのか。具体的にソフトウェアの開発プロセスの中でどの部分が任せら得るのか(価格競争として)、というのは後日。