Loading...

DER ANDERE WEG NACH VORN

Original

September 2001

(Dieser Artikel erklärt, warum ein Großteil der nächsten Generation von Software serverbasiert sein könnte, was das für Programmierer bedeuten würde und warum diese neue Art von Software eine großartige Gelegenheit für Startups ist. Er basiert auf einem Vortrag bei BBN Labs.)

Im Sommer 1995 beschlossen mein Freund Robert Morris und ich, ein Startup zu gründen. Damals lief die PR-Kampagne im Vorfeld des Börsengangs von Netscape auf Hochtouren und in der Presse wurde viel über Online-Handel gesprochen. Zu diesem Zeitpunkt gab es vielleicht dreißig echte Geschäfte im Web, die alle von Hand erstellt wurden. Wenn es viele Online-Shops geben sollte, würde es Software geben müssen, um sie zu erstellen, also beschlossen wir, etwas zu schreiben.

In der ersten Woche hatten wir vor, daraus eine gewöhnliche Desktop-Anwendung zu machen. Dann hatten wir eines Tages die Idee, die Software auf unserem Webserver auszuführen und den Browser als Schnittstelle zu verwenden. Wir versuchten, die Software so zu umschreiben, dass sie über das Web funktioniert, und es war klar, dass dies der richtige Weg war. Wenn wir unsere Software so schreiben, dass sie auf dem Server läuft, wäre es für die Benutzer und für uns viel einfacher.

Dies erwies sich als ein guter Plan. Jetzt, als Yahoo Store, ist diese Software der beliebteste Online-Shop-Builder mit rund 14.000 Benutzern.

Als wir Viaweb starteten, verstand kaum jemand, was wir meinten, als wir sagten, dass die Software auf dem Server lief. Erst mit der Einführung von Hotmail ein Jahr später begannen die Leute, es zu begreifen. Jetzt weiß jeder, dass dies ein valider Ansatz ist. Es gibt jetzt einen Namen für das, was wir waren: ein Application Service Provider oder ASP.

Ich denke, dass ein Großteil der nächsten Generation von Software nach diesem Modell geschrieben werden wird. Selbst Microsoft, das am meisten zu verlieren hat, scheint die Unvermeidlichkeit zu erkennen, einige Dinge vom Desktop zu entfernen. Wenn Software vom Desktop auf Server verschoben wird, wird es für Entwickler eine ganz andere Welt bedeuten. Dieser Artikel beschreibt die überraschenden Dinge, die wir als einige der ersten Besucher dieser neuen Welt gesehen haben. Insofern die Software auf Server migriert, ist das, was ich hier beschreibe, die Zukunft.

Die nächste Sache?

Wenn wir auf die Ära der Desktop-Software zurückblicken, werden wir uns über die Unannehmlichkeiten wundern, die die Leute in Kauf genommen haben, genauso wie wir uns jetzt über das wundern, was die frühen Autobesitzer in Kauf genommen haben. In den ersten zwanzig oder dreißig Jahren musste man ein Autoexperte sein, um ein Auto zu besitzen. Aber Autos waren so ein großer Gewinn, dass viele Leute, die keine Autoexperten waren, sie auch haben wollten.

Computer befinden sich jetzt in dieser Phase. Wenn Sie einen Desktop-Computer besitzen, lernen Sie viel mehr über sein Innenleben, als Sie eigentlich wissen wollen. Aber mehr als die Hälfte der Haushalte in den USA besitzt einen. Meine Mutter hat einen Computer, den sie für E-Mails und für die Buchhaltung verwendet. Vor etwa einem Jahr war sie alarmiert, einen Brief von Apple zu erhalten, der ihr einen Rabatt auf eine neue Version des Betriebssystems anbot. Es stimmt etwas nicht, wenn eine 65-jährige Frau, die einen Computer für E-Mails und die Buchhaltung verwenden möchte, über die Installation neuer Betriebssysteme nachdenken muss. Normale Benutzer sollten nicht einmal die Worte "Betriebssystem" kennen, geschweige denn "Gerätetreiber" oder "Patch".

Es gibt jetzt eine andere Möglichkeit, Software bereitzustellen, die Benutzer davor bewahrt, Systemadministratoren zu werden. Webbasierte Anwendungen sind Programme, die auf Webservern laufen und Webseiten als Benutzeroberfläche verwenden. Für den Durchschnittsnutzer wird diese neue Art von Software einfacher, günstiger, mobiler, zuverlässiger und oft leistungsfähiger sein als Desktop-Software.

Bei webbasierter Software müssen die meisten Benutzer sich um nichts kümmern, außer um die Anwendungen, die sie verwenden. All das unübersichtliche, veränderliche Zeug sitzt irgendwo auf einem Server und wird von Leuten gewartet, die gut in dieser Art von Dingen sind. Und so benötigen Sie im Allgemeinen keinen Computer, um Software zu verwenden. Alles, was Sie brauchen, ist etwas mit einer Tastatur, einem Bildschirm und einem Webbrowser. Vielleicht hat es drahtlosen Internetzugang. Vielleicht ist es auch Ihr Handy. Was auch immer es ist, es wird Unterhaltungselektronik sein: etwas, das etwa 200 Dollar kostet und von den Leuten hauptsächlich nach dem Aussehen des Gehäuses ausgewählt wird. Sie werden mehr für Internetdienste bezahlen als für die Hardware, genau wie Sie es jetzt mit Telefonen tun. [1]

Es wird etwa eine Zehntelsekunde dauern, bis ein Klick zum Server und zurück gelangt, daher werden Benutzer von stark interaktiver Software wie Photoshop die Berechnungen weiterhin auf dem Desktop durchführen lassen wollen. Aber wenn Sie sich die Dinge ansehen, für die die meisten Menschen Computer verwenden, wäre eine Latenz von einer Zehntelsekunde kein Problem. Meine Mutter braucht keinen Desktop-Computer, und es gibt viele Menschen wie sie.

Der Gewinn für Benutzer

In der Nähe meines Hauses steht ein Auto mit einem Aufkleber an der Stoßstange, auf dem "Tod vor Unannehmlichkeiten" steht. Die meisten Menschen werden die meiste Zeit die Option wählen, die am wenigsten Arbeit erfordert. Wenn sich webbasierte Software durchsetzt, wird das daran liegen, dass sie bequemer ist. Und es sieht so aus, als ob das für Benutzer und Entwickler gleichermaßen der Fall sein wird.

Um eine rein webbasierte Anwendung zu verwenden, benötigen Sie nur einen Browser, der mit dem Internet verbunden ist. So können Sie eine webbasierte Anwendung überall verwenden. Wenn Sie Software auf Ihrem Desktop-Computer installieren, können Sie sie nur auf diesem Computer verwenden. Schlimmer noch, Ihre Dateien sind auf diesem Computer gefangen. Die Unannehmlichkeit dieses Modells wird immer deutlicher, je mehr Menschen sich an Netzwerke gewöhnen.

Das dünne Ende des Keils war webbasiertes E-Mail. Millionen von Menschen wissen jetzt, dass Sie unabhängig vom Ort auf E-Mail-Nachrichten zugreifen können sollten. Und wenn Sie Ihre E-Mails sehen können, warum dann nicht auch Ihren Kalender? Wenn Sie ein Dokument mit Ihren Kollegen besprechen können, warum können Sie es dann nicht bearbeiten? Warum sollten Ihre Daten auf einem Computer auf einem weit entfernten Schreibtisch gefangen sein?

Die ganze Idee von "Ihrem Computer" verschwindet und wird durch "Ihre Daten" ersetzt. Sie sollten von jedem Computer aus auf Ihre Daten zugreifen können. Oder besser gesagt, von jedem Client, und ein Client muss kein Computer sein.

Clients sollten keine Daten speichern; sie sollten wie Telefone sein. Tatsächlich könnten sie zu Telefonen werden oder umgekehrt. Und da Clients immer kleiner werden, haben Sie einen weiteren Grund, Ihre Daten nicht auf ihnen zu speichern: Etwas, das Sie mit sich herumtragen, kann verloren gehen oder gestohlen werden. Ihr PDA im Taxi zu vergessen ist wie ein Festplattenabsturz, nur dass Ihre Daten an jemanden anderen gegeben werden, anstatt zu verschwinden.

Bei rein webbasierter Software werden weder Ihre Daten noch die Anwendungen auf dem Client gespeichert. Sie müssen also nichts installieren, um sie zu verwenden. Und wenn es keine Installation gibt, müssen Sie sich keine Sorgen machen, dass die Installation schief geht. Es kann keine Inkompatibilitäten zwischen der Anwendung und Ihrem Betriebssystem geben, weil die Software nicht auf Ihrem Betriebssystem läuft.

Da keine Installation erforderlich ist, wird es einfach und üblich sein, webbasierte Software auszuprobieren, bevor Sie sie "kaufen". Sie sollten erwarten können, jede webbasierte Anwendung kostenlos zu testen, indem Sie einfach die Website besuchen, auf der sie angeboten wird. Bei Viaweb war unsere gesamte Website wie ein großer Pfeil, der die Benutzer auf die Testfahrt zeigte.

Nachdem Sie die Demo ausprobiert haben, sollte die Registrierung für den Dienst nichts weiter erfordern, als ein kurzes Formular auszufüllen (je kürzer, desto besser). Und das sollte die letzte Arbeit sein, die der Benutzer erledigen muss. Mit webbasierter Software sollten Sie neue Releases erhalten, ohne extra zu bezahlen, ohne zu arbeiten oder möglicherweise sogar davon zu wissen.

Upgrades werden nicht mehr die großen Schocks sein, die sie jetzt sind. Im Laufe der Zeit werden Anwendungen leise mächtiger werden. Das wird den Entwicklern einiges an Mühe abverlangen. Sie müssen Software so konzipieren, dass sie aktualisiert werden kann, ohne die Benutzer zu verwirren. Das ist ein neues Problem, aber es gibt Möglichkeiten, es zu lösen.

Bei webbasierten Anwendungen verwenden alle die gleiche Version, und Fehler können behoben werden, sobald sie entdeckt werden. Daher sollte webbasierte Software viel weniger Fehler haben als Desktop-Software. Bei Viaweb bezweifle ich, dass wir jemals zu irgendeinem Zeitpunkt zehn bekannte Fehler hatten. Das ist um Größenordnungen besser als Desktop-Software.

Webbasierte Anwendungen können von mehreren Personen gleichzeitig verwendet werden. Dies ist ein offensichtlicher Gewinn für kollaborative Anwendungen, aber ich wette, dass Benutzer dies in den meisten Anwendungen wollen werden, sobald sie feststellen, dass es möglich ist. Es wird oft nützlich sein, zwei Personen beispielsweise dasselbe Dokument bearbeiten zu lassen. Viaweb erlaubte es mehreren Benutzern, eine Website gleichzeitig zu bearbeiten, eher, weil das die richtige Art war, die Software zu schreiben, als weil wir erwarteten, dass Benutzer das wollten, aber es stellte sich heraus, dass viele es taten.

