Joel on Software

Joel on Software   このページは"ジョエル・オン・ソフトウェア

 

※新しい翻訳はJoel on Software Translation Projectにあります。

その他の "Joel on Software" の記事(日本語)

その他の "Joel on Software" の記事(英語)

著者へのメール(英文のみ)

 

いいソフトウェアには10年はかかる。それに慣れることだ。


Joel Spolsky ジョエル・スポルスキ
翻訳: Yasushi Aoki 青木靖
2001/7/21

この小さな図を見てほしい:

Lotus Notes installed base, chart.
[出展:Iris Associates]

このチャートはLotus Notesワークグループソフトウェアが最初に売り出された1989年から2000年までの間のインストール数を示している。実際はNotes 1.0は出荷される前に5年かけて開発された。Notesが十分良いソフトになって人々が買い始めるようになるまでにどれほど長くかかっているのかに注意して欲しい。コードの最初の行が書かれた1984年から、上昇に向かうカーブのホッケースティックの部分に至るまでに、約11年がたっている。この間にレイ・オジーと彼のクルー達はサン・バルテレミでピニャコラーダを飲んでいたわけではない。彼らはコードを書いていたのだ。

私がこの話をしているのは、重要なアプリケーションではこれが珍しいことではないからだ。Oracleデータベースはもう22年になる。Windows NTの開発は12年前に始まった。Microsoft Wordは確実に年を経ている。私は高校生の時にDOS版のWord 1.0を見たのを覚えている(年が分かってしまうね。それは1983年だった。)

経験を積んだソフトウェア畑の人間には、これは驚くようなことではない。あなたが製品の最初のバージョンを書いて、数人の人たちがそれを使い、彼らはそれが気に入るが明らかに欠けている機能やパフォーマンスの問題があって、そのため1年後にあなたはバージョン2.0を出す。やらなければならない重要なことがそれはたくさんあり、バージョン2.0や3.0や4.0にどの機能を入れるかをみんなが議論している。私はExcelの仕事をしていた頃、ただ私たちがしなければならなかったことがどんなにたくさんあったかを覚えている。ピボットテーブル、3-Dスプレッドシート、VBA、データアクセス。あなたがついに新しいバージョンを待ちこがれている人々に向けて出荷したとき、人々はそれを買おうとなだれ込む。Windows 3.1を覚えている?長いファイル名が絶対必要だし、メモリ保護が必要だし、プラグアンドプレイが必要だし、私たちがそれなしですますことなんて考えられない重要な機能がうんとたくさんあったのだけど、しかし時間がなくて、それらの機能はWindows 95まで待たなければならなかった。

しかしそれは最初の10年のことだ。その後となると、本当に必要だという機能をだれも考えつかなくなる。Excel 2000やWindows 2000がまだできないことであなたが本当に必要としているものって、何かあるだろうか?Officeチームにいる私の友人達には失礼ながら、1995年頃から後、Officeに有用な新機能はなかったと思わざるを得ない。それ以降に追加された「機能」と呼ばれるものの多くは、嫌われ者の前ペーパークリップ氏や自動ドキュメントごちゃ混ぜ機能のように、たた煩わしいだけで、オライリーはそれを無効にする方法を解説した本を売っていい商売をしている。

それだから良いプログラムを書くのには長い時間がかかるものだが、しかしそれができたときには、それは終わるのだ。確かにあなたは1年か2年ごとにアップグレード収入を得るために新しいバージョンを出すことはできるが、しかしいつか人々は訊ねることだろう。「何で壊れてないのに直すんだ?」

picture-fruit:  

10年のルールを理解し損なうと、ビジネスで深刻な誤りを犯すことになる。

第1の誤り.急成長シンドローム。このインターネットバブルの虚偽はすでに別なところですっかり信用を落としているので、ここではあまり酷評しないことにしよう。しかし重要な観察は、(ペットフードショップと違い)ソフトウェアを作ろうとしたバブル会社は、ただ彼らのソフトウェアを良いものにするための時間が十分になかっただけだということだ。私のお気に入りの例は desktop.comで、それは10年かけていれば素晴らしいものになっていたかもしれないものの始まりだった。しかしビルド・トゥ・フリップ(売るために会社を作る)メンタリティ、会社の膨大な過剰スタッフに過剰支出、10分ごとにVCを引き上げる必要性が、ソフトウェアを10年に渡って開発し続けることを不可能にした。そしてバージョン1.0は、ご多分にもれず、病的にひどいもので、それを使うことなんか誰も想像できないものだった。しかし desktop.com 8.0はすごくクールだったかもしれないのだ。私たちには知るよしもないが。

