Edited at

なぜ日本のソフトウェア開発の生産性が低いのか?


一般的には

よく言われてるのが、SIerの存在。自社ソフト開発がメインのアメリカに対して、SIerに任せるから、アジャイルみたいなことがやりづらい。だから問題だと。

これが一番よく言われている理由で、確かに大きな理由の一つだと思う。


几帳面な日本人

今回言いたかったこと。

日本人は几帳面で、単純作業を間違いなく、綺麗にこなす。

これは5ヶ国くらいの人とこの業界で話してて間違いないと思ってるし、アメリカに住んでた人もあの人たちは折り紙さえ折れないとよく言ってる。

ただこの几帳面さという一見強みであるこの特性がソフトウェア開発の現場では生産性の問題を引き起こしている。

例えば、コードコンプリートに書いていた自動テストをやる理由に、「手動テストは50%、操作ミス等による間違いが発生する。」

と書いてある。

これは有り得ない、一般的なSIerとして活動している日本人にとっては。

特に優秀だとされる開発会社の人たちはそれはもうかなりの精度で手動テストを行うし確証も取っている。それでもたまに漏れや考え違いがあり、90%以上の正確さはあると思う。

これがいけない。

さっき書いた折り紙の話のように日本人以外は90%以上の品質を確保するためには、コンピュータに任せるしかないのだ。どうやっても。一方で日本人は、目の前に起きた自分の作業が一番正しいと思えてしまうし、ほとんどの場合、正解だったりする。だから自動テストのメリットが弱い。

これはテストだけの話ではない。

リリース作業や、システム化など、全てにおいて、ソフトウェア作るくらいなら、マニュアル作業のクオリティを上げてやる、という職人気質?几帳面さがもたらす、ソフトウェア開発らしからぬ発想。

几帳面が悪いわけじゃないし、プラスに働く仕事もいっぱいあると思う。日本人の誇れる特性だとも思う。

例えば、一発で決めなくちゃいけないビジネス以外のスポーツなどの分野であれば、この特性はいいほうに転がると思う。

だけどソフトウェア開発はコンピュータに作業を振る仕事だ。人にやらせるための仕事じゃない。

実際のところ、この部分は開発者だけでなく、直接のユーザーやエンドユーザーについても言える。完璧を求めてしまうのだ。少しでも字がずれてたら?色がダサかったから?特定の操作でうまく動かなかったから?いろんな部分で、几帳面さを発揮し、指摘が入り、下手したらインシデントとして処理されてしまう。

これも昔みたいにコンピューターのリソースが足りず、テスト自動化ができなかった時代ならよかった。ハードウェアの性能がアップすることで、すべてをコンピューターに任せ、最初から完璧さを作らず求めず、言われたときにどんどん直していく手段をとっていたソフトウェア先進国は、最小の工数で日本の匠以上のユーザインタフェースを作りこめるテクニック、サービスを作り上げてしまった。

こんな状況で、ソフトウェア先進国と戦おうと思ったら、少し頭を切り替えて、コンピュータにもっと仕事を振ってあげません?そこで初めて、日本人の几帳面さが世界と戦える強みとして花開くのではないでしょうか?