Wenn Sie eine webbasierte Anwendung verwenden, sind Ihre Daten sicherer. Festplattenabstürze gehören zwar nicht der Vergangenheit an, aber Benutzer werden nichts mehr davon hören. Sie werden innerhalb von Serverfarmen passieren. Und Unternehmen, die webbasierte Anwendungen anbieten, werden tatsächlich Backups erstellen – nicht nur, weil sie echte Systemadministratoren haben, die sich um solche Dinge kümmern, sondern auch, weil ein ASP, das die Daten der Leute verliert, in großen, großen Schwierigkeiten stecken wird. Wenn Leute ihre eigenen Daten bei einem Festplattenabsturz verlieren, können sie nicht so wütend werden, weil sie nur auf sich selbst wütend sein können. Wenn ein Unternehmen ihre Daten für sie verliert, werden sie viel wütender.

Schließlich sollte webbasierte Software weniger anfällig für Viren sein. Wenn der Client nichts anderes als einen Browser ausführt, ist die Wahrscheinlichkeit geringer, dass Viren ausgeführt werden, und es gibt keine lokalen Daten, die beschädigt werden können. Und ein Programm, das die Server selbst angreift, sollte diese sehr gut verteidigt finden. [2]

Für Benutzer wird webbasierte Software weniger stressig sein. Ich denke, wenn Sie in den durchschnittlichen Windows-Benutzer schauen würden, würden Sie einen riesigen und weitgehend ungenutzten Wunsch nach Software entdecken, die diese Beschreibung erfüllt. Entfesselt könnte es eine mächtige Kraft sein.

Stadt des Codes

Für Entwickler ist der auffälligste Unterschied zwischen webbasierter und Desktop-Software, dass eine webbasierte Anwendung kein einzelnes Code-Stück ist. Es wird eher eine Sammlung von Programmen verschiedener Typen sein als ein einzelner großer Binärcode. Daher ist das Entwerfen webbasierter Software eher wie das Entwerfen einer Stadt als eines Gebäudes: Neben Gebäuden benötigt man Straßen, Straßenschilder, Versorgungsunternehmen, Polizei- und Feuerwehr, sowie Pläne für Wachstum und verschiedene Arten von Katastrophen.

Bei Viaweb umfasste die Software ziemlich große Anwendungen, mit denen Benutzer direkt sprachen, Programme, die diese Programme verwendeten, Programme, die ständig im Hintergrund liefen und nach Problemen suchten, Programme, die versuchten, Dinge neu zu starten, wenn sie kaputt gingen, Programme, die gelegentlich liefen, um Statistiken zu erstellen oder Indizes für Suchen zu erstellen, Programme, die wir explizit ausführten, um Ressourcen freizugeben oder Daten zu verschieben oder wiederherzustellen, Programme, die sich als Benutzer ausgaben (um die Leistung zu messen oder Fehler aufzudecken), Programme zur Diagnose von Netzwerkproblemen, Programme zum Erstellen von Backups, Schnittstellen zu externen Diensten, Software, die eine beeindruckende Sammlung von Zifferblättern betrieb, die Echtzeit-Serverstatistiken anzeigten (ein Hit bei Besuchern, aber auch für uns unverzichtbar), Modifikationen (einschließlich Fehlerbehebungen) an Open-Source-Software und eine große Anzahl von Konfigurationsdateien und Einstellungen. Trevor Blackwell schrieb ein spektakuläres Programm, um Stores auf neue Server im ganzen Land zu verschieben, ohne sie herunterzufahren, nachdem wir von Yahoo übernommen wurden. Programme schickten uns Nachrichten, Faxe und E-Mails an Benutzer, führten Transaktionen mit Kreditkartenverarbeitern durch und kommunizierten miteinander über Sockets, Pipes, HTTP-Anfragen, SSH, UDP-Pakete, Shared Memory und Dateien. Ein Teil von Viaweb bestand sogar aus dem Fehlen von Programmen, da einer der Schlüssel zur Unix-Sicherheit darin besteht, keine unnötigen Dienstprogramme auszuführen, die von Personen zum Eindringen in Ihre Server verwendet werden könnten.

Es endete nicht mit Software. Wir haben viel Zeit damit verbracht, über Serverkonfigurationen nachzudenken. Wir haben die Server selbst aus Komponenten gebaut – zum Teil, um Geld zu sparen, und zum Teil, um genau das zu bekommen, was wir wollten. Wir mussten überlegen, ob unser Upstream-ISP über ausreichend schnelle Verbindungen zu allen Backbones verfügte. Wir haben eine Reihe von Dates mit RAID-Lieferanten.

Aber Hardware ist nicht nur etwas, worüber man sich Sorgen machen muss. Wenn Sie sie kontrollieren, können Sie mehr für Benutzer tun. Bei einer Desktop-Anwendung können Sie bestimmte Mindesthardware angeben, aber Sie können nicht mehr hinzufügen. Wenn Sie die Server verwalten, können Sie in einem Schritt allen Ihren Benutzern ermöglichen, Personen per SMS zu benachrichtigen, Faxe zu senden, Befehle per Telefon zu senden oder Kreditkarten zu verarbeiten usw., indem Sie einfach die entsprechende Hardware installieren. Wir haben immer nach neuen Möglichkeiten gesucht, Funktionen mit Hardware hinzuzufügen, nicht nur, weil es den Benutzern gefiel, sondern auch, um uns von Konkurrenten abzuheben, die (entweder, weil sie Desktop-Software verkauften oder webbasierte Anwendungen über ISPs weiterverkauften) keine direkte Kontrolle über die Hardware hatten.

Da die Software in einer webbasierten Anwendung eher eine Sammlung von Programmen ist als ein einzelner Binärcode, kann sie in einer beliebigen Anzahl verschiedener Sprachen geschrieben werden. Wenn Sie Desktop-Software schreiben, werden Sie praktisch gezwungen, die Anwendung in der gleichen Sprache wie das zugrunde liegende Betriebssystem zu schreiben – das heißt C und C++. Und so wurden diese Sprachen (vor allem bei nicht-technischen Personen wie Managern und Risikokapitalgebern) zu den Sprachen für die "ernsthafte" Softwareentwicklung. Aber das war nur ein Artefakt der Art und Weise, wie Desktop-Software ausgeliefert werden musste. Bei serverbasierter Software können Sie jede beliebige Sprache verwenden. [3] Heute verwenden viele der Top-Hacker Sprachen, die weit von C und C++ entfernt sind: Perl, Python und sogar Lisp.

Bei serverbasierter Software kann Ihnen niemand sagen, welche Sprache Sie verwenden sollen, weil Sie das gesamte System bis hin zur Hardware kontrollieren. Verschiedene Sprachen eignen sich für verschiedene Aufgaben. Sie können die verwenden, die für jede Aufgabe am besten geeignet ist. Und wenn Sie Konkurrenten haben, bedeutet "Sie können" "Sie müssen" (wir werden später darauf zurückkommen), denn wenn Sie diesen Vorteil nicht nutzen, werden es Ihre Konkurrenten tun.

Die meisten unserer Konkurrenten verwendeten C und C++, und das machte ihre Software sichtbar schlechter, weil (unter anderem) sie keine Möglichkeit hatten, die Statuslosigkeit von CGI-Skripten zu umgehen. Wenn Sie etwas ändern wollten, mussten alle Änderungen auf einer Seite erfolgen, mit einem Update-Button am Ende. Wie ich an anderer Stelle geschrieben habe, konnten wir durch die Verwendung von Lisp, das viele Leute immer noch als Forschungssprache betrachten, den Viaweb-Editor so gestalten, dass er sich eher wie Desktop-Software verhält.

Releases

Eine der wichtigsten Änderungen in dieser neuen Welt ist die Art und Weise, wie Sie Releases durchführen. Im Desktop-Software-Geschäft ist ein Release ein großes Trauma, bei dem das ganze Unternehmen schwitzt und sich abmüht, ein einziges, riesiges Code-Stück herauszubringen. Offensichtliche Vergleiche drängen sich auf, sowohl in Bezug auf den Prozess als auch auf das entstehende Produkt.

Bei serverbasierter Software können Sie Änderungen fast so vornehmen, wie Sie es bei einem Programm tun würden, das Sie für sich selbst schreiben. Sie veröffentlichen Software als eine Reihe von inkrementellen Änderungen anstelle einer gelegentlichen großen Explosion. Ein typisches Desktop-Software-Unternehmen könnte ein oder zwei Releases pro Jahr machen. Bei Viaweb haben wir oft drei bis fünf Releases pro Tag gemacht.

Wenn Sie zu diesem neuen Modell wechseln, erkennen Sie, wie sehr die Softwareentwicklung von der Art und Weise beeinflusst wird, wie sie veröffentlicht wird. Viele der schlimmsten Probleme, die Sie im Desktop-Software-Geschäft sehen, sind auf die katastrophale Natur von Releases zurückzuführen.

Wenn Sie nur eine neue Version pro Jahr veröffentlichen, neigen Sie dazu, Fehler im Großhandel zu behandeln. Einige Zeit vor dem Veröffentlichungsdatum stellen Sie eine neue Version zusammen, in der die Hälfte des Codes herausgerissen und ersetzt wurde, was unzählige Fehler einführt. Dann tritt ein Trupp von QA-Leuten ein und beginnt, sie zu zählen, und die Programmierer arbeiten die Liste ab und beheben sie. Sie kommen im Allgemeinen nicht zum Ende der Liste, und tatsächlich ist sich niemand sicher, wo das Ende ist. Es ist wie das Herausfischen von Schutt aus einem Teich. Sie wissen nie wirklich, was in der Software passiert. Im besten Fall landen Sie mit einer statistischen Art von Korrektheit.

Bei serverbasierter Software ist der größte Teil der Änderung klein und inkrementell. Das an sich ist weniger wahrscheinlich, Fehler einzuführen. Es bedeutet auch, dass Sie wissen, was Sie am sorgfältigsten testen müssen, wenn Sie Software veröffentlichen wollen: das Letzte, was Sie geändert haben. Sie bekommen einen viel festeren Griff an den Code. In der Regel wissen Sie, was in ihm passiert. Sie haben natürlich nicht den Quellcode auswendig gelernt, aber wenn Sie den Quellcode lesen, tun Sie es wie ein Pilot, der die Instrumententafel abliest, nicht wie ein Detektiv, der versucht, ein Rätsel zu lösen.

Desktop-Software erzeugt eine gewisse Fatalität gegenüber Fehlern. Sie wissen, dass Sie etwas ausliefern, das mit Fehlern beladen ist, und Sie haben sogar Mechanismen eingerichtet, um dies zu kompensieren (z. B. Patch-Releases). Warum sollte man sich dann um ein paar mehr Sorgen machen? Bald veröffentlichen Sie ganze Funktionen, von denen Sie wissen, dass sie kaputt sind. Apple hat das Anfang des Jahres getan. Sie fühlten sich unter Druck, ihr neues Betriebssystem zu veröffentlichen, dessen Veröffentlichungstermin sich bereits viermal verschoben hatte, aber ein Teil der Software (Unterstützung für CDs und DVDs) war nicht fertig. Die Lösung? Sie haben das Betriebssystem ohne die unfertigen Teile veröffentlicht, und die Benutzer müssen sie später installieren.