第2の誤り.過剰宣伝シンドローム。あなたがバージョン1.0をリリースするときには、あなたは実際のところひっそりとやりたいと思うかもしれない。初期採用者たちがそれを見つけるに任せておくのだ。あなたがそれを過剰に売り込んだり宣伝したりすると、人々はあなたが実際に作ったものを見たときに失望するだろう。desktop.comがその例であり、MarimbaやGrooveもそうだ。それらは最初から過剰に取り上げられ、人々は立ち止まって実際にそれらのバージョン1.0を見て、あの興奮がいったい何なのか知ろうとするが、多くのバージョン1.0の製品と同じように、それは草が枯れるのをながめているのと同じくらいにしかエキサイティングじゃない。それだから今や何百万もの人々がMarimbaを1996年以来見ておらず、彼らはまだそれが4ヵ月くらいで急ごしらえされたJavaアプレットをダウンロードする変なリストボックスだと思っている。

1.0を静かにしておくというのは、少ないセールスでもブレイクできなければならないことを意味する。そしてそれは低いコストを意味し、それは少ない従業員を意味し、そしてそれはソフトウェア開発の初期においては本当によいことなのであって、なぜならあなたが始め一人のプログラマしか雇えないなら、アーキテクチャは一貫していて知的なものとなり、何百人ものプログラマからの矛盾する何ダースものアイディアを詰め込んだ大きな寄せ集めになってスクラッチから書き直さなければならなくなるようなことにはならないからだ。(Netscapeみたいに。ソースコードをすべて捨てて始めからやり直すという決断を擁護する人たちによれば、それは必要なことだった。)

第3の誤りインターネット時間を信じること。1996年ころ、ニューヨークタイムズはNetscapeの新しいブラウザのリリースが6ヵ月かそこらごとに行われていて、それは人々が慣れていた Microsoftのような会社の2年のアップグレードサイクルと比べてずっと短いということに気づいた。これはビジネスがより早く動く「インターネット時間」というものがあるという神話をもたらした。それは結構だが、真実ではなかった。ソフトウェアは少しも早く作られてはおらず、より頻繁にリリースされていただけのことだ。新しいソフトウェア製品の初期段階では追加すべき重要なものはたくさんあり、6ヵ月ごとにリリースしても依然として、人々が必要とするたくさんのすごい機能を追加することができる。だからあなたはそうする。しかしあなたは以前より早くソフトウェアを書いているわけではない。 (Internet Explorerチームもこれを支持してくれるだろう。IE3.0と4.0は業界の標準より10倍くらい早く作られた。これはインターネットとは何も関係もなく、ただMicrosoftで商用ソフトウェアを作る15年の経験から恩恵を得た、実戦で鍛えられているすばらしいチームを彼らが持っていたという事実がすべてだ。)

第4の誤り.ソフトウェアができたときにアップグレード収入を使い切ってしまう。業界の伝承を少し:PC業界はその初期(1980年代後半)において非常に早く成長し、ほとんどあらゆるソフトウェアが新規ユーザに売られた。Microsoftは一般に、500ドルのソフトウェアパッケージに対するアップグレードとして30ドル課金していたが、誰かが新規ユーザからの収入が使い果たされ、あまりに多くのコピーが安いためにアップグレードとして買われているということに気づいた。そうして現在のような、アップグレードの値段がフルバージョンの50%-60%で、売上の大部分を占めるというような状態になった。さて、そうするとあなたが新しい機能をなにも思いつかなくなったときに問題が生じ、あなたはペーパークリップをつけ、それからそれを取り外して、しかもそのどちらの場合にもお金を取ろうとするのだが、彼らはそれに引っかからない。あなたが年間ライセンスを課していればと思い始めるのはこのときで、そうすればあなたの製品をサブスクリプションにして新しい機能を追加していないときでもお金を取れるようにできる。これはうまい会計トリックだ:あなたが100ドルでソフトウェアパッケージを売れば、ウォールストリートはそれを100ドルと評価する。しかしあなたが30ドルで年間ライセンスを売ることができたなら、30ドルの収入を繰り返し、たとえば10年間得られると主張することが出来、それはウォールストリートでは200ドルの価値だ。ジャジャーン!株価は2倍になった!(偶然ながら、これはSASが彼らのソフトウェアに課金するやり方だ。彼らは毎年97%から契約更新を受けている。)

