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