こんにちは。テクニカルディレクターのなつきです。
気づけば夏も終わり、LIGに入社してオフショア開発に携わってから2年以上経過していました。早いものです。
タイトルのとおり、今回の記事はオフショア開発におけるコミュニケーションコスト削減についてです。
コミュニケーションコストは可視化しにくいので見過ごされがちですが、オフショア開発は国内での開発よりも明らかにコミュニケーションコストがかかります。これをいかに減らせるかが、オフショア開発を円滑に進めるカギといっても過言ではないかもしれません。
この2年間、どうにかこれを減らせるように試行錯誤してきました。その結果をぜひお伝えできればと思うのですが、その前にまず、どうしてオフショア開発はコミュニケーションコストがかかるのか考えてみました。
目次
オフショア開発でコミュニケーションコストがかかるのはなぜ?
理由は簡潔にいうと「言語や文化の違い」です。そこにリモートという条件も絡んでくると、さらにコミュニケーションの難易度が上がります。
言語の違い
弊社のオフショア拠点はフィリピンのセブです(最近ベトナム拠点も立ち上がりました! こうご期待!)
彼らの母語はセブアノ語です。日本語はほぼ話せません。私たちは英語を使ってやりとりしていますが、多くのフィリピン人にとって英語は母語ではなく、習熟度に差があります。ネイティブと遜色ない英語力の方もいれば、そうでない方もいます(とはいえ、英語で高等教育を受けてきた方ばかりなので、みんな私より英語上手です)。
お互い第二言語を使ってやりとりすることは、母語同士の会話よりもストレスがかかります。何を言いたいのかすぐに理解できなかったり、誤解が生じたりすることもあります。
文化の違い
ここでいう「文化」とは、習慣や常識のことです。フィリピンも日本も互いに違う文化を持っており、どちらも等しく尊重されるべきもの。
LIGに入社して最初の半年間はセブにいたのですが、しょっちゅう日本との違いを感じてカルチャーショックを受けていました。
例えば、フィリピン人は家族をとても大切にするので、基本的に残業はせず颯爽と家に帰ります。その他にも、チームの誰かの誕生日のたびにホールケーキとピザを用意してみんなでお祝いしたり、クリスマスにはとても気合いの入った盛大なパーティーを開いたり……。なんだかんだ毎月賑やかなイベントがあった気がします。楽しかったなぁ。
しかし、このような文化の違いは、ときとしてコミュニケーションギャップの原因となり得ます。残業に対する意識の違いなど、お互いの文化に理解を示しつつ、すり合わせていく必要があります。
物理的な距離と心理的な距離
リモートでオフショア開発となれば、当たり前ですが物理的な距離が私たちの前に立ちはだかります。基本的にはSlackでやりとりしていますが、直接会って話せば2言3言で足りることも、チャットでは文章をタイプし(ときにはスクリーンショットを添付し)、相手の返信を待たなくてはなりません。
チャットで説明しにくい複雑な内容であればオンラインミーティングを実施しますが、事前に参加者の予定を調整するなど、面倒な段取りが発生します。ただし、これは日本人同士のリモートワークでも同じですね。
オフショアの場合はこれに加えて、上記で述べた言語や文化の違いからくる心理的な距離が存在します。縮められるように日々努力していますが、これを払拭するのは容易ではありません。
コミュニケーションコスト削減のためにできること
上記で述べた要素が、オフショア開発におけるコミュニケーションコストを増大させてしまいます。しかし、少しの努力と工夫で削減することは可能です!
コミュニケーションコスト削減のために私が普段心がけていることを3つ、紹介します。
わかりやすい開発指示書を作る
「わかりやすい開発指示書」というのは、「日本語がわからない人でも開発に困らない開発指示書」ということ。当たり前のようで、意外な盲点です。仕様書、設計書、テスト項目書など、開発に必要なドキュメントはすべて該当します。
自分がもし、全く知らない外国語のシステムを開発することになったら……と想像してみてください。文字の読み方も文法も全くわからないような外国語です。例をアラビア語にしますが、韓国語でもロシア語でもなんでもいいです。
画面名やコンテンツはぜんぶアラビア語。ソースコードのコメントもアラビア語。そんな中、開発指示書がこんな感じだったら。
- “قائمة العملاء”画面の”الاسم بالكامل”項目の下に”رقم الهاتف”項目を追加する
対象の画面にそもそも辿り着けそうにないです。「修正箇所がわかりません」とslackを送って返事を待つか、文字列検索と翻訳アプリを駆使して地道に探すしかない。たぶんここだろうと思ってエイヤで修正したら間違っていて差し戻し、なんてこともあり得る。想像しただけでつらいですね。
上記のように、不親切な開発指示書は、膨大な質疑応答と差し戻しのリスクとエンジニアのストレスを生みます。丁寧にドキュメントを作ろうとすると、それなりに時間をとられますが、結果として後々のコミュニケーションコストを大きく減らすことができ、スムーズに開発が進みます。
現在携わっているプロジェクトの設計書フォーマットは、必ず修正前後の画面イメージと、画面遷移方法(できればスクリーンショットかムービー)を添える形になっています。そして、画面名や項目名などは以下の書き方で統一しています。
さっき挙げた例に適用してみましょう。意味がわかるだけで、読むときのストレスが減りますよね。
- “قائمة العملاء”(顧客リスト)画面の “الاسم بالكامل”(氏名)項目の下に “رقم الهاتف”(電話番号)項目を追加する
上記は最低限でしかないので、開発要件に応じて「これは日本語がわからなくても理解できる内容か?」と自問自答しながらドキュメントを作るよう心がけています。
質問しやすい・答えやすい制度設計
基本的にはSlackのチャットでやりとりしていると上記で述べましたが、開発に関する質疑応答ってチャットだとやりにくいんですよね。ぱっと思いつくだけでもこんなデメリットが。
- 見辛い
- 図解しづらい
- 連投しづらい
- スレッドが長くなると質問が流れてしまう
- どの質問が解決済みでどの質問が未解決なのかわかりにくい
- 「質問いいですか?」っていう前置きちょっと面倒くさい
質問や確認事項は、チャットではなく、それらを蓄積できるツールでやりとりしたほうが良いです。
私の場合、こんな感じ↓のシンプルなスプレッドシートを用意しただけで、やりとりがとてもスムーズになりました。なにか図解したいことがあればシートを追加して図解ページを作ります。
起票者 | ステータス | 質問 | 回答 |
---|---|---|---|
なつき | 解決済 | 目玉焼きはソース派ですか? 醤油派ですか? | ケチャップ派です |
これだと、相手の返答を待たずにどんどん書き込めるし、前置きや挨拶も省けるし、どれくらい確認事項が残っているか一目瞭然です。後々、反省会などでこのシートの質問数や質問内容を振り返ったり、似たような案件を行うことになった場合に横展開しやすいのもメリットです。
チケット管理ツールなどを使ってもっとスタイリッシュに管理できる方法があるような気もしているので時間があったら調べたいと思っていますが、とりあえずこんなシンプルなスプレッドシート1つでもコミュニケーションコストが削減できたよという一例です。
毎日コミュニケーションできる場を設ける
なんだかんだオンラインミーティングで画面共有しながら話すのが一番早いとわかっているのですが、参加者全員のスケジュールの調整など、開催するまでの段取りが面倒で躊躇してしまうんですよね。
そのため、顔を合わせてさくっと相談できる場をあらかじめ毎日用意しておくのがいいです。朝会でも昼会でも夕会でもいつでもいいので、とにかく毎日相談できる時間が確保されていることが心理的安全性につながります。
そもそも、毎日顔を合わせて会話すること自体に大きな意味があります。違う国にいてそれぞれもくもくと作業をし、なにか用があったときだけチャットでやりとりでは、寂しいじゃないですか。心の距離は離れる一方です。
現在携わっているプロジェクトでは、毎日朝会を行っています。コンテンツはこんな感じ。
- 出欠確認
- 昨日やったこと
- 今日やること
- 質問や共有事項
特に質問等なければ15分程度でさくっと終わります。「セブの天気はどう?」とか、「連休どっか行った?」とか、「お誕生日おめでとう!」とか、ちょっとした世間話を挟むと平和な気持ちで一日をスタートできます。
まとめ
オフショア開発を行う上で、どうしても立ちはだかるコミュニケーションコストの問題。しかし、やり方次第で削減することは可能です。
これからも試行錯誤しながら、よりよい開発チームにしていければと思います。最後まで目を通していただき、ありがとうございました!
世の中が落ち着いたらまたセブに行きたいなぁ。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。