Mit webbasierter Software müssen Sie Software nie veröffentlichen, bevor sie funktioniert, und Sie können sie sofort veröffentlichen, sobald sie funktioniert.

Der Branchenveteran mag denken: Es ist eine schöne Idee zu sagen, dass Sie Software nie veröffentlichen müssen, bevor sie funktioniert, aber was passiert, wenn Sie versprochen haben, eine neue Version Ihrer Software zu einem bestimmten Datum zu liefern? Bei webbasierter Software würden Sie ein solches Versprechen nicht abgeben, weil es keine Versionen gibt. Ihre Software ändert sich schrittweise und kontinuierlich. Einige Änderungen mögen größer sein als andere, aber die Idee von Versionen passt einfach nicht auf webbasierte Software.

Wenn sich jemand an Viaweb erinnert, mag das seltsam klingen, weil wir immer neue Versionen angekündigt haben. Das geschah ausschließlich aus PR-Gründen. Die Fachpresse, so lernten wir, denkt in Versionsnummern. Sie geben Ihnen große Berichterstattung für ein großes Release, was eine neue erste Ziffer in der Versionsnummer bedeutet, und im Allgemeinen höchstens einen Absatz für ein Punkt-Release, was eine neue Ziffer nach dem Dezimalpunkt bedeutet.

Einige unserer Konkurrenten boten Desktop-Software an und hatten tatsächlich Versionsnummern. Und für diese Releases, deren bloße Tatsache für uns ein Beweis für ihre Rückständigkeit war, erhielten sie jede Menge Publizität. Wir wollten nicht außen vor bleiben, also begannen wir auch unserer Software Versionsnummern zu geben. Wenn wir etwas Publizität wollten, machten wir eine Liste aller Funktionen, die wir seit dem letzten "Release" hinzugefügt hatten, klebten eine neue Versionsnummer auf die Software und gaben eine Pressemitteilung heraus, in der wir sagten, dass die neue Version sofort verfügbar sei. Erstaunlicherweise hat uns nie jemand darauf angesprochen.

Bis zu dem Zeitpunkt, als wir übernommen wurden, hatten wir das dreimal gemacht, also waren wir bei Version 4. Version 4.1, wenn ich mich richtig erinnere. Nachdem Viaweb zu Yahoo Store wurde, gab es keinen so verzweifelten Bedarf mehr an Publizität, so dass der Gedanke an Versionsnummern, obwohl sich die Software weiterentwickelte, stillschweigend fallen gelassen wurde.

Fehler

Der andere große technische Vorteil webbasierter Software ist, dass Sie die meisten Fehler reproduzieren können. Sie haben die Daten der Benutzer direkt auf Ihrer Festplatte. Wenn jemand Ihre Software zum Absturz bringt, müssen Sie nicht versuchen zu erraten, was los ist, wie Sie es bei Desktop-Software tun würden: Sie sollten in der Lage sein, den Fehler zu reproduzieren, während sie mit Ihnen telefonieren. Möglicherweise wissen Sie es sogar schon, wenn Sie Code in Ihrer Anwendung eingebaut haben, der Fehler bemerkt.

Webbasierte Software wird rund um die Uhr verwendet, so dass alles, was Sie tun, sofort auf die Probe gestellt wird. Fehler treten schnell auf.

Software-Unternehmen werden manchmal beschuldigt, die Benutzer ihre Software debuggen zu lassen. Und genau das befürworte ich. Für webbasierte Software ist es tatsächlich ein guter Plan, weil die Fehler weniger und flüchtiger sind. Wenn Sie Software schrittweise veröffentlichen, erhalten Sie von Anfang an viel weniger Fehler. Und wenn Sie Fehler reproduzieren und Änderungen sofort veröffentlichen können, können Sie die meisten Fehler beheben, sobald sie auftreten. Wir hatten nie so viele Fehler gleichzeitig, dass wir uns mit einem formalen Fehlerverfolgungssystem hätten beschäftigen müssen.

Sie sollten Änderungen natürlich testen, bevor Sie sie veröffentlichen, so dass keine großen Fehler veröffentlicht werden. Die wenigen, die unweigerlich durchrutschen, werden Grenzfälle betreffen und nur die wenigen Benutzer betreffen, die darauf stoßen, bevor sich jemand beschwert. Solange Sie Fehler sofort beheben, ist der Nettoeffekt für den durchschnittlichen Benutzer viel weniger Fehler. Ich bezweifle, dass der durchschnittliche Viaweb-Benutzer jemals einen Fehler gesehen hat.

Frische Fehler zu beheben ist einfacher, als alte zu beheben. Es ist in der Regel ziemlich schnell, einen Fehler in Code zu finden, den Sie gerade geschrieben haben. Wenn er auftaucht, wissen Sie oft, was falsch ist, bevor Sie überhaupt auf den Quellcode schauen, weil Sie sich schon unbewusst Sorgen darüber gemacht haben. Einen Fehler in etwas zu beheben, das Sie vor sechs Monaten geschrieben haben (der Durchschnittsfall, wenn Sie einmal im Jahr eine Veröffentlichung durchführen), ist viel mehr Arbeit. Und da Sie den Code nicht so gut verstehen, ist es wahrscheinlicher, dass Sie ihn auf eine hässliche Art und Weise beheben oder sogar weitere Fehler einführen. [4]

Wenn Sie Fehler frühzeitig erkennen, erhalten Sie auch weniger zusammengesetzte Fehler. Zusammengesetzte Fehler sind zwei separate Fehler, die miteinander interagieren: Sie stolpern beim Treppenabgang, und als Sie nach dem Handlauf greifen, löst er sich in Ihrer Hand. In der Software ist diese Art von Fehler am schwierigsten zu finden und hat auch die schlimmsten Folgen. [5] Der traditionelle Ansatz, "alles kaputt zu machen und dann die Fehler herauszufiltern", führt von Natur aus zu vielen zusammengesetzten Fehlern. Und Software, die in einer Reihe von kleinen Änderungen veröffentlicht wird, neigt von Natur aus nicht dazu. Die Böden werden ständig von losen Gegenständen gereinigt, die sich später in etwas verfangen könnten.

Es hilft, wenn Sie eine Technik namens funktionale Programmierung verwenden. Funktionale Programmierung bedeutet, Nebenwirkungen zu vermeiden. Das ist etwas, das man eher in Forschungsarbeiten als in kommerzieller Software sieht, aber für webbasierte Anwendungen erweist es sich als sehr nützlich. Es ist schwierig, ganze Programme als rein funktionalen Code zu schreiben, aber Sie können große Teile auf diese Weise schreiben. Es macht diese Teile Ihrer Software einfacher zu testen, weil sie keinen Zustand haben, und das ist sehr bequem in einer Situation, in der Sie ständig kleine Änderungen vornehmen und testen. Ich habe einen großen Teil des Viaweb-Editors in diesem Stil geschrieben, und wir haben unsere Skriptsprache, RTML, zu einer rein funktionalen Sprache gemacht.

Leute aus dem Desktop-Software-Geschäft werden das kaum glauben, aber bei Viaweb wurden Fehler fast zu einem Spiel. Da die meisten veröffentlichten Fehler Grenzfälle betrafen, waren die Benutzer, die darauf stießen, wahrscheinlich fortgeschrittene Benutzer, die die Grenzen ausloteten. Fortgeschrittene Benutzer sind toleranter gegenüber Fehlern, besonders da Sie sie wahrscheinlich im Zuge der Hinzufügung einer Funktion eingeführt haben, die sie sich gewünscht haben. Tatsächlich waren fortgeschrittene Benutzer oft stolz darauf, einen Fehler zu finden, weil Fehler selten waren und man ausgeklügelte Dinge tun musste, um sie zu sehen. Sie riefen den Support eher in Triumphstimmung als in Wut an, als ob sie Punkte gegen uns erzielt hätten.

Support

Wenn Sie Fehler reproduzieren können, ändert das Ihre Herangehensweise an den Kundensupport. Bei den meisten Software-Unternehmen wird Support als Möglichkeit angeboten, Kunden ein gutes Gefühl zu geben. Sie rufen Sie entweder wegen eines bekannten Fehlers an oder sie machen einfach etwas falsch, und Sie müssen herausfinden, was. In beiden Fällen können Sie nicht viel von ihnen lernen. Und so neigen Sie dazu, Support-Anrufe als lästig zu betrachten, die Sie so weit wie möglich von Ihren Entwicklern isolieren wollen.

So liefen die Dinge bei Viaweb nicht. Bei Viaweb war der Support kostenlos, weil wir von Kunden hören wollten. Wenn jemand ein Problem hatte, wollten wir sofort davon erfahren, damit wir den Fehler reproduzieren und eine Korrektur veröffentlichen konnten.

Daher standen die Entwickler bei Viaweb immer in engem Kontakt mit dem Support. Die Mitarbeiter des Kundensupports saßen etwa dreißig Fuß von den Programmierern entfernt und wussten, dass sie alles mit einem Bericht über einen echten Fehler unterbrechen konnten. Wir würden ein Board Meeting verlassen, um einen schwerwiegenden Fehler zu beheben.

Unser Ansatz beim Support machte alle glücklicher. Die Kunden waren begeistert. Stellen Sie sich vor, wie es sich anfühlt, eine Support-Hotline anzurufen und wie jemand behandelt zu werden, der wichtige Neuigkeiten bringt. Die Mitarbeiter des Kundensupports mochten es, weil es bedeutete, dass sie den Benutzern helfen konnten, anstatt ihnen Skripte vorzulesen. Und die Programmierer mochten es, weil sie Fehler reproduzieren konnten, anstatt nur vage Berichte aus zweiter Hand darüber zu hören.

Unsere Politik, Fehler im laufenden Betrieb zu beheben, veränderte die Beziehung zwischen Kundensupport-Mitarbeitern und Hackern. Bei den meisten Software-Unternehmen sind Support-Mitarbeiter unterbezahlte menschliche Schutzschilde, und Hacker sind kleine Kopien von Gott Vater, Schöpfer der Welt. Was auch immer das Verfahren zur Meldung von Fehlern ist, es ist wahrscheinlich einseitig: Support-Mitarbeiter, die von Fehlern hören, füllen ein Formular aus, das irgendwann (möglicherweise über QA) an Programmierer weitergegeben wird, die es auf ihre Liste der Dinge setzen, die zu tun sind. Bei Viaweb war es ganz anders. Innerhalb einer Minute, nachdem sie von einem Kunden von einem Fehler gehört hatten, konnten die Support-Mitarbeiter neben einem Programmierer stehen und hören, wie er sagte: "Mist, du hast Recht, es ist ein Fehler." Es freute die Support-Mitarbeiter zu hören, dass "du hast Recht" von den Hackern kam. Sie brachten uns früher Fehler mit der gleichen erwartungsvollen Miene wie eine Katze, die Ihnen eine Maus bringt, die sie gerade getötet hat. Es machte sie auch vorsichtiger bei der Beurteilung der Schwere eines Fehlers, weil jetzt ihre Ehre auf dem Spiel stand.

