ぺぷしのーげん

アプリケーションエンジニアによる雑記ブログ

オフショア開発は本当に安上がりなのか?本当に全体最適化できているのか?

f:id:hazakurakeita:20150901231347j:plain

ぱくたそ - フリー写真素材・無料ダウンロード

 主にアジア諸国のエンジニアを使って開発を行うオフショア開発。自動車や家電を人件費の安い中国、ベトナム、インドなどで製造すると同じように、ソフトウェアやWeb開発もそこに任せてしまおうというものです。しかし、これ本当に安いんですかね??

 

工場は生産、ソフトウェアは開発

そもそも工場での作業とソフトウェアの開発は、求められる人材が全く違います。工場での作業は機械化され、ルーチンワーク化されており、言われた通りに作業をすればモノは設計した通りに作られていきます。しかし、ソフトウェア開発はそうはいきません。もし、日本から要件定義と仕様を投げるという形をとると、結果はなかなか悲惨なことになります。機械化もルーチンワーク化もされていない海外の工場に生産を投げているのと同じです。しかも日本人の監視外でです。

 

ここで日本人を増やすと泥沼の展開に

要件と仕様を投げるだけだと悲惨な成果物が出てきます。すると、受け入れ側の日本は慌てふためきます。テストを強化したり、仕様書の詳細化を進めたりと日本側の仕事量が爆発的に増えていきます。そして日本の担当チームは会社に「人手が足りません!」と叫び始めます。

しかし、ここで日本人を増やすと泥沼の展開です。人を増やしても現地から上がってくるソフトウェアの品質は変わらないからです。ただただテストや仕様書の厳格化による手戻り率が増えるだけで、会社からするとコストは増大、品質は横ばいという最悪の結末を迎えます。現地のエンジニアを管理するために日本人を増やすという選択は正気の沙汰ではないです。

 

 じゃあどうすればいいのよ?

王道の方法というのはありません。現に僕も色々試しているところです笑。実践していない方法も多いですが、今考えているのは次のような方法があります。

  • 仕様書が厳格である必要はない。テスト仕様書を厳格化せよ。
  • 必ず設計せよ。設計は現地がやってもいいが、必ずクラス図やシーケンス図を日本側でチェックせよ。
  • 必ずユニットテストを現地エンジニアに書かせよ。
  • 進捗はテストケースが何ケース通過しているかで把握せよ
  • シナリオテストは自動化せよ。

ばらばらですみません…。書いてみると色々と思い浮かぶものですね。共通して言えることは、とにかく日本側の作業量を減らすこと。現地がちゃんと仕事するように監視しようとするのではなく、環境を作る・制御下に置くことを意識すること。

とにかくオフショア開発をするのであれば日本人は最少人数にしなければ意味がありません。これで「人手が足りない!」という声が上がった場合は、担当の日本人がマネジメントできていない証拠です。おかしなことに、すぐ人手が足りないという人が大半で、やり方が悪いと考える人って少ないんですよね。それとも弊社だけ?汗

 

品質が悪いのではない。文化と価値観が違うだけ

よくオフショア開発は安かろう悪かろうと言われます。よくもまあこんなバグだらけで平然とリリースできるなって気持ちも分かります笑。しかし、世の中にはバグがゼロのソフトウェアなんてありません。AndroidやSwiftだって、「そもそも関数にバグがあって開発できないんだけど?」なんてことあるじゃないですか?バグはゼロでなければならないという日本人の価値観こそ世界からみれば過剰品質なのかもしれません。彼らはバグが見つかれば直せば良い、とりあえずユーザーが求めてることはこれで達成できますよ、という感じでしょうか。確かにユーザーが使い始めると色々と注文や修正が入りますからね。その前にバグをゼロまで作り込むのって効率悪くないか?と彼らは思っているのかもしれないですね。