デスマーチ

泥沼というのは、自分がはまり込んでみるとかえってよくわからないものです。

ソフト開発の特殊性

まず何より大事なことは「デスマーチを止めよう」という気構えです。おかし いことはおかしいと言うことです。「ソフト開発なんてものは徹夜が当たり前 だ。怠け者は社会人失格だ」なんて言う狂人のたわ言には耳を貸さないことで す。

プロジェクトメンバーが皆徹夜して、会社に何泊もしながらボロボロになって 仕事をしているような所にいると、これは案外難しいことです。プロジェクト のために身を捧げている人に向かって「あんたはバカで無能だ」と言うことだ からです。しかし言わなければいけません。 [1]

しかし、どこの世界にもバカで無能な人間と優秀な人間はいます。なぜソフト 業界だけこうなってしまうのでしょうか。それはソフトウェア開発の特殊性に 原因があります。

ソフト開発の生産性

ソフト開発という仕事は、個人の能力によって生産性に大きな差が出ます。能 力の低い人と高い人の差は10倍とも言われています。「10倍も生産性が違う」 というのは信じられないかもしれませんが、「ベテランが仕事の片手間に1時 間で書けるPerlスクリプトと同じ処理をするプログラムを作るのに、新米プロ グラマだと1日(10時間)かかる」と言えば、何度か経験することです。あるい は「1日で書いたプログラムのバッファオーバフローがらみのバグ取りに1週間 以上かかる」なんてこともよくあることです。バッファオーバフローなどとい う基本的なバグを決して混入させないベテランなら1日で完成させられるプロ グラムが、バグ取りのために10日かかったということです。開発期間はプログ ラマの腕によって10分の1に短縮されるのです。

ですから、ソフト開発の期間の見積は、他社はまったく当てになりません。 「A社は10日でできると言っていた」といっても、もしA社が最高レベルで自分 の社が最低レベルだったら、自分のところでやったら100日かかるわけです。 ソフト開発では、技術者の質を考えずに単に人月だけで計算すると予想を大き く外れてしまいます。

ソフト開発の対価

生産性は人によって、あるいは社によって大きく違うにもかかわらず、ソフト 開発の期間見積もりはたいてい人月で数えられます。これは大間違いです。 「誰の」人月なのかを考えないといけません。

困ったことに、(特に受注ソフトでは)ソフト開発の対価は開発期間で測られて しまいます。B社だと開発に100日かかるソフトをA社が10日でできたとしても、 それに対して同じ対価を支払ってはもらえません。本来ならベテランは新米の 10倍の給料をもらえてしかるべきなのに [2] 、実際にはそんなことはほとんどありません。

こんな状態が続くことで、開発費用のダンピングが始まります。B社で10人月 と見積る仕事は、A社は1人月でできるわけですから、価格競争でB社が勝てる わけはありません。A社が1人月200万円などという非常識な高コストで見積っ たとしても、B社は1人月20万円というあり得ない低コストの見積りを出さざる を得ないのです。A社はちょっとボーナスを我慢するだけでいくらでも見積り を下げることができるのに対して、B社はすぐ労働基準法が問題になるレベル に突入します。

ソフトウェア開発の対価を計算する場合には、人月に単価を乗じて計算しては いけません。あるいはこう計算するなら、単価がとんでもなく高額になっても 驚かないことです。知識と技術と能力の集積に対してお金を払っているのであ り、労働時間に対してお金を払っているのではありません。

開発の質

ソフトウェア開発が他のモノの開発と違う部分が一つあります。それは、開発 者の能力がすべて「開発時間」あるいは「コスト」に効いてくることです。 もちろん一部の最先端ソフトには例外もありますが、大部分のソフトはそうで す。

普通のモノでは技術者の能力は出来てくるモノの性能に関係します。例えば優 秀な技術者が設計したエンジンは20%効率が良くなるとか、CPUの処理が20%速 くなるといったようにです。しかし、多くのソフト開発ではこうした性能要件 が存在しません。ウェブの買物カゴの処理が20%遅くても誰も困りませんし、 集計処理に今まで3秒かかったものが2秒になってもあまりうれしくありません。 メモリもハードディスクも多少余計に使おうがほとんど困りません。

コンピュータの高速化に対して、我々が本当にしたい処理というのはそれほど 増えていません。CPUの速度はこの10年で100倍になりましたが、従来と同じア プリケーションならば扱うデータ量はそれほど増えてはいません。10年前から 会計処理をPCでやっていたとして、同じ会社で扱う伝票の数が10年で100倍に 増えたなどという景気のよい話はなかなかありません。だから、同じように会 計処理をPCでやるなら、コンピュータの処理速度というのは余りに余っている わけです。

そうすると、ソフトの価値は何で測ればよいのでしょうか。「処理が速い」と か「メモリを喰わない」とか「ハードディスクが少なくてすむ」といった性能 要件がどれも意味をなさなくなった今、関係してくるのは「使いやすさ」とい う漠然とした総合指標を除けば「機能の多さ」と「信頼性」、そして「安さ」 です。「機能の多さ」というのは量の問題ですので、開発期間をかければいく らでも増やすことができますし、信頼性は十分に期間をかけてテストをするこ とで減らすことができます。

つまり、ソフトというのは時間さえかければいくらでも良くなるということで す。「世界最高性能の自動車エンジン」はヘボ技術者をいくら集めても完成さ せられませんが、「世界最高性能のワープロソフト」はヘボ技術者でも時間さ えかければ [3] 完成させることができます。なぜなら、今やワープロソフトの「性能」とは機 能の多さとバグの少なさであり、それ以外のことは問題にはならないからです。 [1]

まとめます。ソフトの価値は開発量だけで測られます。開発量に現れない「質」 の問題はソフトには存在しません。ソフトの場合は他のモノとは違って、時間 さえかければいくらでも良いものが出来てくるのです。

まとめ

ソフト開発者の能力は、単位時間あたりの開発量だけで測られます。なぜなら、 ソフトには「開発量」以外の付加価値をつけることができないからです。いく ら優秀な人でも、他の人にできないことができるわけではありません。単に他 の人にとって時間がかかることがすぐできるというだけです。

ですから、ソフト開発では能力による差別化がしにくいのです。「それは私に はできない」とは言えません。なぜなら時間さえかければどんなソフトでも開 発できるからです。

ソフト開発ではベテランと新米には10倍の能力の開きがあります。本当はこれ はソフト開発に限らず、どの業界でもそのくらいの開きはあるのです。しかし 他の業界では、その差は「新米にはできないような仕事ができる」という結果 になって表われます。ソフト業界の問題は、新米でも10倍の時間をかければベ テラン並のものが出来てしまうことにあります。

ソフト開発を「人月」で測る限り、徹夜することでその人の能力は向上します。 1日8時間働く人に対して、1日16時間働く人は2倍の能力を持っていることになっ てしまいます。自分の能力を倍増させるには、最先端技術の勉強も何も必要な く、単に倍の時間働けばいいだけです。だから「難しいことを考えないで、と にかく徹夜して仕上げよう」となってしまうのであり、いつまでたっても徹夜 が続くのです。


  1. 多くの場合、「使い勝手」すら問題になりません。ワープロに使い勝手を求めるようなコアなユーザは今やごくわずかです。でなければあんなソフトがシェアをとれるわけがありません。 ↩︎