Nachdem wir von Yahoo übernommen wurden, wurden die Mitarbeiter des Kundensupports weit weg von den Programmierern verlegt. Erst dann wurde uns klar, dass sie tatsächlich QA und zu einem gewissen Grad auch Marketing waren. Neben dem Auffinden von Fehlern waren sie die Hüter des Wissens über vage, fehlerhafte Dinge, wie z. B. Funktionen, die Benutzer verwirrten. [6] Sie waren auch eine Art Stellvertreter-Fokusgruppe; wir konnten sie fragen, welche von zwei neuen Funktionen Benutzer mehr wollten, und sie hatten immer Recht.

Moral

Die Möglichkeit, Software sofort zu veröffentlichen, ist ein großer Motivator. Oft dachte ich auf dem Weg zur Arbeit über eine Änderung nach, die ich an der Software vornehmen wollte, und tat sie an diesem Tag. Das funktionierte auch für größere Funktionen. Selbst wenn etwas zwei Wochen lang zum Schreiben dauern sollte (wenige Projekte dauerten länger), wusste ich, dass ich die Wirkung in der Software sehen konnte, sobald es fertig war.

Hätte ich ein Jahr auf die nächste Veröffentlichung warten müssen, hätte ich die meisten dieser Ideen, zumindest für eine Weile, beiseite gelegt. Das Ding mit Ideen ist aber, dass sie zu mehr Ideen führen. Haben Sie schon einmal bemerkt, dass, wenn Sie sich hinsetzen, um etwas zu schreiben, die Hälfte der Ideen, die am Ende darin landen, solche sind, die Sie sich während des Schreibens ausgedacht haben? Das Gleiche passiert mit Software. Wenn Sie daran arbeiten, eine Idee zu implementieren, bekommen Sie weitere Ideen. Das Beiseitelegen einer Idee kostet Sie also nicht nur diese Verzögerung bei der Implementierung, sondern auch all die Ideen, die aus der Implementierung entstanden wären. Tatsächlich hemmt das Beiseitelegen einer Idee wahrscheinlich sogar neue Ideen: Wenn Sie anfangen, über eine neue Funktion nachzudenken, bekommen Sie das Regal ins Blickfeld und denken: "Aber ich habe schon eine Menge neuer Dinge, die ich für die nächste Veröffentlichung machen möchte."

Was große Unternehmen anstelle der Implementierung von Funktionen tun, ist, sie zu planen. Bei Viaweb gerieten wir manchmal in Schwierigkeiten wegen dieses Kontos. Investoren und Analysten fragten uns, was wir für die Zukunft geplant hätten. Die ehrliche Antwort wäre gewesen, dass wir keine Pläne hatten. Wir hatten allgemeine Vorstellungen über Dinge, die wir verbessern wollten, aber wenn wir es gewusst hätten, hätten wir es schon getan. Was würden wir in den nächsten sechs Monaten tun? Was auch immer wie der größte Gewinn aussah. Ich weiß nicht, ob ich diese Antwort jemals gewagt habe, aber das war die Wahrheit. Pläne sind nur ein anderes Wort für Ideen auf dem Regal. Wenn wir auf gute Ideen kamen, haben wir sie umgesetzt.

Bei Viaweb, wie bei vielen Software-Unternehmen, hatte der größte Teil des Codes einen eindeutigen Besitzer. Aber wenn man etwas besaß, besaß man es wirklich: Niemand außer dem Besitzer einer Software musste ein Release genehmigen (oder sogar wissen). Es gab keinen Schutz vor Beschädigungen außer der Angst, sich vor seinen Kollegen zum Idioten zu machen, und das war mehr als genug. Ich habe vielleicht den Eindruck erweckt, dass wir einfach unbekümmert Code geschrieben haben. Wir waren zwar schnell, aber wir haben sehr sorgfältig überlegt, bevor wir Software auf diese Server veröffentlicht haben. Und Aufmerksamkeit ist wichtiger für die Zuverlässigkeit als Langsamkeit. Weil er aufmerksam ist, kann ein Marinepilot ein 40.000 Pfund schweres Flugzeug mit 140 Meilen pro Stunde bei Nacht sicherer auf einem rollenden Deck landen, als der durchschnittliche Teenager ein Bagel schneiden kann.

Diese Art, Software zu schreiben, ist natürlich ein zweischneidiges Schwert. Es funktioniert viel besser für ein kleines Team von guten, vertrauten Programmierern als für ein großes Unternehmen mit mittelmäßigen Programmierern, in dem schlechte Ideen von Ausschüssen aufgefangen werden, anstatt von den Personen, die sie hatten.

Brooks umgekehrt

Glücklicherweise erfordert webbasierte Software weniger Programmierer. Ich habe einmal für ein mittelständisches Desktop-Software-Unternehmen gearbeitet, das über 100 Mitarbeiter im Bereich Engineering insgesamt hatte. Nur 13 davon waren in der Produktentwicklung tätig. Alle anderen arbeiteten an Releases, Ports und so weiter. Bei webbasierter Software brauchen Sie (höchstens) die 13 Personen, weil es keine Releases, Ports und so weiter gibt.

Viaweb wurde von nur drei Personen geschrieben. [7] Ich war immer unter Druck, mehr Leute einzustellen, weil wir gekauft werden wollten und wir wussten, dass Käufer es schwer haben würden, einen hohen Preis für ein Unternehmen mit nur drei Programmierern zu zahlen. (Lösung: Wir stellten mehr Leute ein, schufen aber neue Projekte für sie.)

Wenn Sie Software mit weniger Programmierern schreiben können, sparen Sie mehr als nur Geld. Wie Fred Brooks in Der Mythos vom Mann-Monat feststellte, führt das Hinzufügen von Personen zu einem Projekt dazu, dass es langsamer wird. Die Anzahl der möglichen Verbindungen zwischen Entwicklern wächst exponentiell mit der Größe der Gruppe. Je größer die Gruppe, desto mehr Zeit verbringen sie in Meetings, um zu verhandeln, wie ihre Software zusammenarbeiten wird, und desto mehr Fehler entstehen durch unvorhergesehene Interaktionen. Glücklicherweise funktioniert dieser Prozess auch umgekehrt: Wenn Gruppen kleiner werden, wird die Softwareentwicklung exponentiell effizienter. Ich kann mich nicht erinnern, dass die Programmierer bei Viaweb jemals ein echtes Meeting hatten. Wir hatten nie mehr zu sagen, als wir auf dem Weg zum Mittagessen sagen konnten.

Wenn es hier einen Nachteil gibt, dann ist es der, dass alle Programmierer bis zu einem gewissen Grad auch Systemadministratoren sein müssen. Wenn Sie Software hosten, muss jemand die Server im Auge behalten, und in der Praxis sind die einzigen Personen, die das richtig machen können, diejenigen, die die Software geschrieben haben. Bei Viaweb hatte unser System so viele Komponenten und änderte sich so häufig, dass es keine eindeutige Grenze zwischen Software und Infrastruktur gab. Eine willkürliche Festlegung einer solchen Grenze hätte unsere Designentscheidungen eingeschränkt. Und so hofften wir zwar ständig, dass eines Tages ("in ein paar Monaten") alles stabil genug sein würde, so dass wir jemanden einstellen könnten, dessen Aufgabe es war, sich nur um die Server zu kümmern, aber es passierte nie.

Ich glaube nicht, dass es anders sein kann, solange man das Produkt noch aktiv entwickelt. Webbasierte Software wird nie etwas sein, das man schreibt, eincheckt und nach Hause geht. Es ist ein Lebewesen, das gerade auf Ihren Servern läuft. Ein schlechter Fehler könnte nicht nur den Prozess eines Benutzers zum Absturz bringen, sondern sie alle zum Absturz bringen. Wenn ein Fehler in Ihrem Code einige Daten auf der Festplatte beschädigt, müssen Sie ihn beheben. Und so weiter. Wir haben festgestellt, dass man die Server nicht jede Minute beobachten muss (nach dem ersten Jahr oder so), aber man sollte die Dinge, die man kürzlich geändert hat, auf jeden Fall im Auge behalten. Man veröffentlicht Code nicht spät nachts und geht dann nach Hause.

Benutzer beobachten

Bei serverbasierter Software sind Sie in engerem Kontakt mit Ihrem Code. Sie können auch in engerem Kontakt mit Ihren Benutzern sein. Intuit ist dafür bekannt, sich Kunden in Einzelhandelsgeschäften vorzustellen und zu fragen, ob sie ihnen nach Hause folgen dürfen. Wenn Sie schon einmal gesehen haben, wie jemand Ihre Software zum ersten Mal verwendet hat, wissen Sie, welche Überraschungen sie erwartet haben müssen.

Software sollte tun, was Benutzer denken, dass sie tut. Aber Sie können sich nicht vorstellen, was Benutzer denken werden, glauben Sie mir, bis Sie sie beobachten. Und serverbasierte Software gibt Ihnen beispiellose Informationen über ihr Verhalten. Sie sind nicht auf kleine, künstliche Fokusgruppen beschränkt. Sie können jeden Klick sehen, den jeder Benutzer macht. Sie müssen sorgfältig überlegen, was Sie sich ansehen wollen, weil Sie die Privatsphäre der Benutzer nicht verletzen wollen, aber selbst die allgemeinste statistische Stichprobenziehung kann sehr nützlich sein.

Wenn Sie die Benutzer auf Ihrem Server haben, müssen Sie sich beispielsweise nicht auf Benchmarks verlassen. Benchmarks sind simulierte Benutzer. Mit serverbasierter Software können Sie echte Benutzer beobachten. Um zu entscheiden, was optimiert werden soll, melden Sie sich einfach bei einem Server an und sehen Sie, was die gesamte CPU beansprucht. Und Sie wissen auch, wann Sie mit der Optimierung aufhören müssen: Wir haben den Viaweb-Editor schließlich so weit gebracht, dass er eher speichergebunden als CPU-gebunden war

Die Probefahrt war der Weg, wie wir fast alle unsere neuen Benutzer gewonnen haben. Ich denke, es wird bei den meisten webbasierten Anwendungen genauso sein. Wenn Benutzer eine Probefahrt erfolgreich absolvieren können, werden sie das Produkt mögen. Wenn sie verwirrt oder gelangweilt werden, werden sie es nicht tun. Alles, was wir tun könnten, um mehr Menschen durch die Probefahrt zu bringen, würde unser Wachstum steigern.

