オフショア開発について

オフショア開発について、自分の経験を元にして少し話していきたいと思います。まずは、オフショア開発を依頼する段階での確認事項について、です。最後にも書いていますが、オフショア開発が悪いとは思っていません。ただ、下記の事は当然考慮していますよね? という確認です。一般的な情シスがいる会社なら当然行っているであろう業務ですが、いない会社の場合、苦労するのではないでしょうか。

はじめに

私は独学で単独開発を経験していただけでした。オフショア開発のマネジメントに関わった当初は右も左もわからず、初めの打ち合わせの時は「こんなものか」と思っていたのを今でも覚えています。そこから実際に私が先頭に立って開発状況をみていく内に「これは不味いぞ」と直感して、開発方法や作りこみ方など、他社のシステムや自分の経験だけではなく、いくつもの著書 を読んで随時自分の行動・やり方を含めて修正を加えるという状況でした。結果、9月にデータを受け取って、10月に仮運用を走らせながら、11月にはできている・できていない所を社内フローや資料を整理してまとめ上げた状態です。結果、書き出した訂正依頼の内容は130件を超えていました。それでも、今振り返って見るとまだまだ社内フローに対応し切れていないor 当時の私ではそこまで読み切れていなかった状態だと反省しています。そこから1年と少し、ようやく大体の機能がまともに動く状態になりました。ですが、そこには未だにバグもフローの食い違いもあります。私自身の見込みが甘かった事も一因です。当時の私の力量不足であった事と痛感します。問題はそこだけではないとも痛感しています。
根本的な問題がある為です。その影響で、ユーザーから上がってくる要望にも答えられず、そもそもまともに動がない事もあるのです。

オフショア開発は難しい

 オフショア開発は成功率10%(資料によっては30%)と言われるほど、低い事が現実です 。オフショア――つまり、日本国外にシステム開発を依頼するというのはどういう事なのでしょうか? 相手との文化が異なり、性質が異なります。日本人であれば「やってくれるだろう」「ここまでやるはずだ」などと考える気持ちもありますが、相手からすれば「指示がなかった」「具体的でない」になります。「言った」「言っていない」は開発上問題ではなく「相手に通じているか、否か」でしかありません。相手の背景を理解した上で相手が理解できるまで説明して、実際に正しいものなのかを最後に確認しなければなりません。確認まで行っていなかった結果、「イメージと違う」という事が起きるかもしれません。使っていて「想像よりも使いにくいもの」になっているかもしれません。これらを踏まえた上で、管理し確認していかなければいけないのです。

 ですから、オフショア開発は思っている以上に難しいのです。ただ、伝えれば話が通じる相手ではありません。その相手に対して、伝えて理解して貰わなければならないのです。この部分を理解せずに、「言ったからやるだろう」という考えは子供の言い訳レベルの話です。本当に理解してくれましたか? 相手が作ってきたものを確認して、それは正しいものだと理解できますか? あなたが言った事は明文化、又は図示できるレベルまでその業務とフローを理解していますか?

オフショア開発は安い。それは本当に?

 価格は安い。

 では、少し例え話をしましょう。

 あなたは車を買おうと検討しています。では、価格が安いだけで車を購入しますか? 移動手段として購入するのであれば、スクーターの方が安いです。車ではなく、そちらを購入してはいかがでしょうか? あ、荷物を載せたいですか。でしたら、軽トラックは如何でしょうか。スクーターや軽トラックを買わない選択をした方は、何か理由があるのでしょう。デザイン、安全面、操作性やコックピットの質でしょうか? 

 では、なぜ車などは安いものを買わずに、システムは会社の根幹に関わるものなのに「安いから」という理由でオフショア開発を選択するのでしょうか? また、開発自体は安くなっても社内人件費も含めると安くなっていない事もあります。文化や背景が違うという事は、それを理解してもらう為のコミュニケーションや資料の作成が必要になってきます。では、日本人に対しては必要ない(又は少なく済む)事がオフショア開発では綿密に準備をして挑まないと痛い目をみます。それを理解した上でその金額で良いと考えていますか? 社内人件費の事は当然計算された上での判断、という事ですね? 世界中で優れたエンジニアは金額が高騰しています。今、安い金額でやっているエンジニアの技術は、その会社の体制は、本当に良いものでしょうか? 単純に金額だけを比較して、技術もなく体制も弱い会社に依頼しているのではないでしょうか?

 金額は単純に提示されたものだけで決まるものではありません。その会社の技術、体制やエンジニアの腕前など、様々な要素が関わってきます。ですから、最初の内は博打になる事もあり得るでしょう。ですが、国内で開発すれば何とかなったものでも、オフショア開発では資料作りで奔走して社内人件費が高騰するかもしれません。それを見越した上で、本当に安く仕上がりそうですか?

あなたの事前準備は大丈夫ですか? 問題ない? 嘘でしょ?

 ここまで考えてオフショア開発を選択したのであれば、確認します。あなたの手元資料で大丈夫ですか? コンセプトも何もない。ただ、エクセルの画面を印刷したものとエクセルデータだけで大丈夫ですか? 業務フローの説明は口頭ですか? 言語が話せてもそれを本当に理解しているのでしょうか? 理解していなければ相手の責任ですか? 「理解していない相手が悪い」と言っても自分の首を絞めているだけだというのを理解していますか? どのような相手であれ、コミュニケーションは理解して貰わなければ意味がありません。言葉のキャッチボールをして、お互いに言語・内容を理解した上で進めなければ、話がかみ合わないだけです。これはオフショア開発だけではありません、普通の会話でも同じことです。それはちゃんと理解していますか? で、要求仕様書程度は書き出しましたか? 現在の業務のボトルネックの検討を行って、それらを整理して整合性は取れていますか? 思いつきだけで依頼していませんか? 考えは本当に纏まっているのですか?

 改めて聞きます。あなたはオフショア開発を行いますか? それでもやる、と決めたのであれば最後まで責任を持ってやってください。中途半端に丸投げして、責任だけを誰かに押し付けるような事はしないでください。オフショア開発で開発者の責任にするのも構いませんが、最終的には相手に理解されなかったあなたの責任です。

最後に

 私は別にオフショア開発は悪だ、とは思っていません。ただ、ノウハウもなく安いから、という理由だけで飛びつけば痛い目に合うだけですよね、とは自分の経験を通して思うだけです。何のことはない部分のシステム開発だと問題ないのですが、基幹部分や顧客との関わりあるシステム作りで情シスや責任者不在の状況下で行うのは無謀を超えてただの馬鹿なのじゃないか、と思うだけです。ただただ、自分が関わる当初から感じていた予感は当たって、それら全て自分が背負うことになった現状、笑う気力すら削がれてしまいました。

「終わらない開発は病む」なんてのを言われたことがありましたが、報告するバグと解決するバグが3対1とかもあったりしたので、真面目に取り組めば取り組むほどに疲弊していったのは事実です。

今なら当時の自分に対して、「あぁやればよかったのに」とか「ここまで検討しておけば納まっていた」とか考える事もあります。ただ、当時を振り返ってがむしゃらにやってきた事、自分自身が業務にある一定レベルまで関わってきたが故にある程度予測できた事で何とかなったのか、と思っています。尤も、自分で自分を評価しても仕方がないですし、将来自分の後を継ぐ人から私の事をどう思って評価するのか、に託しておく事にします。

伝統建築のデータベース構築、3D化や伝統建築の調査等をしております。サポート頂いたお金はそれらに使用させて頂きます。お気に召しましたら、サポートのほど宜しくお願い致します。