われわれは100倍、速く書けない

西川 ええと……(笑)。受注生産って、人数に比例してもうけるじゃないですか。でも、われわれは人の100倍は速く書けると思っている。じゃあ、その人に1カ月、その分を払ってくれるのかというと、受注じゃ絶対、無理でしょう。でも、ソフトウェアだと可能。
(中略)
西川 同じ「エンジニア」という職種でも、生産性は100倍くらい違いますよね。コードをその人がただ書くという部分だけじゃなくて、例えばチューニングされたコードをすぐ書けるなら、結果的にシステムが速く動く。遅いコードを書いて100台マシンを使用するとなると、いろいろな人がシステム構築にかかわらないといけない。でも同じ条件で100倍速いコードを書けば、1台のマシンで済む。運用も圧倒的に楽になる。だから、生産性はそのくらい変わってくると思います。


第5回 「われわれは100倍、速く書ける」――PFI 西川徹
http://lab.jibun.atmarkit.co.jp/entries/805

なんか私には西川氏の言う「100倍速く書ける」の意味がさっぱりわからない。100倍速くコーディング出来るのか、それとも、100倍速く動作するコードが書けるのか。最初の段落では前者のように思えたのだけど、そのあとの段落では後者のようにも思える。


そもそも本当に100倍速くコーディングが出来るなら、そのプログラミング能力だけで普通のエンジニアの100倍の稼ぎがあるはずだけど、そんな人はこの世に存在しない。Googleのエンジニアの平均年収ですら、日本のエンジニアの平均的な年収(年収700万円前後だと言われている)の4倍程度だろう。


そりゃ、プログラミング歴数年の初心者プログラマと比べりゃ1/100倍の時間でコードが書けるのかも知れないけど、そもそもそんな初心者プログラマはまともにプログラムすら書けないわけで、せめてプログラミング歴10年以上の普通のプログラマと比較して話すべきじゃないのかな。


あと、100倍速く動くプログラムが書けるの意味だとしても、初心者プログラマ比じゃなく、普通のプログラマと比較して欲しいと思う。プログラミングにそんなミラクルがあるかのように言うのはやめてもらいたい。この業界を知らない人が勘違いをするじゃないか。


プログラミングコンテストで上位に来るTop Coderと呼ばれるような人達(TopCoderというサイトで言うところのRedCoder)ですらある種の問題を解くために自分で新しいアルゴリズムを開発したりは(普通は)しない。新しいアルゴリズムを産み出そうと研究しているような人はプログラマではなく、大学などの研究者だろう。プログラマは既存のアルゴリズムを組み合わせるぐらいしか出来ない。出来ないというか、既存のアルゴリズムをあまねく勉強して、状況に応じて素早く効果的に組み合わせ、それをきちんと動作する洗練されたコードで表現できるならそれこそが優れたプログラマだ。


それは熟練の成せる技だが、その人しか出来ないというオンリーワンの技では無い。ある程度の熟練を経れば誰でも到達できる地点だ。その人でなくても(多少コーディングに時間がかかってもいいなら)同じプログラムが書ける人は世の中にゴマンと居るわけだ。世の中にゴマンと居る人にそんなに稀少価値は無いわけだ。Googleの給与にはそのレアリティが反映されているに過ぎない。


それから、何かの製品のプログラムを書こうと考えた場合、決して書くのが難しい部分ばかりではない。APIについて調べたり、新しい技術を習得したり、テストしたり、平易なコードを書いたり、ドキュメントを書いたりとそういう時間も必要で、Top Coderであってもそういう部分が他の人に比べて何倍も早く出来るわけでは無いから、全体的な生産性は5倍以内にとどまる。


まあ、結局のところ100倍速くなんて書けないんだよね。西川氏は「われわれは人の100倍は速く書けると思っている。じゃあ、その人に1カ月、その分を払ってくれるのかというと、受注じゃ絶対、無理でしょう。」と言うが、それは実際には100倍速く書けないから払ってもらえないわけだ。本当に100倍速く書けるなら、100倍速く書けるところを実証して見せて、そして、実際に100倍払ってもらうように交渉するのが営業の仕事だ。そして本当に100倍速く書ける人達には、100倍とは行かなくとも平均的なエンジニアの10倍か20倍ぐらいの給与は払ってやるのが経営者の仕事だ。なんでそれがわかんねぇかな。