Ich habe mir die Klickpfade von Personen angesehen, die die Probefahrt absolvierten, und festgestellt, dass sie an einem bestimmten Schritt verwirrt wurden und auf die Schaltfläche "Zurück" des Browsers klickten. (Wenn Sie versuchen, webbasierte Anwendungen zu schreiben, werden Sie feststellen, dass die Schaltfläche "Zurück" zu einem Ihrer interessantesten philosophischen Probleme wird.) Daher habe ich an dieser Stelle eine Nachricht hinzugefügt, in der Benutzer darauf hingewiesen werden, dass sie fast fertig sind, und sie daran erinnert, nicht auf die Schaltfläche "Zurück" zu klicken. Noch etwas Großartiges an webbasierter Software ist, dass Sie sofortiges Feedback von Änderungen erhalten: Die Anzahl der Personen, die die Probefahrt abgeschlossen haben, stieg sofort von 60 % auf 90 %. Und da die Anzahl der neuen Benutzer von der Anzahl der abgeschlossenen Probefahrten abhing, stieg unser Umsatzwachstum nur durch diese Änderung um 50 %.

Geld

Anfang der 1990er-Jahre las ich einen Artikel, in dem jemand sagte, dass Software ein Abonnementgeschäft sei. Zuerst schien dies eine sehr zynische Aussage zu sein. Später erkannte ich jedoch, dass sie die Realität widerspiegelt: Softwareentwicklung ist ein kontinuierlicher Prozess. Ich denke, es ist sauberer, wenn Sie offen Abonnementgebühren verlangen, anstatt Menschen zu zwingen, immer wieder neue Versionen zu kaufen und zu installieren, damit sie Sie weiterhin bezahlen. Und glücklicherweise sind Abonnements die natürliche Art, webbasierte Anwendungen abzurechnen.

Das Hosten von Anwendungen ist ein Bereich, in dem Unternehmen eine Rolle spielen werden, die wahrscheinlich nicht von Freeware ausgefüllt werden kann. Das Hosten von Anwendungen ist sehr stressig und hat echte Kosten. Niemand wird es kostenlos tun wollen.

Für Unternehmen sind webbasierte Anwendungen eine ideale Einnahmequelle. Anstatt jedes Quartal mit einem leeren Blatt Papier zu beginnen, haben Sie einen wiederkehrenden Umsatzstrom. Da sich Ihre Software allmählich weiterentwickelt, müssen Sie sich keine Sorgen machen, dass ein neues Modell scheitert; es muss nie ein neues Modell geben, und wenn Sie etwas an der Software tun, das Benutzer hassen, werden Sie es sofort wissen. Sie haben keine Probleme mit uneinbringlichen Rechnungen; wenn jemand nicht bezahlt, können Sie den Dienst einfach deaktivieren. Und es besteht keine Gefahr der Piraterie.

Dieser letzte "Vorteil" könnte sich als Problem erweisen. Ein gewisses Maß an Piraterie ist für Softwareunternehmen von Vorteil. Wenn ein Benutzer Ihre Software zu keinem Preis gekauft hätte, haben Sie nichts verloren, wenn er eine Raubkopie verwendet. Tatsächlich gewinnen Sie, weil er ein weiterer Benutzer ist, der dazu beiträgt, Ihre Software zum Standard zu machen – oder der später eine Kopie kaufen könnte, wenn er die High School abschließt.

Wenn sie können, versuchen Unternehmen gerne, etwas namens Preisdiskriminierung durchzuführen, was bedeutet, dass sie jedem Kunden so viel berechnen, wie er sich leisten kann. [8] Software eignet sich besonders gut für Preisdiskriminierung, da die Grenzkosten nahe Null liegen. Das ist der Grund, warum einige Software auf Suns mehr kostet als auf Intel-Boxen: Ein Unternehmen, das Suns verwendet, ist nicht daran interessiert, Geld zu sparen, und kann sicher mehr berechnet werden. Piraterie ist effektiv die unterste Stufe der Preisdiskriminierung. Ich denke, dass Softwareunternehmen dies verstehen und bewusst ein Auge auf einige Arten von Piraterie zudrücken. [9] Mit serverbasierter Software müssen sie sich eine andere Lösung einfallen lassen.

Webbasierte Software verkauft sich gut, insbesondere im Vergleich zu Desktop-Software, weil sie einfach zu kaufen ist. Sie könnten denken, dass sich Menschen entscheiden, etwas zu kaufen, und es dann kaufen, als zwei getrennte Schritte. Das dachte ich vor Viaweb, soweit ich überhaupt darüber nachdachte. Tatsächlich kann der zweite Schritt sich auf den ersten zurückwirken: Wenn etwas schwer zu kaufen ist, werden die Leute ihre Meinung darüber ändern, ob sie es wollten. Und umgekehrt: Sie werden mehr von etwas verkaufen, wenn es einfach zu kaufen ist. Ich kaufe mehr Bücher, weil Amazon existiert. Webbasierte Software ist fast das einfachste Ding der Welt, das man kaufen kann, besonders wenn man gerade eine Online-Demo gemacht hat. Benutzer sollten nicht viel mehr tun müssen, als eine Kreditkartennummer einzugeben. (Lassen Sie sie auf Ihre Gefahr mehr tun.)

Manchmal wird webbasierte Software über ISPs angeboten, die als Wiederverkäufer fungieren. Das ist eine schlechte Idee. Sie müssen die Server verwalten, weil Sie sowohl Hardware als auch Software ständig verbessern müssen. Wenn Sie die direkte Kontrolle über die Server aufgeben, geben Sie die meisten Vorteile der Entwicklung webbasierter Anwendungen auf.

Mehrere unserer Konkurrenten haben sich auf diese Weise selbst ins Bein geschossen – normalerweise, denke ich, weil sie von Anzügen überrannt wurden, die von diesem riesigen potenziellen Kanal begeistert waren und nicht erkannten, dass er das Produkt ruinieren würde, das sie hoffentlich darüber verkaufen wollten. Webbasierte Software über ISPs zu verkaufen, ist wie Sushi über Verkaufsautomaten zu verkaufen.

Kunden

Wer werden die Kunden sein? Bei Viaweb waren es zunächst Einzelpersonen und kleinere Unternehmen, und ich denke, dies wird die Regel bei webbasierten Anwendungen sein. Dies sind die Benutzer, die bereit sind, neue Dinge auszuprobieren, zum Teil, weil sie flexibler sind, und zum Teil, weil sie die niedrigeren Kosten neuer Technologien wünschen.

Webbasierte Anwendungen werden oft auch für große Unternehmen die beste Lösung sein (obwohl sie es langsam erkennen werden). Das beste Intranet ist das Internet. Wenn ein Unternehmen echte webbasierte Anwendungen verwendet, wird die Software besser funktionieren, die Server werden besser verwaltet und Mitarbeiter haben von überall aus Zugriff auf das System.

Das Argument gegen diesen Ansatz dreht sich normalerweise um Sicherheit: Wenn der Zugriff für Mitarbeiter einfacher ist, ist er es auch für Kriminelle. Einige größere Händler waren zögerlich, Viaweb zu verwenden, weil sie glaubten, dass die Kreditkarteninformationen der Kunden auf ihren eigenen Servern sicherer wären. Es war nicht einfach, diesen Punkt diplomatisch zu verdeutlichen, aber tatsächlich waren die Daten in unseren Händen mit ziemlicher Sicherheit sicherer als in ihren. Wer kann bessere Leute für die Sicherheitsverwaltung einstellen, ein Technologie-Startup, dessen gesamtes Geschäft die Verwaltung von Servern ist, oder ein Bekleidungsgeschäft? Wir hatten nicht nur bessere Leute, die sich um die Sicherheit kümmerten, sondern wir machten uns auch mehr Sorgen darum. Wenn jemand in die Server des Bekleidungsgeschäfts einbrechen würde, würde dies höchstens einen Händler betreffen, könnte wahrscheinlich vertuscht werden und im schlimmsten Fall würde eine Person entlassen. Wenn jemand in unsere einbrechen würde, könnte dies Tausende von Händlern betreffen, würde wahrscheinlich in CNet als Nachricht erscheinen und uns in den Ruin treiben.

Wenn Sie Ihr Geld sicher aufbewahren möchten, bewahren Sie es dann unter Ihrer Matratze zu Hause auf oder legen Sie es in eine Bank? Dieses Argument gilt für jeden Aspekt der Serververwaltung: nicht nur für Sicherheit, sondern auch für Verfügbarkeit, Bandbreite, Lastverwaltung, Backups usw. Unser Dasein hing davon ab, diese Dinge richtig zu machen. Serverprobleme waren für uns das große No-Go, wie ein gefährliches Spielzeug für einen Spielzeughersteller oder ein Salmonellen-Ausbruch für einen Lebensmittelverarbeiter.

Ein großes Unternehmen, das webbasierte Anwendungen verwendet, lagert in diesem Sinne IT aus. So drastisch es auch klingt, ich denke, dies ist im Allgemeinen eine gute Idee. Unternehmen erhalten auf diese Weise wahrscheinlich einen besseren Service als von internen Systemadministratoren. Systemadministratoren können mürrisch und unaufmerksam werden, weil sie nicht direkt dem Wettbewerbsdruck ausgesetzt sind: Ein Verkäufer muss mit Kunden umgehen, und ein Entwickler muss mit der Software der Konkurrenz umgehen, aber ein Systemadministrator, wie ein alter Junggeselle, hat nur wenige externe Kräfte, die ihn in Schach halten. [10] Bei Viaweb hatten wir viele externe Kräfte, die uns in Schach hielten. Die Leute, die uns anriefen, waren Kunden, nicht nur Kollegen. Wenn ein Server blockierte, sprangen wir; allein der Gedanke daran gibt mir Jahre später noch einen Adrenalinschub.

Daher werden webbasierte Anwendungen normalerweise auch die richtige Antwort für große Unternehmen sein. Sie werden es jedoch als letzte erkennen, genau wie bei Desktop-Computern. Und zum Teil aus dem gleichen Grund: Es wird viel Geld wert sein, um große Unternehmen davon zu überzeugen, dass sie etwas Teureres brauchen.

Es gibt immer eine Tendenz bei wohlhabenden Kunden, teure Lösungen zu kaufen, selbst wenn billige Lösungen besser sind, weil die Leute, die teure Lösungen anbieten, mehr für den Verkauf ausgeben können. Bei Viaweb waren wir immer dagegen. Wir haben mehrere High-End-Händler an Web-Beratungsfirmen verloren, die sie davon überzeugt haben, dass sie besser dran wären, wenn sie eine halbe Million Dollar für einen maßgeschneiderten Online-Shop auf ihrem eigenen Server bezahlen würden. In der Regel waren sie nicht besser dran, wie mehr als einer feststellte, als die Weihnachtseinkaufssaison kam und die Lasten auf ihrem Server stiegen. Viaweb war viel ausgefeilter als das, was die meisten dieser Händler bekamen, aber wir konnten es uns nicht leisten, es ihnen zu sagen. Mit 300 Dollar pro Monat konnten wir es uns nicht leisten, ein Team von gut gekleideten und autoritär klingenden Leuten zu schicken, um Präsentationen für Kunden zu halten.

