今日は開発の話です。
開発の現場でも海外のオフショアを利用した開発が盛んになってきてると思います。
先日飲んだ知り合いがやってる仕事は、某料理宅配サービスのサイトで
元々は中国で作っていたそうです。
それが納品されたらまったく動かないので、知り合いが受注して回収しているそうです。
こういう話って意外と多くないですか?
少し話が変わりますが、日本ってあまり世界に名を馳せるソフトって存在しないですよね。
日本って製造業も結構発達していて高度経済成長期を支えたと思います。
自動車とか家電とかまさにそうだと思います。
その感覚がソフト開発においては、ちょっと誤解を生んでいるんじゃないかと思います。
そう思っているときに読んだ本がこれ
↓
この本には、
ソフトウェア開発というのは製造じゃなくて、デザイン(設計)だ
と書いてあります。
それはどういう意味かというと、自動車とか家電とかデザイン・設計して、その設計図を工場に渡して製造します。
それがソフトウェア開発に当てはめると、まず製造の部分ですが、
Windowsの場合は、Ctrl + cとCtrl + v
Macの場合は、Command + cとCommand + v
そうなんです、ソフトウェア開発においては、プログラムをコピペしたら製造の部分は終わりなんです。
じゃぁ、ソフトウェア開発って何かというと、設計なんです。
どういうプログラムを作るかは紙に書いたりしますが、プロジェクトマネージャーなので設計書とか定義書とかいろいろ書きますが、プログラマーからするとそれはあくまで概要で、大体そのとおり動かないことが多いです。
現役のプログラマーが書いた設計書なら動きますが、開発経験のないSEとか書いたのってほんと役に立たない。
詳細の設計は実際にプログラムをしながら詰めていきます。技術的にできないこととが作ってるときにどんどん出てきますから。
なので、ソフトウェア開発は芸術家が油絵の具をキャンバスに乗せながら、少しずつ調整して作品を作っていく行為に似ています。
プログラムを書く = 本当の設計
になります。
中国や海外でオフショアが失敗するのは、書いた設計書通りに海外の工場に作らせようとしますが、ソフトウェア開発自体が設計であるため、担当するプログラマーによって出来上がるものの質が変わります。
工場で大量生産するような感じではソフトウェアができません。