給料に関して言えばPFIでは平均的なエンジニアの給料の10倍どころか2倍すら払ってないでしょうに。それはなんでなの?平均的なエンジニアの5倍の仕事すらこなせてないから払えないんだよね。受託開発でも優秀な人間を集めてきた場合、普通の人月単価の数倍をもらうことは十分ありえるというのに。それをきちんと交渉するのが営業の仕事なんだよ。西川氏は自分が他人の100倍速く書けると思ってる人達にどうして2倍の給料すら払ってやれないのか、その矛盾について良く考えたほうがいいんじゃないのかな。


あと西川氏がでたらめなことを言うからそれを真に受ける人が出てくる。例えばこういうの。

ソフトウェアは肉体労働ではない. 例えば, 世界一の力持ちであるマリウスプジノフスキーですらふつうの人の10倍も力がないし, 10倍の力があってもふつうの人の10倍肉体労働で働くことは出来ないが, ITの世界はそれこそ一騎当千で, 優秀な人間の価値がより高くなる.


日本のソフトウェアを改善しないとダメだ.
http://d.hatena.ne.jp/akiradeveloper/20100924/1285293903

プログラミング歴数年ぐらいの初心者と比べて「一騎当千」なら、わからなくもないし、あるいは、プログラミングの出来ない人が人力で作業をしている状況で、プログラミングが出来る人がそれを自動化することによって「一騎当千」ならそれまたわからなくはない。


しかし、ソフトハウスのまともな経営者ならそんな比較の仕方は決してしない。プログラミングがある程度出来る普通のプログラマと比較して何倍の生産性があるのか、何倍速くコードが書けるのか、何倍速く動作するコードが書けるのか。実際、Top Coderと普通のプログラマとの差は微々たるものだろう。お金に換算すればせいぜい5倍程度。10倍ですらない。


Googleをして、そうなんだ。まして日本の企業ではそんなおいしいビジネスモデルがあるわけでもなく、経営者側からすれば平均的なエンジニアの年収の2,3倍出せればいいほう。プログラムを勉強し始めて数年ぐらいの学生が「ITの世界はそれこそ一騎当千」だと思っていても何の害もないけど、西川氏のような社員を20名ぐらいかかえる会社の経営者が「100倍速く書ける」だとか本気で思っていると経営判断を大きく誤るよ。


というか受託開発を断固としてやらないという時点でもうすでに経営判断を少し誤っている気もするのだけど、まあそれはそれとして、未踏のメンバーぐらい優秀な人が集まっていれば、最悪受託開発でもすれば社員の給料分(平均的なエンジニアの2倍以内ぐらいであれば)は余裕で払えるわけで、会社を維持することは比較的容易だ。経営判断を何重にも誤っても会社が潰れないというのは優秀な社員を抱えているからこそであって、普通か普通以下のエンジニアしか抱えていない零細ベンチャーが同じことやったら速攻会社は潰れるんだけどね。そういう意味では西川氏は恵まれているよね。どうか社員になるべく迷惑をかけずにいられるようにもっと経営や営業のことを勉強していただきたい。

西川 起業したのは、認定された後ですね。未踏関係の人からメールをもらうことはよくありましたから、そういうところから仕事につなげるというのはありましたね。使えるものは何でも使う。

 IPA情報処理推進機構)のアドバイザチーム制度(編注:IPAが法務、財務、知的財産権マーケティングなどの専門家を紹介してくれる制度。2回までIPAが費用を負担してくれる。残念ながら現在は受付停止中)も使いましたね。すごく助かりました。法律や会計の専門家って高いじゃないですか。最初のころは1万円でももったいない。2回まで無料というのはうれしかった。

竹内 役に立ったんですね。

西川 前提知識がまったくなかったので。「株式って何だ?」というレベル。ずっとITしかやってきませんでしたから。

余談だけど、私の場合、法人登記なんて、うちのおかんに「会社作っといて」と頼んでおけばその数日後に出来てたけどな…。手続きなんかそのレベルなんだけどな。('A`)


■ 追記(2010/09/27 22:50)


PFI(→ http://preferred.jp/ )の西川さんご本人から直々にコメントをいただきましたので、是非↓↓↓のコメント欄を最後までご覧ください!!!