Ein großer Teil dessen, was große Unternehmen zusätzlich bezahlen, sind die Kosten für den Verkauf teurer Dinge an sie. (Wenn das Verteidigungsministerium tausend Dollar für Toilettensitze bezahlt, liegt das zum Teil daran, dass es viel kostet, Toilettensitze für tausend Dollar zu verkaufen.) Und das ist ein Grund, warum Intranet-Software weiterhin florieren wird, obwohl sie wahrscheinlich eine schlechte Idee ist. Es ist einfach teurer. An diesem Rätsel können Sie nichts ändern, daher ist der beste Plan, sich zunächst an die kleineren Kunden zu wenden. Die restlichen werden mit der Zeit kommen.

Sohn des Servers

Das Ausführen von Software auf dem Server ist nichts Neues. Tatsächlich ist es das alte Modell: Mainframe-Anwendungen sind alle serverbasiert. Wenn serverbasierte Software so eine gute Idee ist, warum hat sie das letzte Mal verloren? Warum haben Desktop-Computer Mainframes überholt?

Zunächst sahen Desktop-Computer nicht nach einer großen Bedrohung aus. Die ersten Benutzer waren alle Hacker – oder Hobbyisten, wie sie damals genannt wurden. Sie mochten Mikrocomputer, weil sie billig waren. Zum ersten Mal konnte man seinen eigenen Computer haben. Der Ausdruck "Personal Computer" ist jetzt Teil der Sprache, aber als er zum ersten Mal verwendet wurde, hatte er einen bewusst kühnen Klang, wie der Ausdruck "persönlicher Satellit" heute.

Warum haben sich Desktop-Computer durchgesetzt? Ich denke, es lag daran, dass sie bessere Software hatten. Und ich denke, der Grund, warum Mikrocomputersoftware besser war, war, dass sie von kleinen Unternehmen geschrieben werden konnte.

Ich glaube nicht, dass viele Leute wissen, wie zerbrechlich und unsicher Startups im frühesten Stadium sind. Viele Startups entstehen fast zufällig – als zwei Typen, entweder mit einem Nebenjob oder in der Schule, die einen Prototyp von etwas schreiben, das sich, wenn es vielversprechend aussieht, in ein Unternehmen verwandeln könnte. In diesem Larvenstadium würde jedes bedeutende Hindernis das Startup sofort zum Stillstand bringen. Das Schreiben von Mainframe-Software erforderte zu viel Engagement im Voraus. Entwicklungsmaschinen waren teuer, und da die Kunden große Unternehmen sein würden, brauchte man eine beeindruckende Vertriebsmannschaft, um sie an diese zu verkaufen. Ein Startup zu gründen, um Mainframe-Software zu schreiben, wäre ein viel ernsteres Unterfangen, als einfach etwas in den Abendstunden auf seinem Apple II zusammenzuhacken. Und so gab es nicht viele Startups, die Mainframe-Anwendungen schrieben.

Das Aufkommen von Desktop-Computern inspirierte eine Menge neuer Software, weil das Schreiben von Anwendungen für diese ein erreichbares Ziel für Larven-Startups zu sein schien. Die Entwicklung war günstig und die Kunden wären Einzelpersonen, die man über Computergeschäfte oder sogar per Postorder erreichen konnte.

Die Anwendung, die Desktop-Computer in den Mainstream drängte, war VisiCalc, die erste Tabellenkalkulation. Sie wurde von zwei Typen geschrieben, die auf einem Dachboden arbeiteten, und tat dennoch Dinge, die keine Mainframe-Software konnte. [11] VisiCalc war zu seiner Zeit so ein Fortschritt, dass die Leute Apple IIs kauften, nur um es auszuführen. Und dies war der Beginn eines Trends: Desktop-Computer gewannen, weil Startups Software für sie schrieben.

Es sieht so aus, als ob serverbasierte Software dieses Mal gut sein wird, weil Startups sie schreiben werden. Computer sind jetzt so günstig, dass man, wie wir es getan haben, mit einem Desktop-Computer als Server beginnen kann. Preiswerte Prozessoren haben den Workstation-Markt aufgefressen (man hört das Wort jetzt kaum noch) und sind auf dem Servermarkt fast durch; die Server von Yahoo, die mit Lasten umgehen, die so hoch sind wie alle anderen im Internet, haben alle die gleichen preiswerten Intel-Prozessoren, die Sie in Ihrem Desktop-Computer haben. Und sobald Sie die Software geschrieben haben, brauchen Sie nur noch eine Website, um sie zu verkaufen. Fast alle unsere Benutzer kamen direkt zu unserer Website durch Mundpropaganda und Referenzen in der Presse. [12]

Viaweb war ein typisches Larven-Startup. Wir hatten Angst vor der Gründung eines Unternehmens und trösteten uns in den ersten Monaten damit, das Ganze als Experiment zu betrachten, das wir jederzeit abbrechen könnten. Glücklicherweise gab es nur wenige Hindernisse außer technischen. Während wir die Software schrieben, war unser Webserver derselbe Desktop-Computer, den wir für die Entwicklung verwendeten, der über eine Einwahlleitung mit der Außenwelt verbunden war. Unsere einzigen Ausgaben in dieser Phase waren Essen und Miete.

Es gibt umso mehr Gründe für Startups, webbasierte Software zu schreiben, weil das Schreiben von Desktop-Software viel weniger Spaß gemacht hat. Wenn Sie jetzt Desktop-Software schreiben möchten, tun Sie dies zu den Bedingungen von Microsoft, rufen Sie deren APIs auf und arbeiten Sie sich um deren fehlerhaftes Betriebssystem herum. Und wenn Sie es schaffen, etwas zu schreiben, das erfolgreich ist, stellen Sie möglicherweise fest, dass Sie nur Marktforschung für Microsoft betrieben haben.

Wenn ein Unternehmen eine Plattform erstellen möchte, auf der Startups aufbauen können, muss es etwas schaffen, das Hacker selbst verwenden möchten. Das bedeutet, dass es preiswert und gut gestaltet sein muss. Der Mac war bei seinem Erscheinen bei Hackern beliebt, und viele von ihnen schrieben Software dafür. [13] Bei Windows sieht man das weniger, weil Hacker es nicht benutzen. Die Art von Menschen, die gut im Schreiben von Software sind, verwenden heute eher Linux oder FreeBSD.

Ich glaube nicht, dass wir ein Startup gegründet hätten, um Desktop-Software zu schreiben, weil Desktop-Software unter Windows laufen muss, und bevor wir Software für Windows schreiben könnten, müssten wir sie benutzen. Das Web ermöglichte uns einen Ausweg um Windows herum und die Bereitstellung von Software, die unter Unix läuft, direkt an Benutzer über den Browser. Das ist eine befreiende Aussicht, ähnlich dem Aufkommen von PCs vor fünfundzwanzig Jahren.

Microsoft

Als Desktop-Computer aufkamen, war IBM der Riese, vor dem sich alle fürchteten. Es ist jetzt kaum vorstellbar, aber ich erinnere mich noch sehr gut an dieses Gefühl. Jetzt ist der beängstigende Riese Microsoft, und ich glaube nicht, dass sie die Bedrohung, der sie ausgesetzt sind, so blind sind wie IBM. Schließlich hat Microsoft sein Geschäft bewusst im blinden Fleck von IBM aufgebaut.

Ich erwähnte bereits, dass meine Mutter keinen Desktop-Computer braucht. Die meisten Benutzer brauchen ihn wahrscheinlich nicht. Das ist ein Problem für Microsoft, und sie wissen es. Wenn Anwendungen auf Remote-Servern laufen, braucht niemand Windows. Was wird Microsoft tun? Werden sie in der Lage sein, ihre Kontrolle über den Desktop zu nutzen, um diese neue Generation von Software zu verhindern oder einzuschränken?

Ich vermute, dass Microsoft eine Art Server-/Desktop-Hybrid entwickeln wird, bei dem das Betriebssystem mit Servern zusammenarbeitet, die sie kontrollieren. Mindestens werden Dateien zentral für Benutzer verfügbar sein, die das wünschen. Ich erwarte nicht, dass Microsoft den Weg zum Extrem geht, die Berechnungen auf dem Server durchzuführen, mit nur einem Browser als Client, wenn sie es vermeiden können. Wenn Sie nur einen Browser für einen Client benötigen, brauchen Sie Microsoft nicht auf dem Client, und wenn Microsoft den Client nicht kontrolliert, kann es Benutzer nicht zu seinen serverbasierten Anwendungen drängen.

Ich denke, Microsoft wird es schwer haben, den Geist in der Flasche zu halten. Es wird zu viele verschiedene Arten von Clients geben, als dass sie sie alle kontrollieren könnten. Und wenn die Anwendungen von Microsoft nur mit einigen Clients funktionieren, können Konkurrenten sie übertrumpfen, indem sie Anwendungen anbieten, die von jedem Client aus funktionieren. [14]

In einer Welt webbasierter Anwendungen gibt es keinen automatischen Platz für Microsoft. Sie könnten es schaffen, sich einen Platz zu schaffen, aber ich glaube nicht, dass sie diese neue Welt so dominieren werden, wie sie es mit der Welt der Desktop-Anwendungen getan haben.

Es ist nicht so sehr, dass ein Konkurrent sie ausmanövriert, sondern dass sie über sich selbst stolpern. Mit dem Aufkommen webbasierter Software werden sie nicht nur mit technischen Problemen konfrontiert sein, sondern auch mit ihrem eigenen Wunschdenken. Was sie tun müssen, ist, ihr bestehendes Geschäft zu kannibalisieren, und ich kann mir nicht vorstellen, dass sie sich dem stellen. Die gleiche Zielstrebigkeit, die sie so weit gebracht hat, wird jetzt gegen sie arbeiten. IBM befand sich in genau der gleichen Situation, und sie konnten sie nicht meistern. IBM stieg spät und halbherzig in das Mikrocomputergeschäft ein, weil sie ambivalent waren, ihre Cash Cow, das Mainframe-Computing, zu gefährden. Microsoft wird ebenfalls durch den Wunsch, den Desktop zu retten, behindert werden. Eine Cash Cow kann ein verdammt schweres Gewicht auf dem Rücken sein.

Ich sage nicht, dass niemand serverbasierte Anwendungen dominieren wird. Irgendwann wird es wahrscheinlich jemand tun. Aber ich denke, dass es eine lange Zeit des fröhlichen Chaos geben wird, genau wie in den frühen Tagen der Mikrocomputer. Das war eine gute Zeit für Startups. Viele kleine Unternehmen florierten und taten dies, indem sie coole Dinge machten.

Startups, aber noch mehr

Das klassische Startup ist schnell und informell, mit wenigen Leuten und wenig Geld. Diese wenigen Leute arbeiten sehr hart, und die Technologie verstärkt die Wirkung der Entscheidungen, die sie treffen. Wenn sie gewinnen, gewinnen sie groß.

In einem Startup, das webbasierte Anwendungen schreibt, wird alles, was Sie mit Startups verbinden, auf die Spitze getrieben. Sie können ein Produkt mit noch weniger Leuten und noch weniger Geld schreiben und starten. Sie müssen noch schneller sein, und Sie können es sich leisten, informeller zu sein. Sie können Ihr Produkt buchstäblich als drei Typen starten, die im Wohnzimmer einer Wohnung sitzen, und einen Server, der bei einem ISP gehostet wird. Wir haben das gemacht.

