未来へのもう一つの道
Original2001年9月
(この記事では、次世代のソフトウェアの多くがサーバーベースになる理由、それがプログラマーにとって何を意味するのか、そしてこの新しいタイプのソフトウェアがスタートアップにとって絶好の機会である理由を説明します。 これは、BBN Labsでの講演に基づいています。)
1995年の夏、私の友人であるロバート・モリスと私はスタートアップを始めることにしました。当時、NetscapeのIPOに向けたPRキャンペーンが本格化しており、メディアではオンラインコマースについて多くの話題になっていました。当時、Web上に存在した実際のストアは30件ほどで、すべて手作業で作られていました。オンラインストアが多数存在するようになれば、それらを構築するためのソフトウェアが必要になるため、私たちはソフトウェアを開発することにしました。
最初の1週間ほどは、このソフトウェアを通常のデスクトップアプリケーションにするつもりでした。しかしある日、ソフトウェアをWebサーバー上で実行し、ブラウザをインターフェースとして使用するというアイデアが浮かびました。ソフトウェアをWeb上で動作するように書き直してみたところ、これが進むべき道であることは明らかでした。ソフトウェアをサーバー上で実行するように記述すれば、ユーザーにとっても私たちにとってもはるかに簡単になります。
これは良い計画であることが判明しました。現在、Yahoo Storeとして、このソフトウェアは最も人気のあるオンラインストアビルダーであり、約14,000人のユーザーがいます。
Viawebを始めた頃は、ソフトウェアがサーバー上で実行されると言っても、ほとんどの人が理解していませんでした。Hotmailが1年後になってようやく、人々は理解し始めました。今では誰もが、これが有効なアプローチであることを知っています。私たちがやっていたことには、今ではアプリケーションサービスプロバイダー、つまりASPという名前があります。
次世代のソフトウェアの多くは、このモデルで記述されると思います。デスクトップから最も多くのものを失うことになるマイクロソフトでさえ、一部のものをデスクトップから移行させることの必然性を認識しているようです。ソフトウェアがデスクトップからサーバーに移行すれば、開発者にとって非常に異なる世界になるでしょう。この記事では、この新しい世界を最初に訪れた者として、私たちが目にした驚くべきことを説明します。ソフトウェアがサーバーに移行する限り、ここで説明していることは未来です。
次のもの?
デスクトップソフトウェアの時代を振り返ってみると、人々が耐えてきた不便さに驚嘆するでしょう。ちょうど、私たちが今の自動車の初期の所有者が耐えてきたことに驚嘆するのと同じようにです。最初の20〜30年間は、自動車を所有するには自動車の専門家である必要がありました。しかし、自動車は非常に大きな勝利だったので、自動車の専門家ではない多くの人々も自動車を所有したいと考えました。
コンピューターは現在、この段階にあります。デスクトップコンピューターを所有すると、コンピューター内部で何が起こっているのかについて、知りたい以上に多くのことを学ぶことになります。しかし、アメリカの世帯の半分以上がコンピューターを所有しています。私の母親は、メールや会計のためにコンピューターを使用しています。約1年前、彼女はAppleから新しいバージョンのオペレーティングシステムの割引を提供する手紙を受け取り、驚いていました。メールや会計のためにコンピューターを使いたいと思っている65歳の女性が、新しいオペレーティングシステムのインストールについて考えなければならないのは、何かがおかしいです。普通のユーザーは、「オペレーティングシステム」という言葉は言うまでもなく、「デバイスドライバ」や「パッチ」という言葉さえ知るべきではありません。
ユーザーをシステム管理者になることから解放する、ソフトウェアを提供する別の方法があります。Webベースのアプリケーションは、Webサーバー上で実行され、Webページをユーザーインターフェースとして使用するプログラムです。平均的なユーザーにとって、この新しいタイプのソフトウェアは、デスクトップソフトウェアよりも簡単で、安価で、モバイルで、信頼性が高く、多くの場合、強力です。
Webベースのソフトウェアでは、ほとんどのユーザーは使用するアプリケーション以外のことについて考える必要はありません。面倒で変化し続けるものはすべて、サーバー上に置かれ、その手のことに長けた人々によって管理されます。そのため、通常はソフトウェアを使用するためにコンピューター自体を必要としません。必要なのは、キーボード、画面、Webブラウザがついたものだけです。無線インターネットアクセスがあるかもしれません。携帯電話かもしれません。それが何であれ、それはコンシューマーエレクトロニクスです。つまり、約200ドルで、人々は主にケースの見た目で選びます。電話と同様に、ハードウェアよりもインターネットサービスに多くのお金を払うことになります。[1]
クリックがサーバーに到達して戻ってくるまでに約10分の1秒かかります。そのため、Photoshopのようなインタラクティブなソフトウェアのユーザーは、デスクトップで計算を実行したいと思うでしょう。しかし、ほとんどの人がコンピューターを使用する目的を考えると、10分の1秒の遅延は問題ではありません。私の母親はデスクトップコンピューターを本当に必要としていませんし、彼女のような人はたくさんいます。
ユーザーにとってのメリット
私の家の近くには、「不便よりも死を」と書かれたバンパーステッカーを貼った車があります。ほとんどの人は、ほとんどの場合、最も労力の少ない選択肢を選びます。Webベースのソフトウェアが勝つなら、それはより便利だからです。そして、ユーザーと開発者の両方にとって、それは便利そうです。
純粋にWebベースのアプリケーションを使用するには、インターネットに接続されたブラウザが必要です。そのため、Webベースのアプリケーションは、どこでも使用できます。デスクトップコンピューターにソフトウェアをインストールすると、そのコンピューターでのみ使用できます。さらに悪いことに、ファイルはそのコンピューターに閉じ込められます。このモデルの不便さは、人々がネットワークに慣れるにつれて、ますます明らかになってきます。
この楔の薄い端は、Webベースのメールでした。何百万人もの人々が、どこにいようともメールメッセージにアクセスできる必要があることに気づいています。そして、メールを見ることができるなら、なぜカレンダーを見られないのでしょうか? 同僚とドキュメントを議論できるなら、なぜ編集できないのでしょうか?なぜあなたのデータは、遠くのデスクにあるコンピューターに閉じ込められているのでしょうか?
「あなたのコンピューター」という概念は消えつつあり、「あなたのデータ」に置き換えられています。あなたは、どのコンピューターからでもあなたのデータにアクセスできるはずです。あるいは、どのクライアントからでも、そしてクライアントはコンピューターである必要はありません。
クライアントはデータを保存すべきではありません。電話のようなものでなければなりません。実際、電話になるか、その逆になるかもしれません。そして、クライアントが小さくなるにつれて、データをクライアントに保存しない別の理由があります。持ち歩くものは紛失したり盗まれたりする可能性があります。PDAをタクシーに置き忘れるのは、ディスククラッシュと同じです。ただし、データは消滅するのではなく、他の人に渡されます。
純粋にWebベースのソフトウェアでは、データもアプリケーションもクライアントに保存されません。そのため、使用するために何かをインストールする必要はありません。そして、インストールがない場合、インストールがうまくいかないことを心配する必要はありません。ソフトウェアはオペレーティングシステム上で動作しないため、アプリケーションとオペレーティングシステムの間に互換性の問題が発生することはありません。
インストールが不要なため、Webベースのソフトウェアを「購入」する前に試すことが簡単で一般的になります。Webベースのアプリケーションは、提供されているサイトにアクセスするだけで、無料で試用できると期待してください。Viawebでは、私たちのサイト全体が、ユーザーをテストドライブに誘導する大きな矢印のようでした。
デモを試した後、サービスにサインアップするには、簡単なフォームに記入するだけです(短いほど良い)。そして、それはユーザーがする最後の作業になります。Webベースのソフトウェアでは、追加料金を支払ったり、作業を行ったり、場合によっては知らなくても、新しいリリースを入手できます。
アップグレードは、もはや大きな衝撃にはなりません。時間の経過とともに、アプリケーションは静かにより強力になっていきます。これは、開発者側の努力が必要です。開発者は、ユーザーを混乱させることなく更新できるソフトウェアを設計する必要があります。これは新しい問題ですが、解決策はあります。
Webベースのアプリケーションでは、誰もが同じバージョンを使用し、バグは発見されたらすぐに修正できます。そのため、Webベースのソフトウェアは、デスクトップソフトウェアよりもバグがはるかに少ないはずです。Viawebでは、一度に10個以上の既知のバグがあったことはほとんどありませんでした。これは、デスクトップソフトウェアよりも桁違いに優れています。
Webベースのアプリケーションは、複数の人が同時に使用できます。これは、共同作業アプリケーションにとって明らかな利点ですが、ユーザーは、それが可能であることに気づけば、ほとんどのアプリケーションでこれを求めるようになるでしょう。たとえば、2人が同じドキュメントを編集できるようにすることは、多くの場合便利です。Viawebでは、複数のユーザーが同時にサイトを編集できるようにしましたが、これはソフトウェアを正しく記述する方法であったためであり、ユーザーがそれを望むと予想していたわけではありませんでしたが、実際には多くのユーザーがそうしました。
Webベースのアプリケーションを使用すると、データがより安全になります。ディスククラッシュは過去のものではないですが、ユーザーはそれについて聞くことはなくなります。サーバーファーム内で発生します。そして、Webベースのアプリケーションを提供する企業は、実際にバックアップを行います。これは、システム管理者がそのようなことを心配するだけでなく、ASPがユーザーのデータを失うと、大きな問題になるからです。ユーザーがディスククラッシュで自分のデータを失うと、怒ることはできません。なぜなら、怒る相手は自分だけだからです。企業がユーザーのデータを失うと、彼らはもっと怒るでしょう。
最後に、Webベースのソフトウェアは、ウイルスに対してより脆弱になるはずです。クライアントがブラウザ以外何も実行しない場合、ウイルスを実行する可能性は低くなり、ローカルに損傷するデータもありません。そして、サーバー自体を攻撃するプログラムは、それらが非常にうまく防御されていることに気づくでしょう。[2]
ユーザーにとって、Webベースのソフトウェアはストレスが少ないでしょう。Windowsユーザーの内部を覗いてみると、その説明に合致するソフトウェアに対する、大きく、ほとんど未開発の欲求があると思います。解き放たれれば、それは強力な力になる可能性があります。
コードの都市
開発者にとって、Webベースのソフトウェアとデスクトップソフトウェアの最も顕著な違いは、Webベースのアプリケーションが単一のコードではないことです。それは、単一の大きなバイナリではなく、さまざまなタイプのプログラムのコレクションになります。そのため、Webベースのソフトウェアの設計は、建物ではなく都市の設計に似ています。建物に加えて、道路、標識、ユーティリティ、警察と消防署、そして成長とさまざまな種類の災害に対する計画が必要です。
Viawebでは、ソフトウェアには、ユーザーが直接やり取りするかなり大きなアプリケーション、それらのプログラムが使用するプログラム、問題を探して常にバックグラウンドで実行されるプログラム、壊れた場合に再起動を試みるプログラム、統計をコンパイルしたり、検索用のインデックスを作成したりするために時々実行されるプログラム、リソースをガベージコレクションしたり、データを移動または復元したりするために明示的に実行したプログラム、ユーザーになりすましたプログラム(パフォーマンスを測定したり、バグを公開したりするため)、ネットワークトラブルの診断のためのプログラム、バックアップを行うためのプログラム、外部サービスへのインターフェース、リアルタイムのサーバー統計を表示する印象的なダイアルのコレクションを駆動するソフトウェア(訪問者にとって人気がありますが、私たちにとっても不可欠です)、オープンソースソフトウェアへの修正(バグ修正を含む)、そして非常に多くの構成ファイルと設定が含まれていました。Trevor Blackwellは、Yahooに買収された後、ストアを全国の新しいサーバーに移行するための素晴らしいプログラムを作成しました。ストアをシャットダウンすることなく、プログラムは私たちにページを送信し、ユーザーにファックスとメールを送信し、クレジットカード処理業者と取引を行い、ソケット、パイプ、httpリクエスト、ssh、udpパケット、共有メモリ、ファイルを通じて互いに通信しました。Viawebの一部は、プログラムの不在で構成されていました。なぜなら、Unixセキュリティの鍵の1つは、サーバーへの侵入に使用される可能性のある不要なユーティリティを実行しないことだからです。
ソフトウェアで終わらなかった。サーバー構成について多くの時間を費やした。コンポーネントからサーバーを自分で構築した。これは、一部はコスト削減のため、一部はまさに私たちが望むものを手に入れるためだった。私たちは、アップストリームISPがすべてのバックボーンに十分な速度の接続を持っているかどうかを考えなければならなかった。私たちはRAIDサプライヤーとデートを繰り返した。
しかし、ハードウェアは単なる懸念事項ではない。ハードウェアを制御すると、ユーザーのためにより多くのことができる。デスクトップアプリケーションでは、特定の最小ハードウェアを指定することはできるが、追加することはできない。サーバーを管理している場合、関連するハードウェアをインストールするだけで、ユーザー全員が1つの手順で人にページングしたり、ファックスを送信したり、電話でコマンドを送信したり、クレジットカードを処理したりできる。私たちは常に、ユーザーを喜ばせるだけでなく、デスクトップソフトウェアを販売しているか、ISPを通じてWebベースのアプリケーションを再販している競合他社とは異なり、ハードウェアを直接制御していないため、ハードウェアで機能を追加する新しい方法を探していた。
Webベースのアプリケーションのソフトウェアは、単一のバイナリではなく、プログラムのコレクションになるため、さまざまな言語で記述できます。デスクトップソフトウェアを記述する場合、基になるオペレーティングシステムと同じ言語でアプリケーションを記述する必要があります。つまり、CとC++です。そのため、これらの言語(特にマネージャーやVCなどの非技術的な人々の間では)は、「本格的な」ソフトウェア開発の言語と見なされるようになりました。しかし、それはデスクトップソフトウェアの配信方法の単なるアーティファクトでした。サーバーベースのソフトウェアの場合、好きな言語を使用できます。[3] 今日、トップハッカーの多くは、CやC++とはかけ離れた言語を使用しています。Perl、Python、さらにはLispです。
サーバーベースのソフトウェアでは、ハードウェアに至るまでシステム全体を制御しているため、誰もどの言語を使用するかを指示することはできません。さまざまな言語は、さまざまなタスクに適しています。それぞれに最適なものを選択できます。そして、競合他社がいる場合、「できる」は「しなければならない」を意味します(後で詳しく説明します)。なぜなら、この可能性を利用しないと、競合他社が利用するからです。
競合他社のほとんどはCとC++を使用しており、そのソフトウェアは(他の理由の中でも)CGIスクリプトのステートレス性を回避する方法がないため、明らかに劣っていました。何かを変更する場合は、すべての変更を1つのページで行い、下部に「更新」ボタンを付ける必要がありました。他の場所で書いたように、多くの人がまだ研究言語と考えているLispを使用することで、Viawebエディターをデスクトップソフトウェアのように動作させることができました。
リリース
この新しい世界で最も重要な変更の1つは、リリースの方法です。デスクトップソフトウェアビジネスでは、リリースを行うことは、会社全体が汗をかき、苦しみながら、単一の巨大なコードを押し出すという、大きなトラウマです。プロセスと結果の製品の両方で、明らかな比較が示唆されます。
サーバーベースのソフトウェアでは、自分用に記述しているプログラムのように、変更をほぼいつでも行うことができます。ソフトウェアを、時折の大爆発ではなく、一連の増分的な変更としてリリースします。一般的なデスクトップソフトウェア会社は、年に1〜2回リリースを行うかもしれません。Viawebでは、1日に3〜5回リリースを行うことがよくありました。
この新しいモデルに移行すると、ソフトウェア開発がリリース方法によってどれだけ影響を受けるかがわかります。デスクトップソフトウェアビジネスで見られる最も厄介な問題の多くは、リリースの壊滅的な性質によるものです。
年に1回だけ新しいバージョンをリリースする場合、バグを一括して処理する傾向があります。リリース日のかなり前に、コードの半分が取り外されて置き換えられた新しいバージョンを組み立て、無数のバグが発生します。その後、QA担当者のチームが介入してバグをカウントし始め、プログラマーはリストを順番に処理して修正します。彼らは一般的にリストの最後までたどり着くことはなく、実際には、誰もどこが終わりなのかわかりません。池から瓦礫を釣り上げるようなものです。ソフトウェアの内部で何が起こっているのかは、実際にはわかりません。せいぜい、統計的な正しさにたどり着くだけです。
サーバーベースのソフトウェアでは、ほとんどの変更は小さく、増分的です。それ自体がバグを導入する可能性は低くなります。また、ソフトウェアをリリースしようとする際に、最も注意深くテストする必要があるのは、最後に変更した部分であることも意味します。最終的には、コードをよりしっかりと把握することができます。一般的に、コード内部で何が起こっているのかはわかります。もちろん、ソースコードを暗記しているわけではありませんが、ソースコードを読むときは、探偵が謎を解き明かそうとするのではなく、パイロットが計器盤をスキャンするように読みます。
デスクトップソフトウェアは、バグについてある種の宿命論を生み出します。バグが満載のものを出荷していることはわかっていますし、そのためのメカニズムもすでに設定しています(例:パッチリリース)。では、なぜさらにいくつかのバグを心配する必要があるのでしょうか?すぐに、壊れていることがわかっている機能全体をリリースするようになります。 Apple は今年初めにこれを行いました。彼らは、リリース日がすでに4回延期されていた新しいOSをリリースするプレッシャーを感じていましたが、一部のソフトウェア(CDとDVDのサポート)は準備ができていませんでした。解決策?彼らは未完成の部分なしでOSをリリースし、ユーザーは後でインストールする必要があります。
Webベースのソフトウェアでは、動作する前にソフトウェアをリリースする必要はなく、動作したらすぐにリリースできます。
業界のベテランは、動作する前にソフトウェアをリリースする必要がないというのは素晴らしいアイデアですが、特定の日までに新しいバージョンのソフトウェアを配信すると約束した場合、どうなるのでしょうか?Webベースのソフトウェアでは、バージョンがないため、そのような約束はしません。ソフトウェアは徐々に、そして継続的に変化します。一部の変更は他の変更よりも大きいかもしれませんが、バージョンの概念は、Webベースのソフトウェアには自然に適合しません。
Viawebを覚えている人がいれば、これは奇妙に聞こえるかもしれません。なぜなら、私たちは常に新しいバージョンを発表していたからです。これは完全にPR目的で行われました。私たちは、業界の報道機関はバージョン番号で考えていることを学びました。彼らは、メジャーリリース(バージョン番号の最初の桁が新しいもの)に対しては大きな報道を行い、ポイントリリース(小数点以下の桁が新しいもの)に対しては一般的にせいぜい1パラグラフしか報道しません。
競合他社のいくつかはデスクトップソフトウェアを提供しており、実際にはバージョン番号を持っていました。そして、これらのリリースのために、私たちには彼らの後退の証拠のように思えた、単なる事実のために、彼らはあらゆる種類の宣伝を得ました。私たちはそれを逃したくなかったので、私たちもソフトウェアにバージョン番号を付け始めました。宣伝が必要なときは、前回の「リリース」以降に追加した機能のリストを作成し、ソフトウェアに新しいバージョン番号を付け、新しいバージョンがすぐに利用可能になったことを発表するプレスリリースを発行しました。驚くべきことに、誰も私たちにそれを指摘しませんでした。
私たちが買収されるまでに、私たちはこれを3回行っていたので、バージョン4になっていました。私の記憶が正しければ、バージョン4.1です。ViawebがYahoo Storeになった後、宣伝を必要とするほどの切迫した状況はなくなりました。そのため、ソフトウェアは進化を続けましたが、バージョン番号全体の概念は静かに廃止されました。
バグ
Webベースのソフトウェアのもう1つの大きな技術的な利点は、ほとんどのバグを再現できることです。ユーザーのデータは、ディスク上にそのままあります。誰かがソフトウェアを壊した場合、デスクトップソフトウェアのように何が起こっているのかを推測する必要はありません。電話でユーザーと話している間に、エラーを再現できるはずです。アプリケーションにエラーを検出するためのコードが組み込まれている場合は、すでにエラーについて知っているかもしれません。
Webベースのソフトウェアは24時間体制で使用されるため、行うことはすべてすぐに試されます。バグはすぐに現れます。
ソフトウェア会社は、ユーザーにソフトウェアのデバッグをさせていると非難されることがあります。そして、それはまさに私が提唱していることです。Webベースのソフトウェアの場合、実際には良い計画です。なぜなら、バグは少なく、一時的なものだからです。ソフトウェアを徐々にリリースすると、最初からバグがはるかに少なくなります。そして、エラーを再現して変更を即座にリリースできる場合、ほとんどのバグは出現したらすぐに発見して修正できます。私たちは、正式なバグ追跡システムを使用するほど、一度にバグが多すぎることはありませんでした。
変更をリリースする前にテストする必要があるのは言うまでもありません。そのため、重大なバグはリリースされるべきではありません。どうしてもすり抜けてしまうバグは、境界線上のケースに関わるもので、誰かが苦情を言う前に遭遇する少数のユーザーにのみ影響を与えるでしょう。バグをすぐに修正する限り、平均的なユーザーにとってのネット効果は、バグがはるかに少なくなるということです。私は、平均的な Viaweb ユーザーがバグを見たことがあるかどうか疑問に思います。
新しいバグを修正する方が、古いバグを修正するよりも簡単です。自分が書いたばかりのコードのバグを見つけるのは、通常は非常に簡単です。バグが見つかったとき、あなたはソースを見る前に何が間違っているのかを知っていることがよくあります。なぜなら、あなたはすでに無意識にそれを心配していたからです。6か月前に書いたもの(年に1回リリースする場合の平均的なケース)のバグを修正するのは、はるかに多くの作業が必要です。そして、コードをそれほど理解していないため、醜い方法で修正したり、さらにバグを導入したりする可能性が高くなります。[4]
バグを早期に発見すると、複合バグも少なくなります。複合バグとは、2つの別々のバグが相互作用するものです。階段を降りていてつまずき、手すりを掴もうとすると、手の中で手すりが外れてしまうようなものです。ソフトウェアでは、この種のバグは最も見つけにくく、最悪の結果をもたらす傾向があります。[5] 従来の「すべてを壊してからバグをフィルタリングする」アプローチは、本質的に多くの複合バグを生み出します。そして、一連の小さな変更でリリースされるソフトウェアは、本質的にそうなる傾向がありません。床は常に、後で何かにはまり込む可能性のある緩んだ物体がすべて取り除かれるように掃除されています。
関数型プログラミングと呼ばれるテクニックを使用すると役立ちます。関数型プログラミングとは、副作用を避けることを意味します。これは、研究論文ではよく見られますが、商用ソフトウェアではあまり見られません。しかし、Web ベースのアプリケーションでは、非常に役立つことがわかりました。プログラム全体を純粋に関数型コードとして記述するのは難しいですが、この方法でかなりの部分を記述できます。これにより、ソフトウェアのそれらの部分は、状態を持たないため、テストが容易になり、常に小さな変更を加えてテストしている状況では非常に便利です。私は Viaweb のエディターの多くをこのスタイルで書き、スクリプト言語である RTML を純粋に関数型言語にしました。
デスクトップソフトウェア業界の人々はこれを信じられないかもしれませんが、Viaweb ではバグはほとんどゲームになりました。リリースされたバグのほとんどは境界線上のケースに関わるものであったため、それらに遭遇したユーザーは、おそらく高度なユーザーであり、限界に挑戦していました。高度なユーザーは、特にあなたが彼らが求めていた機能を追加する過程でバグを導入した可能性があるため、バグについて寛容です。実際、バグはまれであり、それらを見るには高度なことを行う必要があったため、高度なユーザーはバグを見つけることを誇りに思っていました。彼らは、私たちにポイントを稼いだかのように、怒りよりも勝利の精神でサポートに電話をかけてきました。
サポート
エラーを再現できる場合、顧客サポートへのアプローチが変わります。ほとんどのソフトウェア会社では、サポートは顧客を気分良くさせるための手段として提供されています。彼らは、既知のバグについて電話をかけているか、単に何か間違ったことをしていて、あなたがそれを理解する必要があるかのどちらかです。いずれにしても、彼らから学ぶことはあまりありません。そのため、サポートコールは、できるだけ開発者から隔離したい面倒なものと見なす傾向があります。
Viaweb では、事態はそうではありませんでした。Viaweb では、サポートは無料でした。なぜなら、私たちは顧客の声を聞きたかったからです。誰かが問題を抱えている場合、私たちはすぐにそれを知りたいと思っていました。そうすれば、エラーを再現して修正をリリースすることができました。
そのため、Viaweb では、開発者は常にサポートと密接に連絡を取っていました。カスタマーサポート担当者は、プログラマーから約30フィート離れたところにいて、本物のバグの報告でいつでも何かを中断できることを知っていました。私たちは、深刻なバグを修正するために、ボードミーティングを離れることもありました。
サポートへの私たちのアプローチは、すべての人をより幸せにしました。顧客は大喜びでした。サポートラインに電話をかけて、重要なニュースをもたらす人として扱われるのはどんな気分か想像してみてください。カスタマーサポート担当者は、スクリプトを読むのではなく、ユーザーを助けることができるため、それを気に入っていました。そして、プログラマーは、あいまいな二次的な報告を聞くのではなく、バグを再現できたため、それを気に入っていました。
バグをその場で修正するという私たちのポリシーは、カスタマーサポート担当者とハッカーの関係を変えました。ほとんどのソフトウェア会社では、サポート担当者は低賃金の生きた盾であり、ハッカーは世界創造主である神父の小さなコピーです。バグ報告の手順が何であれ、それは一方向になる可能性が高いです。バグについて聞いたサポート担当者は、最終的に(おそらくQA経由で)プログラマーに渡されるフォームに記入し、プログラマーはそれをやるべきことのリストに入れます。Viawebではまったく違っていました。カスタマーからバグについて聞いた後1分以内に、サポート担当者はプログラマーの隣に立って、「クソ、君が正しい、バグだ」と言っているのを聞くことができました。ハッカーから「君が正しい」と言われるのは、サポート担当者を喜ばせました。彼らは、猫が捕まえたばかりのネズミを持ってきてくれるのと同じ期待感を持って、バグを持ってきてくれました。また、彼らの名誉が懸かっているため、バグの深刻さを判断する際に、より慎重になりました。
Yahooに買収された後、カスタマーサポート担当者はプログラマーから遠く離れた場所に移動しました。その時になって初めて、彼らは事実上QAであり、ある程度はマーケティングでもあることに気づきました。バグを見つけることに加えて、彼らは、ユーザーを混乱させる機能など、より曖昧なバグのようなものの知識の管理者でした。[6] 彼らはまた、一種の代理フォーカスグループでした。私たちは彼らに、2つの新しい機能のうちどちらをユーザーがより望んでいるかを尋ねることができ、彼らは常に正しかったです。
モラル
ソフトウェアをすぐにリリースできることは、大きなモチベーションになります。よく、仕事に行く途中で、ソフトウェアに何か変更を加えたいと思い、その日にそれを実行しました。これは、より大きな機能にも当てはまりました。何かが2週間かけて書く必要があるとしても(ほとんどのプロジェクトはそれ以上かかりませんでした)、私はそれが終わったらすぐにソフトウェアにその効果が見られることを知っていました。
次のリリースまで1年間待たなければならなかったら、これらのアイデアのほとんどを、少なくともしばらくの間は棚上げしていたでしょう。しかし、アイデアの面白いところは、それがさらに多くのアイデアを生み出すことです。何かを書くために座ると、その中に含まれるアイデアの半分は、書いている間に思いついたものだと思いませんか?ソフトウェアでも同じことが起こります。1つのアイデアの実装に取り組むことで、さらに多くのアイデアが得られます。そのため、アイデアを棚上げすると、その実装の遅延だけでなく、その実装によって生み出されたであろうすべてのアイデアも失われます。実際、アイデアを棚上げすると、新しいアイデアも抑制される可能性があります。新しい機能を思いつき始めると、棚が目に入り、「でも、次のリリースのためにやりたいことがたくさんあるんだ」と思ってしまいます。
大企業が機能の実装の代わりにやることは、計画することです。Viawebでは、この点で時々問題に遭遇しました。投資家やアナリストは、将来の計画について尋ねてきました。正直な答えは、計画がないということでした。私たちは、改善したいと思っていることについて一般的なアイデアを持っていましたが、もし私たちがどのようにやるかを知っていたら、すでにやっていました。今後6か月で何をしますか?最も大きな勝利のように見えるもの。私はこの答えを言ったかどうかはわかりませんが、それは真実でした。計画は、棚上げされたアイデアの別の言葉に過ぎません。良いアイデアを思いついたら、私たちはそれを実装しました。
Viawebでは、多くのソフトウェア会社と同様に、ほとんどのコードには明確な所有者がいました。しかし、何かを所有すると、本当に所有していました。ソフトウェアの一部を所有している人以外、誰もリリースを承認する(または知る)必要はありませんでした。同僚にばか者に見られるという恐怖以外、破損に対する保護はありませんでした。それは十分すぎるほどでした。私は、私たちがただ無邪気にコードを書き進めているという印象を与えてしまったかもしれません。私たちは確かに速く進みましたが、ソフトウェアをサーバーにリリースする前に、非常に慎重に考えました。そして、注意を払うことは、ゆっくりと動くよりも信頼性にとって重要です。海軍のパイロットは、注意深く見ているため、夜間に揺れる空母甲板に時速140マイルで40,000ポンドの航空機を着陸させることができます。これは、平均的なティーンエイジャーがベーグルを切るよりも安全です。
このソフトウェアの書き方は、もちろん両刃の剣です。 これは、信頼できる優秀なプログラマーの少人数チームにとっては、大企業の平凡なプログラマーのチームよりもはるかに効果的です。大企業では、悪いアイデアは、それを思いついた人ではなく、委員会によって却下されます。
逆説的なブルックスの法則
幸いなことに、Webベースのソフトウェアは、より少ないプログラマーで済みます。 かつて、私は中規模のデスクトップソフトウェア会社で働いていましたが、エンジニアリング部門全体で100人以上が働いていました。そのうち、製品開発に携わっていたのはわずか13人でした。残りの全員は、リリース、移植などに取り組んでいました。Webベースのソフトウェアでは、リリースや移植などが不要なため、必要なのは(せいぜい)13人だけです。
Viawebはわずか3人のプログラマーによって書かれました。[7] 私は常に、より多くの人材を雇うようにプレッシャーをかけられていました。なぜなら、私たちは買収されたいと考えており、3人のプログラマーしかいない会社に高額な価格を支払うのは難しいだろうとわかっていたからです。(解決策:私たちはより多くの人材を雇いましたが、彼らに新しいプロジェクトを作成しました。)
ソフトウェアをより少ないプログラマーで書ける場合、お金以上のものを節約できます。フレッド・ブルックスが「人月の神話」で指摘したように、プロジェクトに人を追加すると、プロジェクトが遅くなる傾向があります。開発者間の可能な接続数は、グループの規模とともに指数関数的に増加します。グループが大きくなればなるほど、ソフトウェアがどのように連携するかについて話し合う会議に費やす時間が増え、予期せぬ相互作用からバグが発生する可能性が高くなります。幸いなことに、このプロセスは逆にも機能します。グループが小さくなればなるほど、ソフトウェア開発は指数関数的に効率的になります。Viawebのプログラマーが実際に会議をしたことは覚えていません。昼食に行く途中で話せる以上のことは、一度もありませんでした。
ここで欠点があるとすれば、すべてのプログラマーが、ある程度システム管理者も兼ねなければならないということです。ソフトウェアをホスティングする場合、サーバーを監視する人が必要であり、実際には、適切に監視できるのは、ソフトウェアを書いた人だけです。Viawebのシステムは、非常に多くのコンポーネントがあり、頻繁に変更されたため、ソフトウェアとインフラストラクチャの間に明確な境界線はありませんでした。そのような境界線を恣意的に宣言すると、設計上の選択肢が制限されてしまいます。そのため、いつか(「数か月後」に)すべてが安定して、サーバーの心配だけをする人を雇えるようになることを常に期待していましたが、それは実現しませんでした。
製品を積極的に開発している限り、それは不可能だと思います。Webベースのソフトウェアは、書いてチェックインして家に帰るようなものではありません。それは、今すぐサーバー上で実行されているライブなものです。重大なバグは、1人のユーザーのプロセスをクラッシュさせるだけでなく、すべてのユーザーをクラッシュさせる可能性があります。コードのバグがディスク上のデータを破損した場合、修正する必要があります。などなど。最初の1年ほどはサーバーを毎分監視する必要はありませんでしたが、最近変更したものは常に監視しておく必要があることがわかりました。夜遅くにコードをリリースして家に帰ることはありません。
ユーザーの監視
サーバーベースのソフトウェアを使用すると、コードとのつながりが強くなります。ユーザーとのつながりも強くなります。Intuitは、小売店で顧客に自己紹介し、家に連れて行くことを許可してもらうことで有名です。ソフトウェアを初めて使用する人の様子を見たことがあるなら、彼らを待ち受けている驚きがわかるでしょう。
ソフトウェアは、ユーザーが思うように動作する必要があります。しかし、ユーザーが何を考えているのか、信じられないかもしれませんが、ユーザーを観察するまではわかりません。サーバーベースのソフトウェアは、ユーザーの行動に関する前例のない情報を提供します。小規模で人工的なフォーカスグループに限定されることはありません。すべてのユーザーが行ったすべてのクリックを見ることができます。ユーザーのプライバシーを侵害したくないため、何を調べるかについて慎重に検討する必要がありますが、最も一般的な統計的サンプリングでも非常に役立ちます。
サーバーにユーザーがいる場合、ベンチマークに頼る必要はありません。たとえば、ベンチマークはシミュレートされたユーザーです。サーバーベースのソフトウェアを使用すると、実際のユーザーを観察できます。最適化するものを決定するには、サーバーにログインして、CPUを消費しているものを確認するだけです。また、いつ最適化を停止するかについてもわかります。最終的に、Viawebエディターは、CPUバウンドではなくメモリバウンドになるまでになりました。ユーザーのデータのサイズを減らすことはできませんでした(まあ、簡単ではありませんでした)。そこで、そこで停止しても問題ないとわかりました。
サーバーベースのソフトウェアでは、効率が重要です。ハードウェアの費用を支払っているからです。サーバーでサポートできるユーザー数は、資本コストの除数です。そのため、ソフトウェアを非常に効率的にすることができれば、競合他社よりも低価格で販売しても利益を出すことができます。Viawebでは、ユーザーあたりの資本コストを約5ドルに抑えました。今ではもっと安くなっているでしょう。おそらく、最初の月の請求書を送信する費用よりも安くなっているでしょう。ソフトウェアが合理的に効率的であれば、ハードウェアは無料です。
ユーザーを観察することで、最適化だけでなく設計にも役立ちます。Viawebには、RTMLと呼ばれるスクリプト言語があり、上級ユーザーは独自のページスタイルを定義できました。RTMLは一種の提案ボックスになっていることがわかりました。ユーザーは、事前に定義されたページスタイルで目的のことができない場合にのみRTMLを使用していました。たとえば、当初、エディターはページ全体にボタンバーを配置していましたが、多くのユーザーがRTMLを使用してボタンを左側に配置したため side, それを オプション(実際にはデフォルト)にしました。事前に定義されたページスタイルで。
最後に、ユーザーを観察することで、ユーザーが困っている場合に多くの場合わかります。そして、顧客は常に正しいので、それは修正する必要があることの兆候です。Viawebでは、ユーザーを獲得する鍵はオンライン試用版でした。それは、マーケティング担当者によって作成された一連のスライドではありませんでした。試用版では、ユーザーは実際にソフトウェアを使用しました。約5分かかり、その終わりまでに、ユーザーは実際に動作するストアを作成しました。
試用版は、ほぼすべての新規ユーザーを獲得する方法でした。ほとんどのWebベースのアプリケーションでも同じだと思います。ユーザーが試用版を正常に完了できれば、製品を気に入るはずです。混乱したり飽きたりしたら、気に入らないでしょう。そのため、試用版を完了するユーザーを増やすことができることは、成長率を高めることにつながります。
試用版を受けている人のクリックトレイルを調べたところ、特定のステップで混乱してブラウザの「戻る」ボタンをクリックすることがわかりました。(Webベースのアプリケーションを作成しようとすると、「戻る」ボタンは最も興味深い哲学的な問題の1つになります。)そこで、その時点でメッセージを追加して、ユーザーにほぼ完了したことを伝え、戻るボタンをクリックしないように思い出させました。Webベースのソフトウェアのもう1つの素晴らしい点は、変更から即座にフィードバックが得られることです。試用版を完了した人の数は、60%から90%にすぐに増加しました。そして、新規ユーザーの数は試用版を完了した人の数に依存していたため、その変更だけで収益成長率が50%増加しました。
お金
1990年代初頭、ソフトウェアはサブスクリプションビジネスであると述べた記事を読みました。最初は、非常に皮肉な発言のように思えました。しかし、後で、それは現実を反映していることに気づきました。ソフトウェア開発は継続的なプロセスです。人々に新しいバージョンを買い続け、インストールさせ続けることで、人々に支払い続けさせるのではなく、オープンにサブスクリプション料金を請求する方がきれいだと思います。そして幸いなことに、サブスクリプションはWebベースのアプリケーションの請求に適した方法です。
ホスティングアプリケーションは、フリーウェアでは満たされない可能性のある役割を企業が果たす分野です。ホスティングアプリケーションは、多くのストレスがあり、実際の費用がかかります。誰も無料でそれをやりたくないでしょう。
企業にとって、Webベースのアプリケーションは理想的な収益源です。 四半期ごとに白紙の状態から始めるのではなく、継続的な収益の流れがあります。 ソフトウェアは徐々に進化するため、新しいモデルが失敗する心配はありません。 新しいモデルは、実際には必要ありません。また、ユーザーが嫌うようなことをソフトウェアに施した場合、すぐにわかります。 回収不能な請求書の問題もありません。誰かが支払いを拒否した場合、サービスを停止するだけです。 また、海賊版の危険性もありません。
最後の「利点」は、問題になる可能性があります。 ソフトウェア企業にとって、ある程度の海賊版は有利です。 あるユーザーが、どんな値段でもソフトウェアを買わなかった場合、海賊版を使っても何も失っていません。 実際には、彼はソフトウェアを標準にするのに役立つもう1人のユーザーであり、高校を卒業した後にコピーを購入する可能性もあるため、利益になります。
企業は、可能な限り、価格差別と呼ばれることを行います。これは、各顧客から可能な限り多くの料金を請求することを意味します。[8] ソフトウェアは、限界費用がほぼゼロであるため、価格差別を行うのに特に適しています。 これが、一部のソフトウェアがSun上で実行するのにIntelボックスよりも費用がかかる理由です。 Sunを使用する企業は、お金を節約することに関心がなく、安全に高額な料金を請求できます。 海賊版は、事実上、最も低いレベルの価格差別です。 ソフトウェア企業はこれを理解しており、意図的に一部の海賊版を黙認していると思います。[9] サーバーベースのソフトウェアでは、別の解決策を考え出す必要があります。
Webベースのソフトウェアは、特にデスクトップソフトウェアと比較して、購入が簡単であるため、よく売れています。 あなたは、人々が何かを購入することを決めてから購入するという、2つの別々のステップで何かを購入すると考えるかもしれません。 それは、Viaweb以前の私が、この問題について考えたとしても、私が考えていたことです。 実際には、2番目のステップは最初のステップに逆流する可能性があります。何かを購入するのが難しい場合、人々はそれを欲しがっていたかどうかについて考え直します。 逆に、購入が簡単であれば、より多く売れます。 私はAmazonが存在するため、より多くの本を購入します。 Webベースのソフトウェアは、特にオンラインデモを完了したばかりの場合、世界で最も簡単に購入できるものの1つです。 ユーザーは、クレジットカード番号を入力する以上のことをする必要はありません。(危険を冒して、もっとやらせるべきではありません。)
Webベースのソフトウェアは、リセラーとして機能するISPを通じて提供される場合があります。 これは悪い考えです。 ハードウェアとソフトウェアの両方を常に改善する必要があるため、サーバーを管理する必要があります。 サーバーの直接制御を放棄すると、Webベースのアプリケーションを開発することの利点のほとんどを放棄することになります。
私たちの競合他社の何人かは、この方法で足を撃ちました。 通常、彼らは、この巨大な潜在的なチャネルに興奮したスーツに圧倒され、それを通じて販売したい製品を台無しにすることに気づかなかったためだと思います。 ISPを通じてWebベースのソフトウェアを販売することは、自動販売機を通じて寿司を販売するようなものです。
顧客
顧客は誰ですか? Viawebでは、当初は個人と中小企業が顧客でしたが、これはWebベースのアプリケーションのルールになると思います。 これらは、新しいものを試す準備ができているユーザーであり、それは彼らがより柔軟であるため、そして新しいテクノロジーの低コストを望んでいるためです。
Webベースのアプリケーションは、多くの場合、大企業にとっても最良の選択肢になります(ただし、彼らはそれに気づくのが遅いです)。 最高のイントラネットはインターネットです。 企業が真のWebベースのアプリケーションを使用する場合、ソフトウェアはより適切に機能し、サーバーはより適切に管理され、従業員はあらゆる場所からシステムにアクセスできます。
このアプローチに対する反論は、通常、セキュリティに重点を置いています。従業員にとってアクセスが容易になれば、悪党にとっても容易になるからです。一部の大規模な小売業者は、顧客のクレジットカード情報が自社のサーバーよりも安全であると考えて、Viaweb の使用をためらっていました。この点を外交的に説明するのは容易ではありませんでしたが、実際には、データは彼らの手よりも私たちの手に委ねた方がはるかに安全でした。セキュリティ管理のために、サーバーの運用をビジネスとするテクノロジースタートアップと、衣料品小売業者、どちらがより優秀な人材を雇うことができるでしょうか?私たちは、セキュリティについてより優秀な人材を雇っているだけでなく、より真剣に取り組んでいます。衣料品小売業者のサーバーに侵入された場合、影響を受けるのはせいぜい1つの小売業者であり、おそらく隠蔽され、最悪の場合、1人が解雇される可能性があります。私たちのサーバーに侵入された場合、数千の小売業者に影響が及ぶ可能性があり、CNet のニュースになる可能性があり、私たちを倒産に追い込む可能性があります。
お金を安全に保管したい場合は、自宅のマットレスの下に保管するか、銀行に預けますか?この議論は、サーバー管理のあらゆる側面に当てはまります。セキュリティだけでなく、アップタイム、帯域幅、負荷管理、バックアップなどです。私たちの存在は、これらのことを正しく行うことに依存していました。サーバーの問題は、私たちにとって大きなタブーとされており、おもちゃメーカーにとって危険なおもちゃ、食品加工業者にとってサルモネラ菌の発生と同じようなものです。
Web ベースのアプリケーションを使用する大企業は、その範囲で IT をアウトソーシングしています。過激に聞こえるかもしれませんが、これは一般的に良い考えだと思います。企業は、社内システム管理者よりも、この方法でより良いサービスを受けられる可能性があります。システム管理者は、競争圧力に直接さらされていないため、不機嫌で反応が鈍くなることがあります。セールスマンは顧客とやり取りする必要があり、開発者は競合他社のソフトウェアとやり取りする必要がありますが、システム管理者は、独身のおじいさんのように、彼を正気に戻す外部の力がほとんどありません。[10] Viaweb では、私たちを正気に戻すための外部の力がたくさんありました。私たちに電話をかけてくる人は、同僚ではなく、顧客でした。サーバーが詰まると、私たちは飛び乗りました。そのことを考えるだけでも、何年も経った今でもアドレナリンが分泌されます。
したがって、Web ベースのアプリケーションは、通常、大企業にとっても正しい答えになります。しかし、彼らは、デスクトップコンピュータの場合と同じように、最後にそのことに気づくでしょう。そして、部分的には同じ理由で、大企業に、より高価なものが必要であると納得させるには、多額の費用がかかります。
裕福な顧客は、安価なソリューションよりも高価なソリューションを購入する傾向がありますが、これは、高価なソリューションを提供する人々が、それらを販売するためにより多くの費用をかけることができるためです。Viaweb では、常にこの問題に直面していました。私たちは、自社のサーバーにカスタムメイドのオンラインストアを構築するために50万ドルを支払えば、より良い結果が得られると確信させたWebコンサルティング会社に、いくつかのハイエンドの小売業者を失いました。彼らは、一般的に、より良い結果を得ていませんでした。クリスマスの買い物シーズンが到来し、サーバーの負荷が上昇したときに、そのことに気づいた人が何人かいました。Viaweb は、これらの小売業者のほとんどが得たものよりもはるかに洗練されていましたが、私たちは彼らにそれを伝える余裕がありませんでした。月額300ドルでは、顧客にプレゼンテーションを行うために、服装が整い、威圧的な雰囲気を持つチームを派遣する余裕がありませんでした。
大企業が追加料金を支払う理由の大きな部分は、彼らに高価なものを販売するコストです。(国防総省がトイレの便座に1,000ドルを支払う場合、それは、1,000ドルでトイレの便座を販売するコストがかかるためです。)そして、これは、イントラネットソフトウェアが、おそらく悪い考えであるにもかかわらず、繁栄し続ける理由の1つです。それは単に高価すぎるのです。このジレンマについてできることは何もないので、最善の策は、まず小規模な顧客を狙うことです。残りは、いずれ来るでしょう。
サーバーの息子
サーバー上でソフトウェアを実行することは、目新しいことではありません。実際には、古いモデルです。メインフレームアプリケーションはすべてサーバーベースです。サーバーベースのソフトウェアはそれほど良いアイデアなら、なぜ前回は失敗したのでしょうか?なぜデスクトップコンピュータはメインフレームを凌駕したのでしょうか?
最初は、デスクトップコンピュータはそれほど脅威には見えませんでした。最初のユーザーは皆、ハッカー、つまり当時の呼び方では愛好家でした。彼らは、マイクロコンピュータが安価だったため、マイクロコンピュータを気に入っていました。初めて、自分専用のコンピュータを持つことができました。「パーソナルコンピュータ」というフレーズは今では当たり前の言葉ですが、最初に使われたときは、「パーソナルサテライト」という言葉のように、意図的に大胆な響きがありました。
なぜデスクトップコンピュータが普及したのでしょうか?それは、より良いソフトウェアがあったからだと思います。そして、マイクロコンピュータのソフトウェアが優れていた理由は、小規模な企業が開発できたからだと思います。
多くの人が、スタートアップが初期段階ではいかに脆く、不安定なものかを知らないと思います。多くのスタートアップは、ほとんど偶然に始まります。日中の仕事をしているか、学校に通っている2人の男が、有望に見えれば会社になるかもしれないもののプロトタイプを作成するのです。この幼虫段階では、重大な障害があれば、スタートアップはすぐに頓挫してしまいます。メインフレームソフトウェアの開発には、事前に多くのコミットメントが必要でした。開発マシンは高価で、顧客は大企業になるため、彼らに販売するには印象的な営業部隊が必要でした。メインフレームソフトウェアを開発するためにスタートアップを立ち上げることは、夜にApple IIで何かをハッキングするよりもはるかに深刻な取り組みになります。そのため、メインフレームアプリケーションを開発するスタートアップは多くありませんでした。
デスクトップコンピュータの登場は、多くの新しいソフトウェアを生み出しました。なぜなら、それらのためのアプリケーションを開発することは、幼虫段階のスタートアップにとって達成可能な目標に見えたからです。開発は安価で、顧客は個人であり、コンピュータストアや郵送でさえ、彼らにリーチすることができました。
デスクトップコンピュータを主流に押し上げたアプリケーションは、VisiCalc 、最初のスプレッドシートでした。それは、屋根裏部屋で働く2人の男によって書かれたものでしたが、メインフレームソフトウェアでは不可能なことを実現しました。[11] VisiCalcは、当時としては画期的なものであり、人々はそれを実行するためだけにApple IIを購入しました。そして、これがトレンドの始まりでした。デスクトップコンピュータが勝利したのは、スタートアップがそれらのためのソフトウェアを開発したからです。
サーバーベースのソフトウェアは、今回はうまくいくように思えます。なぜなら、スタートアップがそれを開発するからです。コンピュータは現在非常に安価であるため、私たちが行ったように、デスクトップコンピュータをサーバーとして使用して始めることができます。安価なプロセッサはワークステーション市場を食い尽くし(今ではその言葉を聞くことはめったにありません)、サーバー市場のほとんどを占めています。Yahooのサーバーは、インターネット上で最も負荷の高いサーバーですが、すべて、デスクトップマシンと同じ安価なIntelプロセッサを搭載しています。そして、ソフトウェアを開発したら、それを販売するために必要なのはウェブサイトだけです。私たちのユーザーのほとんどは、口コミや報道機関からの紹介を通じて、直接私たちのサイトにアクセスしました。[12]
Viawebは、典型的な幼虫段階のスタートアップでした。私たちは会社を設立することに恐怖を感じており、最初の数か月は、いつでも中止できる実験として、このプロジェクト全体を慰めていました。幸いなことに、技術的な問題以外は、ほとんど障害はありませんでした。ソフトウェアを開発している間、私たちのWebサーバーは、開発に使用していたのと同じデスクトップマシンで、ダイヤルアップ回線で外部世界に接続されていました。その段階での費用は、食費と家賃だけでした。
スタートアップがWebベースのソフトウェアを開発する理由は、これまで以上に増えています。なぜなら、デスクトップソフトウェアの開発は、以前ほど楽しくなくなっているからです。現在、デスクトップソフトウェアを開発したい場合は、Microsoftの条件に従って、彼らのAPIを呼び出し、バグのあるOSを回避して開発する必要があります。そして、うまくいけば、あなたは単にMicrosoftのための市場調査を行っていただけだったことに気づくかもしれません。
会社がスタートアップが構築するプラットフォームを作りたいのであれば、それはハッカー自身が使用したいと思うものでなければなりません。つまり、安価で、よく設計されている必要があります。Macは、発売当初、ハッカーに人気があり、多くの人がそのためのソフトウェアを開発しました。[13] Windowsでは、ハッカーが使用していないため、これはあまり見られません。ソフトウェア開発に長けた人々は、現在、LinuxまたはFreeBSDを実行しています。
デスクトップソフトウェアを書くためにスタートアップを始めたとは思わない。なぜなら、デスクトップソフトウェアはWindowsで動作する必要があるし、Windows用のソフトウェアを書く前にWindowsを使わなければならないからだ。ウェブは、Windowsを迂回して、Unix上で動作するソフトウェアをブラウザを通じてユーザーに直接提供することを可能にした。これは、25年前のPCの登場と同様に、解放的な見通しだ。
マイクロソフト
デスクトップコンピュータが登場した頃、IBMは誰もが恐れていた巨人だった。今では想像もつかないことだが、私はその感覚を鮮明に覚えている。今や恐ろしい巨人はマイクロソフトであり、彼らはIBMほど自分たちに迫る脅威に気づいていないとは思わない。結局のところ、マイクロソフトはIBMの盲点に意図的にビジネスを構築したのだ。
前に述べたように、私の母親はデスクトップコンピュータを本当に必要としていない。ほとんどのユーザーはおそらく必要ないだろう。それはマイクロソフトにとって問題であり、彼らはそれを知っている。アプリケーションがリモートサーバー上で動作する場合、誰もWindowsを必要としない。マイクロソフトはどうするのか?彼らはデスクトップの支配力を利用して、この新しい世代のソフトウェアを阻止したり、制限したりできるのだろうか?
私の推測では、マイクロソフトは、彼らが制御するサーバーと連携して動作する、何らかのサーバー/デスクトップハイブリッドを開発するだろう。少なくとも、ファイルは、それを望むユーザーのために、中央で利用可能になるだろう。マイクロソフトが避けられるのであれば、サーバー上で計算を行い、クライアントにはブラウザのみを使用するという極端な方法まで行くとは思わない。クライアントにブラウザのみが必要な場合、クライアントにマイクロソフトは必要なく、マイクロソフトがクライアントを制御していない場合、彼らはユーザーをサーバーベースのアプリケーションに誘導することはできない。
マイクロソフトは、ジニーを瓶の中に閉じ込めておくのは難しいだろうと思う。彼らがすべてを制御できるほど、多くの異なる種類のクライアントが存在するだろう。そして、マイクロソフトのアプリケーションが一部のクライアントでのみ動作する場合、競合他社は、あらゆるクライアントから動作するアプリケーションを提供することで、マイクロソフトを凌駕することができるだろう。[14]
ウェブベースのアプリケーションの世界では、マイクロソフトにとって自動的な場所はない。彼らは自分自身のための場所を作ることに成功するかもしれないが、デスクトップアプリケーションの世界を支配したように、この新しい世界を支配するとは思わない。
競合他社が彼らを出し抜くというよりも、彼らが自分自身につまずくということだ。ウェブベースのソフトウェアの台頭とともに、彼らは技術的な問題だけでなく、自分たちの希望的観測にも直面することになるだろう。彼らがすべきことは、既存のビジネスを食い物にすることであり、私は彼らがそれに直面するとは思えない。彼らをここまで導いてきた同じ一貫性のある考え方が、今度は彼らを阻むことになるだろう。IBMはまさに同じ状況にあり、それを克服することができなかった。IBMは、自社の金の卵であるメインフレームコンピューティングを脅かすことに躊躇していたため、マイクロコンピュータビジネスに遅ればせながら半ば不本意に参入した。マイクロソフトも同様に、デスクトップを救いたいという思いによって妨げられるだろう。金の卵は、あなたの背中に乗る重荷になる可能性がある。
サーバーベースのアプリケーションを誰も支配しないとは言わない。最終的には誰かが支配するだろう。しかし、マイクロコンピュータの初期と同様に、長く楽しい混沌とした時代が訪れるだろうと思う。それはスタートアップにとって良い時代だった。多くの小規模企業が繁栄し、クールなものを作り出すことでそれを成し遂げた。
スタートアップだが、さらに
古典的なスタートアップは、人材も資金も少なく、迅速かつ非公式だ。その少数の従業員は非常に懸命に働き、テクノロジーは彼らが下す意思決定の効果を増幅する。彼らが勝てば、大きく勝つ。
ウェブベースのアプリケーションを作成するスタートアップでは、スタートアップに関連するすべてが極端になる。さらに少ない人材とさらに少ない資金で製品を開発して発売することができる。さらに迅速になる必要があり、より非公式であることを許容できる。文字通り、アパートの居間に座っている3人の男と、ISPにコロケーションされたサーバーで、製品を発売することができる。私たちはそうした。
時間の経過とともに、チームはより小さく、より速く、より非公式になってきました。 1960年には、ソフトウェア開発は、角縁眼鏡と細い黒いネクタイをつけた男性が部屋いっぱいにいて、IBMのコーディングフォームに1日に10行のコードを熱心に書いていました。1980年には、ジーンズをオフィスに着て、vt100にタイピングする8人から10人のチームでした。今では、ラップトップを持った2人の男がリビングルームに座っているだけです。(そして、ジーンズは非公式さの最後の言葉ではないことがわかりました。)
スタートアップはストレスフルであり、残念ながら、これはWebベースのアプリケーションでも極端なまでに受け入れられています。 多くのソフトウェア会社、特に初期の段階では、開発者が机の下で寝たりするなど、期間があります。Webベースのソフトウェアについて恐ろしいのは、これがデフォルトになるのを防ぐものがないことです。机の下で寝るという話は、通常、最後にそれを出荷して、私たちは皆家に帰って1週間寝ました。Webベースのソフトウェアは出荷されません。あなたは好きなだけ16時間働けます。そして、あなたができるので、そしてあなたの競合他社ができるので、あなたはそうするように強制される傾向があります。あなたはできるから、あなたはしなければならないのです。それは逆方向に走るパーキンソンの法則です。
最悪なのは、時間ではなく責任です。プログラマーとシステム管理者は、伝統的にそれぞれ独自の懸念を持っています。プログラマーはバグを心配する必要があり、システム管理者はインフラストラクチャを心配する必要があります。プログラマーは、ソースコードに肘まで浸かって長い一日を過ごすかもしれませんが、ある時点で家に帰ってそれを忘れることができます。システム管理者は、仕事から完全に離れることはありませんが、午前4時にページングされた場合、通常は非常に複雑なことは何もする必要はありません。Webベースのアプリケーションでは、これらの2種類のストレスが組み合わされます。プログラマーはシステム管理者になりますが、通常、仕事を耐え忍ぶことができる明確に定義された制限はありません。
Viawebでは、最初の6か月はソフトウェアの書き込みだけに費やしました。私たちは、初期のスタートアップの通常の長い時間働きました。デスクトップソフトウェア会社では、これは私たちが一生懸命働いていた部分だったでしょうが、次の段階、つまりユーザーをサーバーに載せたときと比較すると、休暇のように感じられました。ViawebをYahooに売却した最大の利点(お金の後)は、そのすべてに対する究極の責任を大企業の肩に押し付けることができるようになったことです。
デスクトップソフトウェアは、ユーザーをシステム管理者になるように強制します。Webベースのソフトウェアは、プログラマーを強制します。全体的なストレスは少ないですが、プログラマーにとってはより多くあります。それは必ずしも悪いニュースではありません。大企業と競合するスタートアップであれば、それは良いニュースです。[15] Webベースのアプリケーションは、競合他社を出し抜くための簡単な方法を提供します。スタートアップはそれ以上を求めません。
十分に良い
Webベースのアプリケーションの作成を思いとどまらせる可能性のあることの1つは、UIとしてのWebページの無能さです。それは問題です、私は認めます。HTMLとHTTPに本当に追加したかったことがいくつかありました。しかし、重要なのは、Webページは十分に良いということです。
最初のマイクロコンピューターと並行しているものがあります。これらのマシンにあるプロセッサは、実際にはコンピューターのCPUになることを意図していませんでした。それらは、信号機などの用途で使用されるように設計されました。しかし、Altairを設計したEd Robertsのような人々は、それらが十分に良いことに気づきました。これらのチップの1つをメモリ(最初のAltairでは256バイト)、フロントパネルスイッチと組み合わせると、動作するコンピューターができました。自分のコンピューターを持つことができることは非常にエキサイティングだったので、どんなに制限されていても、それらを手に入れたいと思う人がたくさんいました。
ウェブページはアプリケーションのUIとして設計されていませんでしたが、十分な機能を備えています。そして、多くのユーザーにとって、どのブラウザからでも使用できるソフトウェアは、UIのぎこちなさを上回るメリットとなります。HTMLを使って最高のスプレッドシートを作成することはできないかもしれませんが、複数の人が異なる場所から同時に使用できるスプレッドシートを作成したり、ライブデータフィードを組み込んだり、特定の条件が満たされたときにページングしたりすることができます。さらに重要なのは、まだ名前のない新しいタイプのアプリケーションを作成できることです。VisiCalcは、単なるメインフレームアプリケーションのマイクロコンピュータ版ではありませんでした。それは新しいタイプのアプリケーションでした。
もちろん、サーバーベースのアプリケーションは、Webベースである必要はありません。別の種類のクライアントを使用することもできます。しかし、それは悪い考えだと思います。誰もがクライアントをインストールしてくれると仮定できれば非常に便利でしょう。そのため、誰もがインストールしてくれると簡単に思い込んでしまうかもしれません。しかし、インストールされなければ、あなたは困ってしまいます。Webベースのソフトウェアは、クライアントについて何も仮定しないため、Webが動作する場所ならどこでも動作します。これはすでに大きな利点であり、新しいWebデバイスが普及するにつれて、その利点はさらに大きくなります。ユーザーは、あなたのソフトウェアが正常に動作するため、あなたを気に入るでしょう。また、あなたは、すべての新しいクライアントに合わせてソフトウェアを調整する必要がないため、生活が楽になります。[16]
私は、Webの進化を誰よりも注意深く見てきたと感じています。そして、クライアントに何が起こるのか予測することはできません。収束は起こるでしょうが、どこで起こるのでしょうか?私は勝者を予想できません。私が予測できるのは、AOLとMicrosoftの衝突です。Microsoftの.NETが何であれ、それはおそらくデスクトップをサーバーに接続することを含むでしょう。AOLが反撃しない限り、彼らは脇に追いやられるか、Microsoftのクライアントとサーバーソフトウェアの間のパイプにされてしまうでしょう。MicrosoftとAOLがクライアント戦争に突入した場合、両方のソフトウェアで確実に動作するのは、Webの閲覧だけです。つまり、Webベースのアプリケーションだけがどこでも動作するようになります。
どのように展開されるのでしょうか?私は知りません。そして、あなたはWebベースのアプリケーションに賭けるなら、知る必要はありません。誰も、閲覧を壊すことなく、それを壊すことはできません。Webは、ソフトウェアを提供する唯一の方法ではないかもしれませんが、現在動作しており、今後も長い間動作し続ける方法です。Webベースのアプリケーションは、開発コストが安く、最も小さなスタートアップでも簡単に提供できます。それは多くの作業であり、特にストレスの多い作業ですが、それはスタートアップにとって有利な状況を作り出すだけです。
なぜダメなのか?
E.B.ホワイトは、農家の友人が、多くの電化されたフェンスには電流が流れていないことを知って、面白がっていました。牛は、それらから離れるように学習し、その後は電流は必要ありません。「立ち上がれ、牛たちよ!」彼は書きました。「専制君主が鼾をかいている間に、自由を手に入れろ!」
もしあなたが、いつかスタートアップを始めることを考えているハッカーなら、おそらく2つのことが、あなたをそうさせないようにしているでしょう。1つは、ビジネスについて何も知らないことです。もう1つは、競争を恐れていることです。これらのフェンスのどちらにも電流は流れていません。
ビジネスについて知る必要があるのは、2つのことだけです。ユーザーが気に入るものを作り、支出よりも多く稼ぐことです。この2つを正しく理解できれば、ほとんどのスタートアップよりも優位に立てるでしょう。残りは、やっていくうちに理解できます。
最初は、支出よりも多く稼ぐことはできないかもしれませんが、その差が十分に急速に縮小していれば、問題ありません。資金不足でスタートした場合、少なくとも節約の習慣が身につくでしょう。支出が少ないほど、支出よりも多く稼ぐのが容易になります。幸いなことに、Webベースのアプリケーションを立ち上げるのは非常に安価です。私たちは1万ドル以下で立ち上げました。そして、今日ではさらに安価です。私たちはサーバーに数千ドル、SSLを取得するためにさらに数千ドルを費やす必要がありました。(当時、SSLソフトウェアを販売していたのはNetscapeだけでした。)今では、帯域幅だけで支払った金額よりも安く、SSLを含むはるかに強力なサーバーをレンタルできます。今では、高級オフィスチェアの価格よりも安く、Webベースのアプリケーションを立ち上げることができます。
ユーザーに愛されるものを構築することについて、いくつかの一般的なヒントを紹介します。
まず、自分自身が使いたいと思う、クリーンでシンプルなものを作ることから始めましょう。バージョン1.0を迅速にリリースし、その後、ユーザーの声に耳を傾けながらソフトウェアを改善し続けてください。顧客は常に正しいですが、異なる顧客は異なる点で正しいのです。最も洗練されていないユーザーは、簡素化と明確化が必要なものを示し、最も洗練されたユーザーは、追加する必要がある機能を教えてくれます。ソフトウェアが最も優れている点は、使いやすさですが、そのためには、ユーザーの選択肢を制限するのではなく、デフォルト設定を正しくすることです。競合他社のソフトウェアがひどいからといって、満足してはいけません。自分のソフトウェアを比較する基準は、現在の競合他社がたまたま持っているものではなく、あり得るものです。自分のソフトウェアを常に自分で使いましょう。Viawebはオンラインストアビルダーになるはずでしたが、私たちはそれを自分のサイトを作るためにも使いました。マーケティング担当者やデザイナー、プロダクトマネージャーの肩書きだけで、彼らの言うことを聞いてはいけません。良いアイデアがあれば、それを使いましょう。しかし、最終的に決めるのはあなたです。ソフトウェアは、ソフトウェアについて少し知っているデザイナーではなく、デザインを理解しているハッカーによって設計されなければなりません。ソフトウェアを設計するのと同様に実装することができないのであれば、スタートアップを始めるべきではありません。
さて、競争について話しましょう。あなたが恐れているのは、おそらくあなたのようなハッカーのグループではなく、オフィスや事業計画、セールスマンなどを備えた実際の企業ですよね?彼らは、あなたが彼らを恐れているよりも、あなたを恐れており、彼らは正しいのです。数人のハッカーがオフィススペースを借りたり、セールス担当者を雇ったりする方法を理解するのは、どんな規模の企業でもソフトウェアを書かせるよりもはるかに簡単です。私は両方の立場に立ってきたので、よく知っています。ViawebがYahooに買収されたとき、私は突然大企業で働くことになり、それは腰まで水に浸かって走ろうとするようなものでした。
Yahooを軽視するつもりはありません。彼らは優秀なハッカーを擁しており、トップマネジメントは本当にやる気のある人たちでした。大企業としては、彼らは例外的な存在でした。しかし、彼らはそれでも小さなスタートアップの約10分の1の生産性しかありませんでした。大企業は、それ以上のことはできません。マイクロソフトが怖いのは、それほど大きな企業がソフトウェアを開発できることです。彼らは歩くことができる山のようなものです。
威圧されることはありません。あなたは、マイクロソフトができないことを、マイクロソフトがあなたにできないことをすることができます。そして、誰もあなたを止めることはできません。あなたは、Webベースのアプリケーションを開発するために、誰かの許可を求める必要はありません。ライセンス契約を結ぶ必要も、小売店で棚スペースを確保する必要も、アプリケーションをOSにバンドルしてもらうために頭を下げる必要もありません。あなたはソフトウェアをブラウザに直接配信することができ、誰もあなたと潜在的なユーザーの間に立ち入ることはできません。そうすれば、彼らはWebを閲覧できなくなります。
信じられないかもしれませんが、私は約束します。マイクロソフトはあなたを恐れています。自己満足している中間管理職はそうではないかもしれませんが、ビルはそうなのです。なぜなら、彼は1975年に、ソフトウェア配信の新しい方法が登場したとき、あなたと同じだったからです。
注記
[1] 多くの資金がサービスにあることを認識しているため、軽量クライアントを構築している企業は、通常、ハードウェアと オンラインサービスを組み合わせようとしてきました。 このアプローチはうまくいっていません。それは、消費者向け電子機器を製造し、オンラインサービスを運営するには、2種類の異なる企業が必要であるため、そしてユーザーがその考えを嫌うためです。カミソリを無料で配って、刃で儲けるという方法は、ジレットではうまくいくかもしれませんが、カミソリはWeb端末よりもはるかに小さなコミットメントです。携帯電話の端末メーカーは、サービス収入を獲得しようとすることなく、ハードウェアを販売することに満足しています。それは、おそらくインターネットクライアントのモデルになるべきです。誰かが、どのISPでも接続するために使用できる、Webブラウザを搭載した、見た目の良い小さな箱を販売すれば、国のすべてのテクノロジー嫌いがそれを買うでしょう。
[2] セキュリティは、常に設計上の決定よりも、失敗しないことに依存していますが、サーバーベースのソフトウェアの性質上、開発者は失敗しないことにより注意を払うようになります。サーバーを侵害すると、ASP(事業を続けたいと考えている)はセキュリティに注意する可能性が高いため、大きな損害が発生する可能性があります。
[3] 1995年にViawebを始めたとき、Javaアプレットはサーバーベースのアプリケーションを開発するために誰もが使うことになる技術だと考えられていました。アプレットは私たちにとって時代遅れのアイデアのように思えました。クライアントで実行されるプログラムをダウンロードするのですか?サーバーでプログラムを実行する方が簡単です。私たちはアプレットにほとんど時間を無駄にしませんでした。しかし、無数の他のスタートアップが、このタールピットに引き込まれたに違いありません。生き残れた者はほとんどいないでしょう。さもなければ、マイクロソフトは、最新のバージョンエクスプローラーでJavaを削除することはできなかったでしょう。
[4] この点は、Trevor Blackwellによるものです。彼は、「ソフトウェアの書き方のコストは、そのサイズとともに線形以上に増加する。これは、主に古いバグを修正するためであり、すべてバグが迅速に見つかれば、コストはより線形になる可能性がある。」と付け加えています。
[5] 見つけるのが最も難しいバグは、あるバグが別のバグを補償しているという複合バグのバリエーションかもしれません。あるバグを修正すると、別のバグが可視化されます。しかし、それは修正が原因のように見えるでしょう。なぜなら、それはあなたが最後に変更したものですから。
[6] Viawebでは、かつてソフトウェアの最悪の点を記述するコンテストを開催しました。2人のカスタマーサポート担当者が、今でもぞっとするようなエントリーで1位に輝きました。私たちはすぐに両方の問題を修正しました。
[7] Robert Morrisは、買い物客が注文するために使用する注文システムを作成しました。Trevor Blackwellは、画像ジェネレーターとマネージャーを作成しました。これは、商人によって注文の取得、統計の表示、ドメイン名の設定などに使用されました。私は、商人がサイトを構築するために使用するエディターを作成しました。注文システムと画像ジェネレーターはCとC++で書かれ、マネージャーは主にPerlで書かれ、エディターはLispで書かれました。
[8] 価格差別は非常に蔓延しています(小売業者が自分の購買力によってあなたにとって価格が低くなっていると言っているのをどれくらい聞いたことがありますか?)。そのため、私は、1936年のロビンソン・パットマン法によって米国で価格差別が違法であることを知って驚きました。この法律は、厳格に施行されているようには見えません。
[9] No Logoの中で、Naomi Kleinは、「都会の若者」に好まれる衣料品ブランドは、万引きを阻止しようとあまり努力していないと述べています。なぜなら、彼らのターゲット市場では、万引き犯はファッションリーダーでもあるからです。
[10] 企業は、何をアウトソーシングすべきか、何をすべきでないかをよく疑問に思います。考えられる答えの1つは、競争圧力に直接さらされていない仕事はすべてアウトソーシングすることです。なぜなら、アウトソーシングすることで、競争圧力にさらされるからです。
[11] 2人の男は、Dan BricklinとBob Frankstonでした。Danは、数日でBasicでプロトタイプを作成し、その後1年間、彼らはお互いに協力して(主に夜に)、6502マシン語で書かれたより強力なバージョンを作成しました。Danは当時ハーバードビジネススクールにいて、Bobは名目上、ソフトウェアを書く日中の仕事を持っていました。「ビジネスをすることに大きなリスクはありませんでした」とBobは書いています。「失敗すれば失敗するだけです。大したことではありません。」
[12] 私が言うほど簡単ではありません。口コミが広まるまでに、非常に長い時間がかかりました。そして、私たちはPR会社(確かに業界で最高の会社)を月額16,000ドルで雇うまで、多くの報道を受けるようになりませんでした。しかし、唯一の重要なチャネルが私たち自身のウェブサイトであったことは事実です。
[13] Macがそれほど優れていれば、なぜ負けたのでしょうか?再び、コストです。マイクロソフトはソフトウェアビジネスに集中し、安価なコンポーネントサプライヤーをAppleハードウェアに送り込みました。重要な時期にスーツが引き継いだことも、助けにはなりませんでした。
[14] Webベースのアプリケーションを支援し、次世代のソフトウェアがマイクロソフトに影を落とされないようにする1つの方法は、優れたオープンソースブラウザです。Mozillaはオープンソースですが、長年企業ソフトウェアであったために苦しんでいるようです。積極的にメンテナンスされている、小さく高速なブラウザは、それ自体で素晴らしいものになるでしょう。そして、おそらく企業が小さなWebアプライアンスを構築するようにも促すでしょう。
オープンソースのブラウザが適切に機能すれば、HTTPやHTMLは(Perlのように)進化を続けられるでしょう。[1] リンクを選択することとリンクをたどることを区別できるようになれば、Webベースのアプリケーションは大きく役立ちます。これを実現するには、HTTPを少し拡張して、1つのリクエストに複数のURLを許可するだけで済みます。カスケードメニューも役に立つでしょう。
世界を変えたいなら、新しいモザイクを作りましょう。時代遅れだと思っている? 1998年には、新しい検索エンジンを立ち上げるのは時代遅れだと多くの人が思っていましたが、Googleはその考えを覆しました。現在の選択肢が十分にひどいのであれば、常に新しいもののための余地があります。まず、すべての無料OSで動作することを確認しましょう。新しいものは、ユーザーから始まります。
[15] このことについて、おそらく誰よりも経験豊富なTrevor Blackwellは次のように書いています。
「サーバーベースのソフトウェアはプログラマーにとって非常に難しいので、大企業から根本的な経済的シフトを引き起こすと言えます。プログラマーは、自分の会社の場合にのみ提供する意思のある、集中力と献身が必要です。ソフトウェア会社は、あまり要求の厳しい環境で働く熟練した人材を雇うことができ、苦難に耐える非熟練の人材を雇うことができますが、非常に熟練した人材を雇って、尻を叩かせることはできません。資本がもはや必要ないため、大企業は提供できるものがほとんどありません。」
[16] このエッセイのオリジナルバージョンでは、Javascriptを避けるようにアドバイスしました。2001年には良い計画でしたが、Javascriptは現在動作しています。
謝辞 この論文の草稿を読んでくださったSarah Harlin、Trevor Blackwell、Robert Morris、Eric Raymond、Ken Anderson、Dan Giffinに感謝します。また、VisiCalcに関する情報提供をしてくださったDan BricklinとBob Frankston、そしてBBNでの講演の機会を与えてくださったKen Andersonにも感謝します。
このエッセイと他の14のエッセイは、Hackers & Paintersで見つけることができます。