ソフトウェア開発の不思議

なぜよくあるソフトウェア開発ではきっちり要求を聞いて、かっちり仕様を決めて、その通りにカチカチに固めた開発をしようとするんだろう。
例えばなんですけど、僕がプラモデルをくみ上げるとき、最初から一つ一つきっちり部品を組むと必ず失敗していました。自分が不器用なことももちろんあるのだけれども、間違った部品をはめてしまって外すのに苦労した、なんて思い出ないですか?なのでそのうち最初は緩めに組んでおき、全体的に固まってきたらちゃんと組むという手順が効果的だと気づき、そうするようになりました。世の中ではこれを仮組みって呼ぶらしいです。
いや仮組みくらい、だれだってやってると思うんですよ。最初からうまく作ろうとしたってうまくいかないわけですから。

この「最初からうまく作ろうとしたってうまくいかない」という教訓はソフトウェア開発にも当てはまるって、いろんなプロセスで繰り返し語られているわけですけど、どうも一つ一つカッチカチにしようというフォースが流れている現場って世の中にたくさんあるのってなんでなんすかね。「契約」という約束を履行しなければならない、というフォースのせいでしょうか。だとしても、その契約の中に遊びがないのはなんでなんだろ。案件が取れなくなってしまうからだろうか。遊びがない分プロジェクトが失敗するリスクが高まります、なんてコンペとかで話でないんだろうか。
ユーザーも最初から作りたいものが完璧にかっちりわかってるんだったら、自分達でプログラマ雇う方が安上がりだからそうすると思うんだ。けど、完璧にかっちりわかってないからSIに発注すると思うんだよ。「システムの改善点を提案してください。」なんて言葉は、システムをより良くしたいから、と言うよりは、ほんとのところこのシステムっていいものかどうかわかんないから、なんだろね。
「最初からきっちり作りたい症候群」という病名でもつけてみようか。