Im Laufe der Zeit wurden die Teams kleiner, schneller und informeller. 1960 bedeutete Softwareentwicklung einen Raum voller Männer mit Hornbrillen und schmalen schwarzen Krawatten, die fleißig zehn Codezeilen pro Tag auf IBM-Coding-Formularen schrieben. 1980 war es ein Team von acht bis zehn Personen, die Jeans ins Büro trugen und in vt100s tippten. Jetzt sind es ein paar Typen, die mit Laptops im Wohnzimmer sitzen. (Und Jeans sind nicht das letzte Wort in Sachen Informalität.)

Startups sind stressig, und das wird leider auch bei webbasierten Anwendungen auf die Spitze getrieben. Viele Softwareunternehmen, insbesondere zu Beginn, haben Phasen, in denen die Entwickler unter ihren Schreibtischen schliefen und so weiter. Das Besorgniserregende an webbasierter Software ist, dass nichts sie davon abhält, zum Standard zu werden. Die Geschichten über das Schlafen unter Schreibtischen enden normalerweise so: Dann haben wir es endlich ausgeliefert, und wir sind alle nach Hause gegangen und eine Woche lang geschlafen. Webbasierte Software wird nie ausgeliefert. Sie können 16 Stunden am Tag arbeiten, so lange Sie wollen. Und weil Sie das können und Ihre Konkurrenten das auch können, werden Sie dazu gezwungen. Sie können, also müssen Sie. Es ist Parkinsons Gesetz, das sich umkehrt.

Das Schlimmste sind nicht die Stunden, sondern die Verantwortung. Programmierer und Systemadministratoren haben traditionell jeweils eigene Sorgen. Programmierer müssen sich um Fehler kümmern, und Systemadministratoren müssen sich um die Infrastruktur kümmern. Programmierer verbringen vielleicht einen langen Tag mit den Ellbogen im Quellcode, aber irgendwann können sie nach Hause gehen und es vergessen. Systemadministratoren verlassen den Job nie ganz, aber wenn sie um 4:00 Uhr morgens angerufen werden, müssen sie normalerweise nichts allzu Kompliziertes tun. Bei webbasierten Anwendungen werden diese beiden Arten von Stress kombiniert. Die Programmierer werden zu Systemadministratoren, aber ohne die klar definierten Grenzen, die den Job normalerweise erträglich machen.

Bei Viaweb haben wir die ersten sechs Monate nur mit dem Schreiben von Software verbracht. Wir arbeiteten die üblichen langen Stunden eines frühen Startups. In einem Desktop-Softwareunternehmen wäre dies der Teil gewesen, in dem wir hart gearbeitet hätten, aber es fühlte sich wie ein Urlaub an im Vergleich zur nächsten Phase, als wir Benutzer auf unseren Server holten. Der zweitgrößte Vorteil des Verkaufs von Viaweb an Yahoo (nach dem Geld) war, dass wir die ultimative Verantwortung für das Ganze auf die Schultern eines großen Unternehmens abwälzen konnten.

Desktop-Software zwingt Benutzer, zu Systemadministratoren zu werden. Webbasierte Software zwingt Programmierer dazu. Es gibt weniger Stress insgesamt, aber mehr für die Programmierer. Das ist nicht unbedingt eine schlechte Nachricht. Wenn Sie ein Startup sind, das mit einem großen Unternehmen konkurriert, ist es eine gute Nachricht. [15] Webbasierte Anwendungen bieten eine einfache Möglichkeit, Ihre Konkurrenten zu überarbeiten. Kein Startup verlangt mehr.

Gerade gut genug

Eines, was Sie davon abhalten könnte, webbasierte Anwendungen zu schreiben, ist die Magerheit von Webseiten als Benutzeroberfläche. Das ist ein Problem, gebe ich zu. Es gab ein paar Dinge, die wir wirklich gerne zu HTML und HTTP hinzugefügt hätten. Wichtig ist jedoch, dass Webseiten gerade gut genug sind.

Hier gibt es eine Parallele zu den ersten Mikrocomputern. Die Prozessoren in diesen Maschinen waren eigentlich nicht dazu bestimmt, die CPUs von Computern zu sein. Sie sollten in Dingen wie Ampeln verwendet werden. Aber Typen wie Ed Roberts, der den Altair entworfen hat, erkannten, dass sie gerade gut genug waren. Man konnte einen dieser Chips mit etwas Speicher (256 Byte im ersten Altair) und Frontplattentastern kombinieren, und schon hatte man einen funktionierenden Computer. Den eigenen Computer zu haben, war so aufregend, dass es viele Leute gab, die ihn kaufen wollten, wie begrenzt er auch war.

Webseiten wurden nicht als Benutzeroberfläche für Anwendungen entwickelt, aber sie sind gerade gut genug. Und für eine beträchtliche Anzahl von Benutzern wird Software, die man von jedem Browser aus verwenden kann, ein so großer Gewinn sein, dass er jede Ungeschicklichkeit der Benutzeroberfläche überwiegt. Vielleicht können Sie nicht die schönste Tabellenkalkulation mit HTML schreiben, aber Sie können eine Tabellenkalkulation schreiben, die mehrere Personen gleichzeitig von verschiedenen Standorten aus ohne spezielle Client-Software verwenden können, die Live-Datenfeeds einbeziehen kann oder die Sie benachrichtigen kann, wenn bestimmte Bedingungen eintreten. Noch wichtiger ist, dass Sie neue Arten von Anwendungen schreiben können, die noch gar keine Namen haben. VisiCalc war schließlich nicht nur eine Mikrocomputer-Version einer Mainframe-Anwendung – es war eine neue Art von Anwendung.

Natürlich müssen serverbasierte Anwendungen nicht webbasiert sein. Sie könnten eine andere Art von Client haben. Aber ich bin mir ziemlich sicher, dass das eine schlechte Idee ist. Es wäre sehr praktisch, wenn man davon ausgehen könnte, dass jeder Ihren Client installieren würde – so praktisch, dass man sich leicht davon überzeugen könnte, dass alle es tun würden –, aber wenn sie es nicht tun, sind Sie im Schlamassel. Da webbasierte Software keine Annahmen über den Client trifft, funktioniert sie überall, wo das Web funktioniert. Das ist bereits ein großer Vorteil, und dieser Vorteil wird mit der Verbreitung neuer Webgeräte immer größer werden. Benutzer werden Sie mögen, weil Ihre Software einfach funktioniert, und Ihr Leben wird einfacher, weil Sie sie nicht für jeden neuen Client anpassen müssen. [16]

Ich habe das Gefühl, dass ich die Entwicklung des Webs so genau wie jeder andere verfolgt habe, und ich kann nicht vorhersagen, was mit Clients passieren wird. Konvergenz kommt wahrscheinlich, aber wo? Ich kann keinen Gewinner auswählen. Eines kann ich vorhersagen: Konflikte zwischen AOL und Microsoft. Was auch immer Microsofts .NET sein mag, es wird wahrscheinlich die Verbindung des Desktops mit Servern beinhalten. Wenn AOL sich nicht wehrt, werden sie entweder beiseite gedrängt oder zu einer Leitung zwischen Microsoft-Client- und -Server-Software. Wenn Microsoft und AOL in einen Client-Krieg geraten, wird das einzige, das sicher auf beiden funktioniert, das Surfen im Web sein, was bedeutet, dass webbasierte Anwendungen die einzigen sein werden, die überall funktionieren.

Wie wird sich das alles entwickeln? Ich weiß es nicht. Und Sie müssen es nicht wissen, wenn Sie auf webbasierte Anwendungen setzen. Niemand kann das kaputt machen, ohne das Surfen zu kaputt machen. Das Web ist vielleicht nicht der einzige Weg, um Software bereitzustellen, aber es ist einer, der jetzt funktioniert und noch lange funktionieren wird. Webbasierte Anwendungen sind günstig zu entwickeln und selbst für das kleinste Startup einfach zu liefern. Sie sind eine Menge Arbeit und von einer besonders stressigen Art, aber das macht die Chancen für Startups nur besser.

Warum nicht?

E. B. White war amüsiert, von einem Bauernfreund zu erfahren, dass viele elektrifizierte Zäune keinen Strom durchlassen. Die Kühe lernen anscheinend, sich von ihnen fernzuhalten, und danach brauchen Sie den Strom nicht mehr. "Erhebt euch, Kühe!", schrieb er, "Nehmt eure Freiheit, während die Despoten schnarchen!"

Wenn Sie ein Hacker sind, der daran gedacht hat, eines Tages ein Startup zu gründen, halten Sie wahrscheinlich zwei Dinge davon ab, dies zu tun. Das eine ist, dass Sie nichts über Wirtschaft wissen. Das andere ist, dass Sie Angst vor der Konkurrenz haben. Keiner dieser Zäune hat Strom.

Es gibt nur zwei Dinge, die Sie über Wirtschaft wissen müssen: Bauen Sie etwas, das Benutzer lieben, und verdienen Sie mehr, als Sie ausgeben. Wenn Sie diese beiden Dinge richtig machen, sind Sie den meisten Startups voraus. Den Rest können Sie unterwegs herausfinden.

Möglicherweise verdienen Sie zunächst nicht mehr, als Sie ausgeben, aber solange die Lücke schnell genug schließt, sind Sie in Ordnung. Wenn Sie unterfinanziert beginnen, wird dies zumindest eine Gewohnheit der Sparsamkeit fördern. Je weniger Sie ausgeben, desto einfacher ist es, mehr zu verdienen, als Sie ausgeben. Glücklicherweise kann es sehr günstig sein, eine webbasierte Anwendung zu starten. Wir haben mit weniger als 10.000 Dollar gestartet, und heute wäre es noch günstiger. Wir mussten Tausende für einen Server ausgeben und Tausende mehr, um SSL zu bekommen. (Das einzige Unternehmen, das zu dieser Zeit SSL-Software verkaufte, war Netscape.) Jetzt können Sie einen viel leistungsstärkeren Server mieten, inklusive SSL, für weniger, als wir allein für Bandbreite bezahlt haben. Sie könnten jetzt eine webbasierte Anwendung für weniger als die Kosten für einen schicken Bürostuhl starten.

Was das Bauen von etwas betrifft, das Benutzer lieben, hier sind ein paar allgemeine Tipps. Beginnen Sie damit, etwas Sauberes und Einfaches zu machen, das Sie selbst verwenden würden. Bringen Sie eine Version 1.0 schnell heraus und verbessern Sie dann die Software weiter, indem Sie beim Tun genau auf die Benutzer hören. Der Kunde hat immer Recht, aber verschiedene Kunden haben Recht in verschiedenen Dingen; die am wenigsten erfahrenen Benutzer zeigen Ihnen, was Sie vereinfachen und verdeutlichen müssen, und die erfahrensten sagen Ihnen, welche Funktionen Sie hinzufügen müssen. Das Beste, was Software sein kann, ist einfach, aber der Weg dorthin ist, die Standardeinstellungen richtig zu machen, nicht die Auswahlmöglichkeiten der Benutzer einzuschränken. Machen Sie sich keine Illusionen, wenn die Software Ihrer Konkurrenten lahm ist; der Standard, mit dem Sie Ihre Software vergleichen, ist das, was sie sein könnte, nicht das, was Ihre aktuellen Konkurrenten zufällig haben. Verwenden Sie Ihre Software selbst, und zwar ständig. Viaweb sollte eigentlich ein Online-Shop-Builder sein, aber wir haben es auch verwendet, um unsere eigene Website zu erstellen. Hören Sie nicht auf Marketingfachleute, Designer oder Produktmanager nur wegen ihrer Berufsbezeichnungen. Wenn sie gute Ideen haben, nutzen Sie sie, aber es liegt an Ihnen, zu entscheiden; Software muss von Hackern entworfen werden, die Design verstehen, nicht von Designern, die ein wenig über Software wissen. Wenn Sie Software nicht so gut designen können wie implementieren, gründen Sie kein Startup.

Lassen Sie uns nun über Konkurrenz sprechen. Was Sie vermutlich nicht fürchten, sind Gruppen von Hackern wie Sie, sondern echte Unternehmen mit Büros, Geschäftsplänen, Verkäufern und so weiter, richtig? Nun, sie haben mehr Angst vor Ihnen als Sie vor ihnen, und sie haben Recht. Es ist viel einfacher für ein paar Hacker herauszufinden, wie man Büroflächen mietet oder Verkäufer einstellt, als für ein Unternehmen jeder Größe, Software schreiben zu lassen. Ich war auf beiden Seiten, und ich weiß es. Als Viaweb von Yahoo übernommen wurde, fand ich mich plötzlich in einem großen Unternehmen wieder, und es war, als würde man durch hüfttiefes Wasser rennen wollen.

Ich möchte Yahoo nicht schlecht machen. Sie hatten ein paar gute Hacker, und das Topmanagement war wirklich aggressiv. Für ein großes Unternehmen waren sie außergewöhnlich. Aber sie waren immer noch nur etwa ein Zehntel so produktiv wie ein kleines Startup. Kein großes Unternehmen kann viel besser sein als das. Was an Microsoft beängstigend ist, ist, dass ein Unternehmen, das so groß ist, überhaupt Software entwickeln kann. Sie sind wie ein Berg, der gehen kann.

Lassen Sie sich nicht einschüchtern. Sie können genauso viel tun, was Microsoft nicht kann, wie sie Dinge tun können, die Sie nicht können. Und niemand kann Sie aufhalten. Sie müssen niemanden um Erlaubnis fragen, um webbasierte Anwendungen zu entwickeln. Sie müssen keine Lizenzverträge abschließen, keinen Platz in Einzelhandelsgeschäften bekommen oder sich verneigen, damit Ihre Anwendung mit dem Betriebssystem gebündelt wird. Sie können Software direkt in den Browser liefern, und niemand kann sich zwischen Sie und potenzielle Benutzer stellen, ohne ihnen das Surfen im Web zu verbieten.

Sie glauben es vielleicht nicht, aber ich verspreche Ihnen, Microsoft hat Angst vor Ihnen. Die selbstgefälligen mittleren Manager vielleicht nicht, aber Bill schon, weil er früher mal Sie war, im Jahr 1975, als das letzte Mal eine neue Art der Bereitstellung von Software auftauchte.

Hinweise

[1] Da Unternehmen erkannt haben, dass ein Großteil des Geldes in den Diensten liegt, haben Unternehmen, die leichte Clients bauen, in der Regel versucht, die Hardware mit einem Onlinedienst zu kombinieren. Dieser Ansatz hat nicht gut funktioniert, zum Teil, weil man zwei verschiedene Arten von Unternehmen braucht, um Unterhaltungselektronik zu bauen und einen Onlinedienst zu betreiben, und zum Teil, weil Benutzer diesen Gedanken hassen. Den Rasierer verschenken und mit den Klingen Geld verdienen, mag bei Gillette funktionieren, aber ein Rasierer ist eine viel geringere Verpflichtung als ein Webterminal. Hersteller von Handys sind zufrieden damit, Hardware zu verkaufen, ohne zu versuchen, auch die Serviceeinnahmen zu generieren. Das sollte wahrscheinlich auch das Modell für Internet-Clients sein. Wenn jemand einfach eine hübsche kleine Box mit einem Webbrowser verkaufen würde, den man verwenden könnte, um sich über jeden ISP zu verbinden, würde jeder Technikfeind im Land einen kaufen.

[2] Sicherheit hängt immer mehr davon ab, keine Fehler zu machen, als von einer Designentscheidung, aber die Art der serverbasierten Software wird Entwickler dazu bringen, mehr darauf zu achten, keine Fehler zu machen. Ein Kompromiss eines Servers könnte so große Schäden verursachen, dass ASPs (die im Geschäft bleiben wollen) wahrscheinlich auf Sicherheit achten.

[3] Im Jahr 1995, als wir Viaweb gründeten, sollten Java-Applets die Technologie sein, mit der jeder serverbasierte Anwendungen entwickeln würde. Applets kamen uns wie eine altmodische Idee vor. Programme herunterladen, um sie auf dem Client auszuführen? Einfacher ist es, den ganzen Weg zu gehen und die Programme auf dem Server auszuführen. Wir verschwendeten wenig Zeit mit Applets, aber unzählige andere Startups müssen in diese Teergrube gelockt worden sein. Nur wenige können entkommen sein, sonst hätte Microsoft Java nicht in der neuesten Version von Explorer entfernen können.

[4] Dieser Punkt ist Trevor Blackwell zu verdanken, der hinzufügt: "Die Kosten für das Schreiben von Software steigen mehr als linear mit ihrer Größe an. Vielleicht liegt das vor allem daran, dass alte Fehler behoben werden müssen, und die Kosten können linearer sein, wenn alle Fehler schnell gefunden werden."

[5] Die schwierigste Art von Fehler zu finden, ist möglicherweise eine Variante eines zusammengesetzten Fehlers, bei dem ein Fehler zufällig einen anderen ausgleicht. Wenn Sie einen Fehler beheben, wird der andere sichtbar. Aber es wird so aussehen, als ob die Behebung schuld ist, da dies das Letzte war, was Sie geändert haben.

[6] Innerhalb von Viaweb hatten wir einmal einen Wettbewerb, um das Schlimmste an unserer Software zu beschreiben. Zwei Mitarbeiter des Kundensupports waren mit Einträgen, an die ich noch heute mit Schaudern zurückdenke, für den ersten Preis nominiert. Wir haben beide Probleme sofort behoben.

[7] Robert Morris schrieb das Bestellsystem, das Käufer zur Bestellung verwendeten. Trevor Blackwell schrieb den Bildgenerator und den Manager, den Händler zur Abholung von Bestellungen, zur Ansicht von Statistiken und zur Konfiguration von Domain-Namen usw. verwendeten. Ich schrieb den Editor, den Händler zum Erstellen ihrer Websites verwendeten. Das Bestellsystem und der Bildgenerator wurden in C und C++ geschrieben, der Manager größtenteils in Perl und der Editor in Lisp.

[8] Preisdiskriminierung ist so weit verbreitet (wie oft haben Sie einen Einzelhändler behaupten hören, dass seine Kaufkraft zu niedrigeren Preisen für Sie geführt hat?), dass ich überrascht war, als ich feststellte, dass sie in den USA durch das Robinson-Patman Act von 1936 verboten wurde. Dieses Gesetz scheint nicht rigoros durchgesetzt zu werden.

[9] In No Logo sagt Naomi Klein, dass Bekleidungsmarken, die bei "städtischen Jugendlichen" beliebt sind, nicht zu sehr versuchen, Ladendiebstahl zu verhindern, weil die Ladendiebstähle in ihrer Zielgruppe auch die Trendsetter sind.

[10] Unternehmen fragen sich oft, was sie auslagern sollen und was nicht. Eine mögliche Antwort: Lagern Sie jede Aufgabe aus, die nicht direkt dem Wettbewerbsdruck ausgesetzt ist, denn durch die Auslagerung wird sie diesem Wettbewerb ausgesetzt.

[11] Die beiden Typen waren Dan Bricklin und Bob Frankston. Dan schrieb in ein paar Tagen einen Prototyp in Basic, dann arbeiteten sie im Laufe des nächsten Jahres zusammen (meistens nachts), um eine leistungsstärkere Version zu erstellen, die in 6502-Maschinensprache geschrieben war. Dan war zu dieser Zeit an der Harvard Business School, und Bob hatte nominell einen Tagesjob als Softwareentwickler. "Es gab kein großes Risiko, ein Geschäft zu machen", schrieb Bob, "Wenn es scheiterte, scheiterte es. Keine große Sache."

[12] Es ist nicht ganz so einfach, wie ich es darstelle. Es dauerte schmerzhaft lange, bis sich Mundpropaganda durchsetzte, und wir begannen erst, viel Presseberichterstattung zu erhalten, als wir eine PR-Firma (zugegeben, die beste der Branche) für 16.000 Dollar pro Monat engagierten. Es war jedoch wahr, dass der einzige bedeutende Kanal unsere eigene Website war.

[13] Wenn der Mac so großartig war, warum hat er dann verloren? Wieder die Kosten. Microsoft konzentrierte sich auf das Softwaregeschäft und entfesselte einen Schwarm billiger Komponentenlieferanten auf die Hardware von Apple. Es half auch nicht, dass Anzüge während

"Ich würde sogar noch weiter gehen und sagen, dass serverseitige Software, da sie so schwierig für Programmierer ist, zu einem grundlegenden ökonomischen Wandel weg von großen Unternehmen führt. Sie erfordert eine Intensität und Hingabe von Programmierern, die diese nur dann bereit sind zu leisten, wenn es sich um ihr eigenes Unternehmen handelt. Softwareunternehmen können qualifizierte Mitarbeiter für eine nicht allzu anspruchsvolle Umgebung einstellen und ungelernte Mitarbeiter für die Bewältigung von Schwierigkeiten, aber sie können keine hochqualifizierten Mitarbeiter einstellen, um sich den Hintern aufzureißen. Da Kapital nicht mehr benötigt wird, haben große Unternehmen wenig zu bieten."

[16] In der ursprünglichen Version dieses Essays riet ich davon ab, Javascript zu verwenden. Das war ein guter Plan im Jahr 2001, aber Javascript funktioniert jetzt.

Danke an Sarah Harlin, Trevor Blackwell, Robert Morris, Eric Raymond, Ken Anderson und Dan Giffin für das Lesen der Entwürfe dieses Papiers; an Dan Bricklin und Bob Frankston für Informationen über VisiCalc; und nochmals an Ken Anderson für die Einladung, auf der BBN zu sprechen.

Sie finden diesen Essay und 14 weitere in Hacker & Painters.