問題は、Microsoftのもののようなパッケージソフトウェアでは、顧客は引っかからない、ということだ。Microsoftは90年代の初期からサブスクリプションベースのソフトウェアを顧客に受け入れさせようとしてきたが、毎回強い抵抗を受けた。買ったソフトが「自分のもの」になり、新機能が必要ないならアップグレードしなくても良いと言う考えに一度慣れてしまうと、機能的にはすでに完成している製品を売ろうとするソフトウェア会社にとってそれは大きな問題となる。

第5の誤り.「できたときに出荷する」シンドローム。これはMozillaで起きたことを思い起こさせる。私は1年以上前に、3年もたつのにそれがまだ出荷されていないことについて、彼らをからかった。彼らのWebサイトにはしょっちゅう陳腐化しているチャートがあって、それは現在彼らが2001の第4四半期に出荷するつもりであることを示している。彼らは見積もりに基づくスケジュールのようなものは実際何も持っていないので、彼らがなぜそう考えているのか私には分からない。ああ、これがインターネット時間の国のソフトウェア開発のありさまだ。

しかしこの話はやめよう。ソフトウェアは書くのに10年かかり、10年間なにも出荷せずにビジネスが生き残る方法というのは存在しない。10年後から現在までの収入の流れを割り引けば、あなたには何も残らない、特にビジネスアナリストというのは、でっち上げの架空のスプレッドシートを作って靴下人形を1億ドルと評価して投資するのがとても良い考えだと納得するとき、何であれ5年以上経つと「残余価値」となるふりをするからだ。

何にしても、10年かけて良いソフトウェアを得るということは、少なくとそのうちの8年は、顧客からのすばらしいフィードバックや、あなたがコピーできる競合の優れたイノベーションや、あなたのバージョン1.0が見込みがあると信じてあなたのために働きに来る人々からの良いアイディアを、あなたが受けつづけるということだ。あなたは初期の不完全なバージョンをリリースする必要がある--ただし過剰に宣伝したり、スーパーボールに広告を出したりしないことだ。あなたがどんなに頭がいいかに関わらず、それはそんなに良いものではないからだ。

第6の誤り.頻繁すぎるアップグレード(別名Corelシンドローム)。あなたが新しい機能を追加しており、既存の顧客がそんなに多くない初期においては、新しいバージョンを6ヵ月ごとにリリースすることができ、人々は新しい機能を喜んでくれるだろう。しかしそのようなリリースを4つか5つ出した後は、あなたはペースダウンする必要があり、そうしなければあなたの顧客はアップグレードをやめるだろう。彼らはアップグレードの支出や面倒を嫌ってリリースをスキップするようになる。一度リリースをスキップすると、なんだ、絶対最新版が必要なわけじゃないんだ、と彼らは気づき始める。私はCorel PhotoPaint 6.0を5年間使っている。それが良くあるバグをたくさん含んでいるのは知っているが、しかし私は良くあるバグを全部把握しており、選択の本来の位置より1ピクセル右をドラッグすることでそれを補っている。

Roosevelt Memorial in Washington

10年の計画を立てることだ。確かに10年間生き残れるようにすること。年に何十億ドルももたらすソフトウェア製品にはみんなそれくらいかかっているのだから。バージョン1にあまり立ち往生しないで、そして最初のバージョンで大きなマーケットに手が届くとは、一瞬たりとも期待しないこと。良いソフトウェアは、ワインのように時間がかかるものなのだ。



この記事の原文(英語)は Good Software Takes Ten Years. Get Used To It. です。 

ジョエル・スポルスキは、ニューヨーク市の小さなソフトウェア会社  Fog Creek Software の設立者です。イェール大学を卒業後、マイクロソフト社、Viacom社、 Juno社でプログラマとして働きました。


このページは著者の個人的な意見を掲載したものです。
All contents Copyright ©1999-2005  by Joel Spolsky. All Rights Reserved.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky