Loading...

DER ANDERE WEG NACH VORNE

Original

September 2001

(Dieser Artikel erklärt, warum ein Großteil der nächsten Generation von Software serverseitig sein wird, was das für Programmierer bedeuten wird und warum diese neue Art von Software eine große Chance für Startups ist. Er basiert auf einem Vortrag in den BBN-Labors.)

Im Sommer 1995 beschlossen mein Freund Robert Morris und ich, ein Startup zu gründen. Die PR-Kampagne im Vorfeld des Börsengangs von Netscape lief damals auf Hochtouren, und in den Medien wurde viel über den Online-Handel gesprochen. Zu dieser Zeit gab es vielleicht dreißig tatsächliche Geschäfte im Web, die alle von Hand erstellt worden waren. Wenn es viele Online-Geschäfte geben sollte, würde es Software zum Erstellen von solchen Geschäften brauchen, also beschlossen wir, eine solche Software zu schreiben.

In den ersten ein oder zwei Wochen hatten wir vor, eine herkömmliche Desktop-Anwendung zu entwickeln. Dann hatten wir eines Tages die Idee, die Software auf unserem Webserver laufen zu lassen und den Browser als Schnittstelle zu verwenden. Wir versuchten, die Software so umzuschreiben, dass sie über das Web funktioniert, und es war klar, dass das der Weg war, den wir gehen wollten. Wenn wir unsere Software so schrieben, dass sie auf dem Server läuft, wäre es sowohl für die Nutzer als auch für uns viel einfacher.

Das erwies sich als ein guter Plan. Heute ist diese Software als [Yahoo Store] die beliebteste Online-Shop-Erstellungssoftware mit etwa 14.000 Nutzern.

Als wir mit Viaweb starteten, verstand kaum jemand, was wir meinten, wenn wir sagten, dass die Software auf dem Server läuft. Erst als Hotmail ein Jahr später gestartet wurde, begannen die Leute, es zu verstehen. Heute weiß jeder, dass dies ein gültiger Ansatz ist. Es gibt jetzt einen Namen dafür, 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 wird. Selbst Microsoft, die am meisten zu verlieren haben, scheinen die Unvermeidbarkeit zu erkennen, einige Dinge vom Desktop zu verlagern. Wenn Software vom Desktop auf Server wandert, wird das eine sehr andere Welt für Entwickler bedeuten. Dieser Artikel beschreibt die überraschenden Dinge, die wir sahen, als wir zu den ersten Besuchern dieser neuen Welt gehörten. In dem Maße, in dem Software auf Server wandert, ist das, was ich hier beschreibe, die Zukunft.

Das Nächste?

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

Computer befinden sich jetzt in dieser Phase. Wenn man einen Desktop-Computer besitzt, muss man am Ende mehr darüber wissen, was in ihm vor sich geht, als man eigentlich wollte. Aber mehr als die Hälfte der Haushalte in den USA besitzen einen. Meine Mutter hat einen Computer, den sie für E-Mails und Buchhaltung verwendet. Vor etwa einem Jahr war sie alarmiert, als sie einen Brief von Apple erhielt, in dem ihr ein Rabatt auf eine neue Version des Betriebssystems angeboten wurde. Es stimmt etwas nicht, wenn eine 65-jährige Frau, die einen Computer für E-Mails und Buchhaltung verwenden möchte, sich Gedanken über die Installation neuer Betriebssysteme machen muss. Normale Nutzer sollten nicht einmal die Worte "Betriebssystem", "Gerätetreiber" oder "Patch" kennen müssen.

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

Bei webbasierten Anwendungen müssen die meisten Nutzer sich nur um die Anwendungen kümmern, die sie verwenden. Der ganze unordentliche, sich ändernde Kram sitzt irgendwo auf einem Server und wird von Leuten gewartet, die dafür gut sind. Und so braucht man normalerweise keinen Computer im eigentlichen Sinne, um Software zu nutzen. Alles, was man braucht, ist etwas mit Tastatur, Bildschirm und Webbrowser. Vielleicht hat es auch Zugriff auf das drahtlose Internet. Vielleicht ist es auch dein Mobiltelefon. Was auch immer es ist, es wird Unterhaltungselektronik sein: etwas, das etwa 200 Dollar kostet und bei dem die Leute die Wahl hauptsächlich nach dem Aussehen des Gehäuses treffen. Für Internetdienste wird man mehr bezahlen als für die Hardware, genau wie jetzt bei Telefonen. [1]

Es wird etwa eine Zehntelsekunde dauern, bis ein Klick den Server und zurück erreicht, also werden Nutzer von stark interaktiver Software wie Photoshop die Berechnungen immer noch auf dem Desktop ausführen wollen. Aber wenn man sich ansieht, wofür die meisten Leute Computer verwenden, wäre eine Latenz von einer Zehntelsekunde kein Problem. Meine Mutter braucht eigentlich keinen Desktop-Computer, und es gibt viele Menschen wie sie.

Der Gewinn für die Nutzer

In der Nähe meines Hauses gibt es ein Auto mit einem Aufkleber auf dem Stoßfänger, der "Tod vor Unannehmlichkeit" lautet. Die meisten Menschen werden, die meiste Zeit, die Wahl treffen, die am wenigsten Arbeit erfordert. Wenn sich webbasierte Software durchsetzt, wird es sein, weil sie bequemer ist. Und es sieht so aus, als würde sie es sein, sowohl für Nutzer als auch für Entwickler.

Um eine rein webbasierte Anwendung zu nutzen, braucht man nur einen mit dem Internet verbundenen Browser. So kann man eine webbasierte Anwendung überall verwenden. Wenn man Software auf seinen Desktop-Computer installiert, kann man sie nur auf diesem Computer nutzen. Noch schlimmer ist, dass Ihre Dateien auf diesem Computer gefangen sind. Die Unannehmlichkeit dieses Modells wird immer offensichtlicher, je mehr die Leute an Netzwerke gewöhnt werden.

Der dünne Keil hier war webbasierte E-Mail. Millionen von Menschen haben jetzt erkannt, dass man auf E-Mail-Nachrichten zugreifen können sollte, egal wo man ist. Und wenn man seine E-Mails sehen kann, warum dann nicht auch seinen Kalender? Wenn man ein Dokument mit Kollegen besprechen kann, warum kann man es dann nicht auch bearbeiten? Warum sollten irgendwelche Ihrer Daten auf einem Computer gefangen sein, der irgendwo auf einem fernen Schreibtisch steht?

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

Kunden 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 darauf aufzubewahren: Etwas, das Sie mit sich herumtragen, kann verloren gehen oder gestohlen werden. Wenn Sie Ihren PDA in einem Taxi lassen, ist das wie ein Festplattencrash, mit dem Unterschied, dass Ihre Daten an jemand anderen weitergegeben werden, anstatt vernichtet zu werden.

Bei rein webbasierten Anwendungen werden weder Ihre Daten noch die Anwendungen auf dem Client gespeichert. Sie müssen also nichts installieren, um sie zu nutzen. Und wenn es keine Installation gibt, müssen Sie sich auch keine Sorgen um Installationsprobleme machen. Es kann keine Inkompatibilitäten zwischen der Anwendung und Ihrem Betriebssystem geben, da 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, jede webbasierte Anwendung kostenlos testen zu können, indem Sie einfach auf die Website gehen, auf der sie angeboten wird. Bei Viaweb war unsere ganze Website wie ein großer Pfeil, der die Nutzer zum Testfahren führte.

Nach dem Ausprobieren des Demos sollte die Anmeldung für den Service nichts weiter erfordern als das Ausfüllen eines kurzen Formulars (je kürzer, desto besser). Und das sollte die letzte Arbeit sein, die der Nutzer erledigen muss. Bei webbasierter Software sollten Sie neue Versionen ohne zusätzliche Kosten, Arbeit oder sogar Kenntnis darüber erhalten.

Upgrades werden nicht mehr die großen Schocks sein, die sie jetzt sind. Mit der Zeit werden Anwendungen leise leistungsfähiger. Das wird einige Anstrengungen von den Entwicklern erfordern. Sie müssen die Software so gestalten, dass sie aktualisiert werden kann, ohne die Nutzer zu verwirren. Das ist ein neues Problem, aber es gibt Wege, es zu lösen.

Bei webbasierten Anwendungen verwenden alle dieselbe Version, und Fehler können sofort behoben werden, sobald sie entdeckt werden. Daher sollten webbasierte Anwendungen deutlich weniger Fehler aufweisen als Desktop-Software. Bei Viaweb hatten wir wahrscheinlich nie mehr als zehn bekannte Fehler gleichzeitig. Das ist um Größenordnungen besser als Desktop-Software.

Webbasierte Anwendungen können von mehreren Personen gleichzeitig genutzt werden. Das ist ein offensichtlicher Vorteil für kollaborative Anwendungen, aber ich wette, dass Nutzer das auch in den meisten anderen Anwendungen wollen werden, sobald sie erkennen, dass es möglich ist. Es wird oft nützlich sein, zwei Personen gleichzeitig dasselbe Dokument bearbeiten zu lassen. Viaweb erlaubte mehreren Nutzern die gleichzeitige Bearbeitung einer Website, mehr weil das der richtige Weg war, die Software zu schreiben, als weil wir erwarteten, dass Nutzer das wollen würden, aber es stellte sich heraus, dass viele das taten.

Wenn Sie eine webbasierte Anwendung nutzen, sind Ihre Daten sicherer. Festplattenabstürze werden zwar nicht der Vergangenheit angehören, aber Nutzer werden davon nicht mehr hören. Sie werden innerhalb von Serverfarms auftreten. Und Unternehmen, die webbasierte Anwendungen anbieten, werden tatsächlich Backups durchführen - nicht nur, weil sie echte Systemadministratoren haben, die sich um solche Dinge kümmern, sondern auch, weil ein ASP, der Nutzerdaten verliert, in große, große Schwierigkeiten geraten wird. Wenn Menschen ihre eigenen Daten bei einem Festplattencrash verlieren, können sie nicht so wütend werden, weil sie nur sich selbst die Schuld geben können. Wenn ein Unternehmen ihre Daten für sie verliert, werden sie viel wütender.

Schließlich sollten webbasierte Anwendungen weniger anfällig für Viren sein. Wenn der Client nichts anderes als einen Browser ausführt, ist die Wahrscheinlichkeit für Virenbefall geringer, und es gibt keine lokalen Daten, die beschädigt werden könnten. Und ein Programm, das die Server selbst angreifen würde, sollte auf sehr gut geschützte Server treffen. [2]

Für Nutzer wird webbasierte Software weniger stressig sein. Ich denke, wenn man in den Durchschnittsnutzer von Windows blicken könnte, würde man einen riesigen und ziemlich ungenutzten Wunsch nach Software finden, die dieser Beschreibung entspricht. Entfesselt könnte das 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 Stück Code ist. Es wird eine Sammlung von Programmen verschiedener Arten sein, anstatt eines einzigen großen Binärdateien. Und so ist das Entwerfen von webbasierter Software wie das Entwerfen einer Stadt anstelle eines Gebäudes: Neben Gebäuden braucht es Straßen, Straßenschilder, Versorgungseinrichtungen, Polizei- und Feuerwehrabteilungen und Pläne sowohl für Wachstum als auch für verschiedene Arten von Katastrophen.

Bei Viaweb umfasste die Software ziemlich große Anwendungen, mit denen Nutzer direkt sprachen, Programme, die diese Anwendungen verwendeten, Programme, die ständig im Hintergrund nach Problemen suchten, Programme, die versuchten, Dinge bei Ausfällen neu zu starten, Programme, die gelegentlich ausgeführt wurden, um Statistiken zu erstellen oder Indizes für Suchen aufzubauen, Programme, die wir explizit ausführten, um Ressourcen zu bereinigen oder Daten zu verschieben oder wiederherzustellen, Programme, die so taten, als wären sie Nutzer (um die Leistung zu messen oder Fehler aufzudecken), Programme zur Diagnose von Netzwerkproblemen, Programme für Backups, Schnittstellen zu externen Diensten, Software, die eine beeindruckende Sammlung von Anzeigen für Echtzeit-Serverstatistiken steuerte (ein Hit bei Besuchern, aber für uns unerlässlich), Modifikationen (einschließlich Fehlerkorrekturen) an Open-Source-Software und eine Vielzahl von Konfigurationsdateien und Einstellungen. Trevor Blackwell schrieb ein spektakuläres Programm zum Umzug von Shops auf neue Server quer durchs Land, ohne sie herunterzufahren, nachdem wir von Yahoo gekauft worden waren. Programme informierten uns per Pager, sendeten Faxe und E-Mails an Nutzer, wickelten Transaktionen mit Kreditkartenanbietern ab und kommunizierten über Sockets, Pipes, HTTP-Anfragen, SSH, UDP-Pakete, gemeinsamen Speicher und Dateien miteinander. 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 Leute zum Eindringen in Ihre Server nutzen könnten.

Es endete nicht mit der Software. Wir haben viel Zeit damit verbracht, über Serverkonfigurationen nachzudenken. Wir haben die Server selbst aus Komponenten zusammengebaut - teilweise, um Geld zu sparen, und teilweise, um genau das zu bekommen, was wir wollten. Wir mussten darüber nachdenken, ob unser vorgelagerter ISP schnelle genug Verbindungen zu allen Backbones hatte. Wir datierten RAID-Anbieter serienmäßig.

Aber Hardware ist nicht nur etwas, worüber man sich Sorgen machen muss. Wenn Sie sie kontrollieren, können Sie mehr für die Benutzer tun. Mit einer Desktop-Anwendung können Sie bestimmte Mindesthardware angeben, aber Sie können keine weitere hinzufügen. Wenn Sie die Server verwalten, können Sie mit einem Schritt all Ihre Benutzer in die Lage versetzen, Personen zu rufen, Faxe zu senden, Befehle per Telefon zu senden oder Kreditkarten zu verarbeiten usw., indem Sie einfach die relevante Hardware installieren. Wir haben immer nach neuen Möglichkeiten gesucht, Funktionen mit Hardware hinzuzufügen, nicht nur, weil es die Benutzer erfreute, sondern auch als Möglichkeit, uns von Wettbewerbern zu unterscheiden, die (entweder weil sie Desktop-Software verkauften oder Web-basierte Anwendungen über ISPs weiterverkauften) keine direkte Kontrolle über die Hardware hatten.

Da die Software in einer webbasierten Anwendung eine Sammlung von Programmen sein wird und nicht eine einzelne binäre Datei, kann sie in einer beliebigen Anzahl von verschiedenen 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 - was C und C++ bedeutet. Und so galten diese Sprachen (insbesondere unter nicht-technischen Leuten wie Managern und VCs) als die Sprachen für "ernsthafte" Softwareentwicklung. Aber das war nur ein Artefakt der Art und Weise, wie Desktop-Software ausgeliefert werden musste. Für serverseitige Software können Sie jede Sprache verwenden, die Sie möchten. [3] Heute verwenden viele der besten Hacker Sprachen, die weit von C und C++ entfernt sind: Perl, Python und sogar Lisp.

Bei serverseitiger Software kann Ihnen niemand vorschreiben, welche Sprache Sie verwenden sollen, denn Sie kontrollieren das gesamte System bis hin zur Hardware. Verschiedene Sprachen sind für verschiedene Aufgaben gut. Sie können diejenige verwenden, die für jede Aufgabe am besten geeignet ist. Und wenn Sie Wettbewerber haben, bedeutet "Sie können" auch "Sie müssen" (darauf werden wir später zurückkommen), denn wenn Sie diese Möglichkeit nicht nutzen, werden Ihre Wettbewerber es tun.

Die meisten unserer Wettbewerber verwendeten C und C++, und das machte ihre Software sichtbar unterlegen, weil (unter anderem) sie keine Möglichkeit hatten, die Zustandslosigkeit von CGI-Skripten zu umgehen. Wenn Sie etwas ändern wollten, mussten alle Änderungen auf einer Seite stattfinden, mit einer Schaltfläche "Aktualisieren" am unteren Rand. Wie ich an anderer Stelle geschrieben habe, konnten wir mit Lisp, das viele Menschen immer noch als Forschungssprache betrachten, den Viaweb-Editor so gestalten, dass er sich mehr wie eine Desktop-Software verhält.

Veröffentlichungen

Eine der wichtigsten Veränderungen in dieser neuen Welt ist die Art und Weise, wie Sie Veröffentlichungen durchführen. Im Desktop-Softwaregeschäft ist eine Veröffentlichung ein riesiges Trauma, bei dem das ganze Unternehmen schwitzt und sich anstrengt, um einen einzigen, riesigen Programmcode herauszubringen. Offensichtliche Vergleiche bieten sich sowohl für den Prozess als auch für das resultierende Produkt an.

Bei serverseitiger 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-Softwareunternehmen macht vielleicht ein oder zwei Veröffentlichungen pro Jahr. Bei Viaweb haben wir oft drei bis fünf Veröffentlichungen pro Tag gemacht.

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

Wenn Sie nur eine neue Version pro Jahr veröffentlichen, tendieren Sie dazu, Fehler im Großen zu behandeln. Einige Zeit vor dem Veröffentlichungstermin 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 in der Regel nicht bis zum Ende der Liste, und tatsächlich weiß niemand, wo das Ende ist. Es ist wie das Herausfischen von Schutt aus einem Teich. Man weiß nie wirklich, was in der Software vor sich geht. Im besten Fall landet man bei einer statistischen Art von Korrektheit.

Bei serverseitiger Software ist die meiste Änderung klein und inkrementell. Das allein führt weniger wahrscheinlich zu Fehlern. Es bedeutet auch, dass Sie wissen, was Sie am sorgfältigsten testen müssen, wenn Sie Software veröffentlichen werden: das Letzte, was Sie geändert haben. Sie landen mit einem viel festeren Griff auf dem Code. Als allgemeine Regel wissen Sie, was in ihm vor sich geht. Sie haben den Quellcode natürlich nicht auswendig gelernt, aber wenn Sie ihn lesen, tun Sie es wie ein Pilot, der das Instrumentenbrett überprüft, nicht wie ein Detektiv, der versucht, ein Rätsel zu lösen.

Desktop-Software züchtet eine gewisse Fatalistik in Bezug auf Fehler. Sie wissen, dass Sie etwas voller Fehler ausliefern, und Sie haben sogar Mechanismen eingerichtet, um damit umzugehen (z.B. Patch-Veröffentlichungen). Also warum machen Sie sich Sorgen um ein paar weitere? Bald veröffentlichen Sie ganze Funktionen, von denen Sie wissen, dass sie defekt sind. Apple hat dies Anfang dieses Jahres getan. Sie fühlten sich unter Druck, ihr neues Betriebssystem zu veröffentlichen, dessen Veröffentlichungstermin bereits viermal verschoben worden war, aber einige der Software (Unterstützung für CDs und DVDs) war nicht fertig. Die Lösung? Sie veröffentlichten das Betriebssystem ohne die unfertigen Teile, und die Benutzer müssen sie später installieren.

Bei webbasierter Software müssen Sie Software nie vor ihrer Fertigstellung veröffentlichen, und Sie können sie veröffentlichen, sobald sie funktioniert.

Der erfahrene Branchenkenner mag denken, es sei eine schöne Idee zu sagen, dass man Software nie vor ihrer Fertigstellung veröffentlichen muss, aber was ist, wenn man versprochen hat, eine neue Version seiner Software bis zu einem bestimmten Datum zu liefern? Bei webbasierter Software würden Sie ein solches Versprechen nicht machen, denn es gibt keine Versionen. Ihre Software ändert sich allmählich und kontinuierlich. Einige Änderungen sind größer als andere, aber die Idee von Versionen passt einfach nicht natürlich auf webbasierte Software.

Wenn sich jemand an Viaweb erinnert, mag das seltsam klingen, denn wir haben immer neue Versionen angekündigt. Dies geschah ausschließlich zu PR-Zwecken. Die Fachpresse, so lernten wir, denkt in Versionsnummern. Sie werden Ihnen große Berichterstattung für eine Hauptversion geben, was eine neue erste Ziffer in der Versionsnummer bedeutet, und im Allgemeinen nur einen Absatz für eine Punktversion, was eine neue Ziffer nach dem Dezimalkomma bedeutet.

Einige unserer Konkurrenten boten Desktop-Software an und hatten tatsächlich Versionsnummern. Und für diese Veröffentlichungen, die Tatsache, dass es sie gab, schien uns ein Beweis für ihre Rückständigkeit zu sein, und sie bekamen jede Menge Publicity. Wir wollten das nicht verpassen, also fingen wir auch an, Versionsnummern für unsere Software zu vergeben. Wenn wir etwas Publicity brauchten, machten wir eine Liste aller Features, die wir seit der letzten "Veröffentlichung" hinzugefügt hatten, setzten 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 das niemand je übel genommen.

Als wir gekauft wurden, hatten wir das drei Mal gemacht, also waren wir bei Version 4. Version 4.1, wenn ich mich recht erinnere. Nachdem Viaweb zu Yahoo Store geworden war, gab es nicht mehr so eine verzweifelte Notwendigkeit für Publicity, also wurde die ganze Idee der Versionsnummern still und leise fallen gelassen, obwohl sich die Software weiter entwickelte.

Bugs

Der andere große technische Vorteil von webbasierter Software ist, dass man die meisten Bugs reproduzieren kann. Die Daten der Nutzer haben Sie direkt auf Ihrer Festplatte. Wenn jemand Ihre Software kaputt macht, müssen Sie nicht raten, was los ist, wie es bei Desktop-Software der Fall wäre: Sie sollten den Fehler reproduzieren können, während der Nutzer am Telefon mit Ihnen ist. Möglicherweise wissen Sie sogar schon davon, wenn Sie Code zum Erkennen von Fehlern in Ihre Anwendung eingebaut haben.

Webbasierte Software wird rund um die Uhr genutzt, so dass alles, was Sie tun, sofort auf die Probe gestellt wird. Bugs tauchen schnell auf.

Software-Unternehmen werden manchmal beschuldigt, die Nutzer ihre Software debuggen zu lassen. Und genau das empfehle ich. Bei webbasierter Software ist das tatsächlich ein guter Plan, denn die Bugs sind weniger und vorübergehend. Wenn Sie die Software schrittweise veröffentlichen, haben Sie von vornherein viel weniger Bugs. Und wenn Sie Fehler reproduzieren und Änderungen sofort veröffentlichen können, können Sie die meisten Bugs finden und beheben, sobald sie auftauchen. Wir hatten nie genug Bugs auf einmal, um ein formelles Bug-Tracking-System zu brauchen.

Natürlich sollten Sie Änderungen testen, bevor Sie sie veröffentlichen, damit keine größeren Bugs freigesetzt werden. Die wenigen, die trotzdem durchrutschen, betreffen Grenzfälle und betreffen nur die wenigen Nutzer, die sie antreffen, bevor jemand anruft, um sich zu beschweren. Solange Sie Bugs sofort beheben, ist der Nettoeffekt für den durchschnittlichen Nutzer deutlich weniger Bugs. Ich bezweifle, dass der durchschnittliche Viaweb-Nutzer jemals einen Bug gesehen hat.

Frische Bugs zu beheben ist leichter als alte. Es ist normalerweise ziemlich schnell, einen Bug in Code zu finden, den man gerade erst geschrieben hat. Wenn er auftaucht, wissen Sie oft, was los ist, bevor Sie auch nur einen Blick in den Quellcode werfen, weil Sie sich unbewusst schon damit beschäftigt haben. Ein Bug in etwas, das Sie vor sechs Monaten geschrieben haben (der Durchschnittsfall, wenn Sie einmal im Jahr veröffentlichen), ist deutlich mehr Arbeit. Und da Sie den Code nicht so gut verstehen, sind Sie eher geneigt, ihn auf hässliche Weise zu beheben oder sogar weitere Bugs einzubauen. [4]

Wenn Sie Bugs früh erkennen, haben Sie auch weniger zusammengesetzte Bugs. Zusammengesetzte Bugs sind zwei separate Bugs, die miteinander interagieren: Sie stolpern auf der Treppe und wenn Sie nach dem Geländer greifen, fällt es Ihnen in die Hand. In Software ist diese Art von Bug am schwierigsten zu finden und hat auch oft die schlimmsten Folgen. [5] Der traditionelle "Alles kaputt machen und dann die Bugs herausfiltern"-Ansatz bringt von Natur aus viele zusammengesetzte Bugs hervor. Und Software, die in einer Reihe kleiner Änderungen veröffentlicht wird, neigt von Natur aus nicht dazu. Die Böden werden ständig von losen Objekten befreit, die später in etwas stecken bleiben könnten.

Es hilft, wenn Sie eine Technik namens funktionale Programmierung verwenden. Funktionale Programmierung bedeutet, Seiteneffekte zu vermeiden. Das sieht man eher in Forschungsarbeiten als in kommerzieller Software, aber für webbasierte Anwendungen erweist es sich als wirklich nützlich. Es ist schwierig, ganze Programme als rein funktionalen Code zu schreiben, aber Sie können große Teile davon so schreiben. Das macht diese Teile Ihrer Software leichter testbar, weil sie keinen Zustand haben, und das ist in einer Situation, in der Sie ständig kleine Änderungen vornehmen und testen, sehr praktisch. Ich habe einen Großteil des Viaweb-Editors in diesem Stil geschrieben, und unser Skriptsprache RTML war eine rein funktionale Sprache.

Leute aus der Desktop-Software-Branche werden das kaum glauben können, aber bei Viaweb wurden Bugs fast zu einem Spiel. Da die meisten veröffentlichten Bugs Grenzfälle betrafen, waren die Nutzer, die sie antrafen, wahrscheinlich fortgeschrittene Nutzer, die an den Grenzen experimentierten. Fortgeschrittene Nutzer sind nachsichtiger mit Bugs, vor allem, da Sie sie wahrscheinlich eingeführt haben, während Sie gerade ein Feature hinzufügten, das sie sich gewünscht hatten. Tatsächlich waren fortgeschrittene Nutzer oft stolz darauf, einen zu finden. Sie riefen den Support an, eher in einem Geist des Triumphs als des Ärgers, als hätten sie uns Punkte abgenommen.

Support

Wenn man Fehler reproduzieren kann, ändert sich der Ansatz zum Kundenservice. In den meisten Softwareunternehmen wird der Support als Möglichkeit angeboten, Kunden ein besseres Gefühl zu geben. Entweder rufen sie wegen eines bekannten Bugs an oder sie machen einfach etwas falsch und Sie müssen herausfinden, was. In beiden Fällen können Sie von ihnen nicht viel lernen. Und so neigt man dazu, Supportanrufe als lästig anzusehen, die man von den Entwicklern so weit wie möglich isolieren möchte.

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

Also standen bei Viaweb die Entwickler immer in engem Kontakt mit dem Support. Die Kundendienstmitarbeiter saßen etwa dreißig Meter von den Programmierern entfernt und wussten, dass sie jederzeit alles unterbrechen konnten, um einen echten Bug zu melden. Wir würden sogar eine Vorstandssitzung verlassen, um einen schwerwiegenden Bug zu beheben.

Unser Supportansatz machte alle glücklicher. Die Kunden waren begeistert. Stellen Sie sich vor, wie es sich anfühlt, eine Supporthotline anzurufen und als jemand behandelt zu werden, der wichtige Neuigkeiten überbringt. Die Kundendienstmitarbeiter mochten es, weil sie den Nutzern helfen konnten, anstatt Skripte für sie abzulesen. Und die Programmierer mochten es, weil sie Bugs reproduzieren konnten, anstatt nur vage Berichte zweiter Hand darüber zu hören.

Unsere Politik, Fehler auf der Flugbahn zu beheben, veränderte die Beziehung zwischen Kundensupportmitarbeitern und Hackern. In den meisten Softwareunternehmen sind Supportmitarbeiter unterbezahlte menschliche Schutzschilde, und Hacker sind kleine Kopien Gottes des Vaters, Schöpfer der Welt. Unabhängig vom Verfahren zum Melden von Fehlern ist es wahrscheinlich, dass es einseitig ist: Supportmitarbeiter, die von Fehlern erfahren, füllen ein Formular aus, das schließlich (möglicherweise über QA) an Programmierer weitergeleitet wird, die es auf ihre To-do-Liste setzen. Bei Viaweb war es ganz anders. Innerhalb einer Minute, nachdem ein Kunde über einen Fehler informiert hatte, konnten die Supportmitarbeiter neben einem Programmierer stehen und ihn sagen hören: "Scheiße, du hast recht, es ist ein Fehler." Es entzückte die Supportmitarbeiter, dieses "Du hast recht" von den Hackern zu hören. Sie brachten uns Fehler mit derselben erwartungsvollen Luft wie eine Katze, die dir eine gerade getötete Maus bringt. Es machte sie auch vorsichtiger bei der Beurteilung der Ernsthaftigkeit eines Fehlers, denn jetzt stand ihre Ehre auf dem Spiel.

Nachdem wir von Yahoo gekauft wurden, wurden die Kundensupportmitarbeiter weit weg von den Programmierern versetzt. Erst dann wurde uns klar, dass sie effektiv QA und teilweise auch Marketing waren. Neben dem Auffangen von Fehlern waren sie die Hüter des Wissens über unbestimmtere, fehlerähnliche Dinge, wie Funktionen, die Benutzer verwirren. [6] Sie waren auch eine Art Proxy-Fokusgruppe; wir konnten sie fragen, welche von zwei neuen Funktionen die Benutzer mehr wollten, und sie lagen immer richtig.

Moral

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

Wenn ich ein Jahr auf die nächste Veröffentlichung hätte warten müssen, hätte ich die meisten dieser Ideen zumindest für eine Weile auf Eis gelegt. Das Besondere an Ideen ist, dass sie zu weiteren Ideen führen. Ist Ihnen aufgefallen, dass, wenn Sie sich hinsetzen, um etwas zu schreiben, die Hälfte der Ideen, die am Ende darin enthalten sind, solche sind, die Ihnen während des Schreibens gekommen sind? Dasselbe passiert mit Software. Wenn man daran arbeitet, eine Idee umzusetzen, bekommt man weitere Ideen. Daher kostet das Zurückstellen einer Idee nicht nur diese Verzögerung bei der Umsetzung, sondern auch alle Ideen, zu denen ihre Umsetzung geführt hätte. Tatsächlich hemmt das Zurückstellen einer Idee sogar neue Ideen: Wenn man anfängt, sich eine neue Funktion vorzustellen, sieht man den Regal und denkt "aber ich habe schon viele neue Dinge, die ich für die nächste Veröffentlichung tun möchte".

Was Großunternehmen stattdessen anstelle der Implementierung von Funktionen tun, ist, sie zu planen. Bei Viaweb gerieten wir manchmal in Schwierigkeiten in dieser Hinsicht. 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 Ideen darüber, was wir verbessern wollten, aber wenn wir gewusst hätten, wie, hätten wir es bereits getan. Was würden wir in den nächsten sechs Monaten tun? Was auch immer der größte Gewinn zu sein schien. Ich weiß nicht, ob ich je gewagt hätte, diese Antwort zu geben, aber das war die Wahrheit. Pläne sind nur ein anderes Wort für Ideen auf dem Regal. Wenn wir gute Ideen hatten, setzten wir sie um.

Bei Viaweb, wie in vielen Softwareunternehmen, hatte der Großteil des Codes einen eindeutigen Besitzer. Aber wenn man etwas besaß, dann besaß man es wirklich: Niemand außer dem Besitzer eines Softwareteils musste eine Veröffentlichung genehmigen (oder auch nur davon wissen). Es gab keinen Schutz vor Beschädigungen außer der Angst, vor seinen Kollegen wie ein Idiot dazustehen, und das war mehr als genug. Ich habe vielleicht den Eindruck erweckt, dass wir einfach sorglos vorwärts geschrieben haben. Wir sind schnell gegangen, aber wir haben sehr sorgfältig nachgedacht, bevor wir Software auf diese Server veröffentlicht haben. Und Aufmerksamkeit ist für die Zuverlässigkeit wichtiger als langsames Vorgehen. Weil er genau aufpasst, kann ein Marinepilot ein 18.000 kg schweres Flugzeug mit 225 km/h auf einem schaukelnden Flugzeugträger-Deck, bei Nacht, sicherer landen als der Durchschnittsteenager eine Semmel schneiden.

Diese Art der Softwareentwicklung ist natürlich ein zweischneidiges Schwert. Sie funktioniert viel besser für ein kleines Team guter, vertrauenswürdiger Programmierer als für ein großes Unternehmen mit mittelmäßigen, wo schlechte Ideen von Ausschüssen statt von den Leuten, die sie hatten, aufgefangen werden.

Brooks in Umkehrung

Glücklicherweise erfordert webbasierte Software weniger Programmierer. Ich habe einmal für ein mittelgroßes Desktop-Softwareunternehmen gearbeitet, das insgesamt über 100 Mitarbeiter in der Entwicklung hatte. Nur 13 davon waren in der Produktentwicklung tätig. Alle anderen arbeiteten an Veröffentlichungen, Portierungen usw. Bei webbasierter Software braucht man (maximal) nur die 13 Leute, da es keine Veröffentlichungen, Portierungen usw. gibt.

Viaweb wurde von nur drei Leuten geschrieben. [7] Ich stand ständig unter Druck, mehr einzustellen, weil wir gekauft werden wollten und wussten, dass Käufer Schwierigkeiten haben würden, einen hohen Preis für ein Unternehmen mit nur drei Programmierern zu bezahlen. (Lösung: Wir haben mehr eingestellt, aber ihnen neue Projekte gegeben.)

Wenn man Software mit weniger Programmierern schreiben kann, spart man nicht nur Geld. Wie Fred Brooks in "The Mythical Man-Month" aufgezeigt hat, verlangsamt das Hinzufügen von Leuten zu einem Projekt es tendenziell. Die Zahl der möglichen Verbindungen zwischen Entwicklern wächst exponentiell mit der Größe der Gruppe. Je größer die Gruppe, desto mehr Zeit werden sie damit verbringen, in Meetings auszuhandeln, wie ihre Software zusammenarbeiten wird, und desto mehr Fehler werden sie durch unvorhergesehene Wechselwirkungen bekommen. Glücklicherweise funktioniert dieser Prozess auch umgekehrt: Je kleiner die Gruppen werden, desto exponentiell effizienter wird die Softwareentwicklung. Ich kann mich nicht erinnern, dass die Programmierer bei Viaweb jemals ein richtiges Treffen hatten. Wir hatten nie mehr zu sagen, als wir beim Mittagessen sagen konnten.

Wenn es hier einen Nachteil gibt, dann ist es, dass alle Programmierer bis zu einem gewissen Grad auch Systemadministratoren sein müssen. Wenn Sie Software hosten, muss jemand die Server überwachen, und in der Praxis sind dies die einzigen Personen, die dies richtig tun 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 Gestaltungsmöglichkeiten eingeschränkt. Und so, obwohl wir ständig hofften, dass eines Tages ("in ein paar Monaten") alles stabil genug sein würde, um jemanden einzustellen, dessen einzige Aufgabe es wäre, sich um die Server zu kümmern, ist es nie passiert.

Ich denke nicht, dass es anders sein kann, solange Sie das Produkt noch aktiv weiterentwickeln. Webbasierte Software wird nie etwas sein, das Sie schreiben, einchecken und dann nach Hause gehen. Es ist ein lebendes Ding, das gerade auf Ihren Servern läuft. Ein schwerwiegender Fehler könnte nicht nur den Prozess eines Benutzers abstürzen lassen; er könnte sie alle abstürzen lassen. Wenn ein Fehler in Ihrem Code 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 will definitiv ein Auge auf die Dinge haben, die man kürzlich geändert hat. Man veröffentlicht den Code nicht spät in der Nacht und geht dann nach Hause.

Beobachtung von Benutzern

Mit serverseitiger Software sind Sie Ihrem Code näher. Sie können auch Ihren Benutzern näher sein. Intuit ist dafür bekannt, dass sie sich Kunden in Einzelhandelsgeschäften vorstellen und sie bitten, sie mit nach Hause zu nehmen. Wenn Sie jemandem bei der erstmaligen Nutzung Ihrer Software zugesehen haben, wissen Sie, welche Überraschungen auf sie gewartet haben müssen.

Software sollte das tun, was Benutzer denken, dass sie tun wird. Aber Sie können sich nicht vorstellen, was Benutzer denken werden, glauben Sie mir, bis Sie sie beobachten. Und serverseitige Software gibt Ihnen beispiellose Informationen über ihr Verhalten. Sie sind nicht auf kleine, künstliche Fokusgruppen beschränkt. Sie können jeden Klick jedes Benutzers sehen. Sie müssen sorgfältig überlegen, was Sie sich ansehen werden, denn Sie wollen die Privatsphäre der Benutzer nicht verletzen, aber selbst die allgemeinsten statistischen Stichproben können sehr nützlich sein.

Wenn Sie die Benutzer auf Ihrem Server haben, müssen Sie sich nicht auf Benchmarks verlassen, zum Beispiel. Benchmarks sind simulierte Benutzer. Mit serverseitiger Software können Sie echte Benutzer beobachten. Um zu entscheiden, was zu optimieren ist, loggen Sie sich einfach auf einen Server ein und sehen Sie, was den gesamten CPU-Verbrauch ausmacht. Und Sie wissen auch, wann Sie mit der Optimierung aufhören sollten: Wir haben den Viaweb-Editor schließlich so weit gebracht, dass er eher speichergebunden als rechenintensiv war, und da es nichts gab, was wir tun konnten, um die Größe der Benutzerdaten zu verringern (nun ja, nichts Einfaches), wussten wir, dass wir damit aufhören konnten.

Effizienz ist für serverseitige Software wichtig, denn Sie bezahlen für die Hardware. Die Anzahl der Benutzer, die Sie pro Server unterstützen können, ist der Divisor Ihrer Kapitalkosten, so dass Sie, wenn Sie Ihre Software sehr effizient machen können, Ihre Wettbewerber unterbieten und trotzdem Gewinn machen können. Bei Viaweb haben wir die Kapitalkosten pro Benutzer auf etwa 5 US-Dollar gesenkt. Heute wären es wahrscheinlich noch weniger, vielleicht sogar weniger als die Kosten für die erste Monatsrechnung. Hardware ist heutzutage praktisch kostenlos, wenn Ihre Software einigermaßen effizient ist.

Die Beobachtung von Benutzern kann Sie sowohl bei der Gestaltung als auch bei der Optimierung leiten. Viaweb hatte eine Skriptsprache namens RTML, mit der fortgeschrittene Benutzer ihre eigenen Seitenstile definieren konnten. Wir fanden heraus, dass RTML zu einer Art Vorschlagskasten wurde, denn die Benutzer verwendeten es nur, wenn die vorgefertigten Seitenstile nicht das tun konnten, was sie wollten. Ursprünglich platzierte der Editor zum Beispiel Schaltflächenleisten quer über die Seite, aber nachdem einige Benutzer RTML verwendet hatten, um die Schaltflächen auf die linke Seite zu stellen, machten wir das zu einer Option (tatsächlich zur Standardeinstellung) in den vorgefertigten Seitenstilen.

Schließlich können Sie durch die Beobachtung der Benutzer oft erkennen, wenn sie in Schwierigkeiten geraten. Und da der Kunde immer Recht hat, ist das ein Zeichen dafür, dass etwas behoben werden muss. Bei Viaweb war der Schlüssel zum Gewinnen von Benutzern der Online-Testlauf. Es war nicht nur eine Reihe von Folien, die von Marketingleuten erstellt wurden. In unserem Testlauf nutzten die Benutzer tatsächlich die Software. Er dauerte etwa fünf Minuten, und am Ende hatten sie einen echten, funktionierenden Shop erstellt.

Der Testlauf war der Weg, auf dem wir fast alle unsere neuen Benutzer gewannen. Ich denke, das wird bei den meisten webbasierten Anwendungen genauso sein. Wenn Benutzer einen Testlauf erfolgreich durchlaufen können, werden sie das Produkt mögen. Wenn sie verwirrt oder gelangweilt sind, werden sie es nicht. Also alles, was wir tun konnten, um mehr Leute durch den Testlauf zu bringen, würde unsere Wachstumsrate erhöhen.

Ich habe die Klickspuren von Leuten, die den Testlauf durchführten, untersucht und festgestellt, dass sie an einer bestimmten Stelle verwirrt wurden und auf die Zurück-Schaltfläche des Browsers klickten. (Wenn Sie versuchen, webbasierte Anwendungen zu schreiben, werden Sie feststellen, dass die Zurück-Schaltfläche zu einem Ihrer interessantesten philosophischen Probleme wird.) Also habe ich an dieser Stelle eine Nachricht hinzugefügt, in der die Benutzer darauf hingewiesen wurden, dass sie fast fertig seien und dass sie nicht auf die Zurück-Schaltfläche klicken sollten. Ein weiterer großartiger Aspekt von webbasierter Software ist, dass Sie sofortiges Feedback von Änderungen erhalten: Die Zahl der Personen, die den Testlauf abschlossen, stieg sofort von 60% auf 90%. Und da die Zahl der neuen Benutzer eine Funktion der Zahl der abgeschlossenen Testläufe war, stieg unser Umsatzwachstum um 50%, allein durch diese Änderung.

Geld

Anfang der 1990er Jahre las ich einen Artikel, in dem jemand sagte, dass Software ein Abonnementgeschäft sei. Zunächst erschien mir diese Aussage sehr zynisch. Aber später erkannte ich, dass sie der Realität entspricht: Die Softwareentwicklung ist ein fortlaufender Prozess. Ich denke, es ist sauberer, wenn man offen Abonnementgebühren erhebt, anstatt die Leute zu zwingen, immer wieder neue Versionen zu kaufen und zu installieren, damit sie weiter an Sie zahlen. Und glücklicherweise sind Abonnements die natürliche Art und Weise, webbasierte Anwendungen in Rechnung zu stellen.

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

Ende des Inhalts.

Für Unternehmen sind webbasierte Anwendungen eine ideale Einnahmequelle. Anstatt jedes Quartal bei Null anzufangen, haben Sie einen wiederkehrenden Umsatzstrom. Da sich Ihre Software allmählich weiterentwickelt, müssen Sie sich keine Sorgen machen, dass ein neues Modell durchfallen wird; es muss eigentlich nie ein neues Modell geben, und wenn Sie etwas an der Software ändern, was den Nutzern nicht gefällt, erfahren Sie das sofort. Sie haben keine Probleme mit unbezahlbaren Rechnungen; wenn jemand nicht bezahlt, können Sie den Service einfach abschalten. Und es gibt keine Möglichkeit der Piraterie.

Dieser letzte "Vorteil" könnte sich als Problem erweisen. Eine gewisse Menge an Piraterie liegt im Interesse von Softwareunternehmen. Wenn ein Nutzer Ihre Software ohnehin nicht zu einem beliebigen Preis gekauft hätte, haben Sie nichts verloren, wenn er eine raubkopierte Version verwendet. Tatsächlich gewinnen Sie sogar, denn er ist ein weiterer Nutzer, der dazu beiträgt, Ihre Software zum Standard zu machen - oder der möglicherweise später eine Kopie kauft, wenn er von der Schule kommt.

Wenn sie können, praktizieren Unternehmen gerne etwas, was man Preisdiskriminierung nennt, d.h. jeden Kunden so viel wie möglich zu belasten. [8] Software eignet sich besonders gut für Preisdiskriminierung, da die Grenzkosten nahe Null sind. Deshalb kostet manche Software auf Suns mehr als auf Intel-Rechnern: Ein Unternehmen, das Suns verwendet, ist nicht an Kosteneinsparungen interessiert und kann problemlos mehr belastet werden. Piraterie ist effektiv die unterste Stufe der Preisdiskriminierung. Ich denke, Softwareunternehmen verstehen das und blenden manche Arten von Piraterie bewusst aus. [9] Bei serverseitiger Software müssen sie eine andere Lösung finden.

Webbasierte Software verkauft sich gut, vor allem im Vergleich zu Desktop-Software, weil sie einfach zu kaufen ist. Man könnte meinen, dass Menschen zuerst entscheiden, etwas zu kaufen, und dann den Kauf tätigen, als zwei getrennte Schritte. So dachte ich es zumindest vor Viaweb, soweit ich überhaupt darüber nachdachte. Tatsächlich kann der zweite Schritt in den ersten zurückwirken: Wenn etwas schwer zu kaufen ist, werden die Leute ihre Meinung darüber ändern, ob sie es wollen. Und umgekehrt: Sie werden mehr von etwas verkaufen, wenn es einfach zu kaufen ist. Ich kaufe mehr Bücher, weil es Amazon gibt. Webbasierte Software ist so ziemlich das Einfachste der Welt zum Kaufen, vor allem wenn man gerade eine Online-Demo gemacht hat. Nutzer sollten nicht viel mehr tun müssen, als eine Kreditkartennummer einzugeben. (Lassen Sie sie auf eigene Gefahr mehr tun.)

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

Mehrere unserer Wettbewerber haben sich so ins Bein geschossen - meist, denke ich, weil sie von Anzugträgern überrannt wurden, die von diesem riesigen potenziellen Vertriebskanal begeistert waren und nicht erkannten, dass er das Produkt, das sie damit verkaufen wollten, ruinieren würde. 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, das wird bei webbasierten Anwendungen die Regel sein. Das sind die Nutzer, die bereit sind, Neues auszuprobieren, teils weil sie flexibler sind, teils weil sie die niedrigeren Kosten neuer Technologie wollen.

Webbasierte Anwendungen werden oft auch das Beste für große Unternehmen sein (auch wenn sie das zunächst nicht erkennen werden). Das beste Intranet ist das Internet. Wenn ein Unternehmen echte webbasierte Anwendungen einsetzt, wird die Software besser funktionieren, die Server werden besser verwaltet, und die Mitarbeiter haben von überall Zugriff auf das System.

Das Gegenargument dreht sich meist um Sicherheit: Wenn der Zugriff für Mitarbeiter einfacher ist, ist er es auch für Böswillige. Einige größere Händler zögerten, Viaweb zu nutzen, weil sie dachten, Kundenkreditkartendaten seien auf ihren eigenen Servern sicherer. Es war nicht einfach, diesen Punkt diplomatisch zu machen, aber tatsächlich waren die Daten bei uns fast sicher besser aufgehoben als bei ihnen. Wer kann bessere Leute einstellen, um Sicherheit zu managen, ein Technologiestart-up, dessen gesamtes Geschäft der Serverbetrieb ist, oder ein Bekleidungshändler? Nicht nur hatten wir bessere Leute, die sich um Sicherheit kümmerten, wir kümmerten uns auch mehr darum. Wenn jemand in die Server des Bekleidungshändlers einbricht, betrifft das höchstens einen Händler, kann wahrscheinlich vertuscht werden, und im schlimmsten Fall könnte es einen Mitarbeiter den Job kosten. Wenn jemand in unsere Server einbricht, könnte das Tausende von Händlern betreffen, würde wahrscheinlich als Nachricht auf CNet landen und könnte uns aus dem Geschäft werfen.

Wenn Sie Ihr Geld sicher aufbewahren wollen, bewahren Sie es dann unter Ihrer Matratze auf oder legen Sie es in einer Bank an? Dieses Argument gilt für jeden Aspekt der Serververwaltung: nicht nur für die Sicherheit, sondern auch für Verfügbarkeit, Bandbreite, Lastmanagement, Backups usw. Unser Fortbestehen hing davon ab, dass wir diese Dinge richtig machten. Serverstörungen waren für uns das große Tabu, wie ein gefährliches Spielzeug für einen Spielzeughersteller oder ein Salmonellen-Ausbruch für einen Lebensmittelproduzenten.

Ein großes Unternehmen, das webbasierte Anwendungen nutzt, lagert in diesem Umfang die IT-Abteilung aus. So radikal es klingen mag, denke ich, dass dies im Allgemeinen eine gute Idee ist. Unternehmen werden wahrscheinlich einen besseren Service erhalten als von einer internen IT-Abteilung. IT-Administratoren können mürrisch und unempfänglich werden, weil sie nicht direkt dem Wettbewerbsdruck ausgesetzt sind: Ein Verkäufer muss mit Kunden umgehen, und ein Entwickler muss sich mit der Software der Konkurrenz auseinandersetzen, aber ein IT-Administrator, wie ein alter Junggeselle, hat nur wenige externe Kräfte, die ihn in Schach halten. [10] Bei Viaweb hatten wir jede Menge externe Kräfte, die uns in Schach hielten. Die Leute, die uns anriefen, waren Kunden, keine Kollegen. Wenn ein Server hängen blieb, sprangen wir sofort; allein der Gedanke daran versetzt mich noch Jahre später in Adrenalinschub.

Daher werden webbasierte Anwendungen in der Regel die richtige Lösung auch für große Unternehmen sein. Sie werden es als Letzte erkennen, so wie sie es auch mit Desktop-Computern waren. Und teilweise aus dem gleichen Grund: Es wird sich lohnen, große Unternehmen davon zu überzeugen, dass sie etwas Teureres brauchen.

Es gibt immer eine Tendenz, dass wohlhabende Kunden teure Lösungen kaufen, auch wenn billige Lösungen besser sind, weil die Anbieter teurer Lösungen mehr ausgeben können, um sie zu verkaufen. Bei Viaweb hatten wir es immer damit zu tun. Wir verloren mehrere hochwertige Händler an Web-Beratungsfirmen, die sie davon überzeugten, dass sie besser dran wären, wenn sie eine halbe Million Dollar für einen maßgeschneiderten Online-Shop auf ihrem eigenen Server ausgeben würden. Sie waren in der Regel nicht besser dran, wie mehr als einer entdeckte, wenn die Weihnachtseinkaufssaison kam und die Belastung auf ihrem Server stieg. Viaweb war viel ausgefeilter als das, was die meisten dieser Händler bekamen, aber wir konnten es uns nicht leisten, es ihnen zu sagen. Bei 300 Dollar pro Monat konnten wir es uns nicht leisten, ein Team gut gekleideter und autoritär klingender Leute zu entsenden, um Präsentationen für Kunden zu machen.

Ein großer Teil dessen, wofür große Unternehmen extra bezahlen, sind die Kosten für den Verkauf teurer Dinge an sie. (Wenn das Verteidigungsministerium 1.000 Dollar für Toilettensitze bezahlt, liegt es zum Teil daran, dass es viel kostet, Toilettensitze für 1.000 Dollar zu verkaufen.) Und das ist einer der Gründe, warum Intranet-Software weiterhin gedeihen wird, auch wenn es wahrscheinlich eine schlechte Idee ist. Es ist einfach teurer. Es gibt nichts, was man an diesem Dilemma ändern kann, also ist der beste Plan, zunächst die kleineren Kunden anzugehen. Der Rest wird mit der Zeit kommen.

Sohn des Servers

Die Ausführung von Software auf dem Server ist nichts Neues. Tatsächlich ist es das alte Modell: Großrechneranwendungen sind alle serverseitig. Wenn serverseitige Software eine so gute Idee ist, warum hat sie das letzte Mal verloren? Warum haben Desktopcomputer Großrechner verdrängt?

Zunächst sahen Desktopcomputer nicht nach einer großen Bedrohung aus. Die ersten Nutzer waren alles Hacker - oder Hobbytüftler, wie sie damals genannt wurden. Sie mochten Mikrocomputer, weil sie billig waren. Zum ersten Mal konnten Sie Ihren eigenen Computer haben. Der Begriff "Personalcomputer" ist heute Teil der Sprache, aber als er zum ersten Mal verwendet wurde, hatte er einen bewusst kühnen Klang, wie der Begriff "Persönlicher Satellit" heute.

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

Ich glaube nicht, dass viele Leute realisieren, wie zerbrechlich und unsicher Startups in ihren Anfangsstadien sind. Viele Startups entstehen fast zufällig - als ein paar Jungs, entweder mit Tageskäufen oder in der Schule, die einen Prototypen von etwas schreiben, der, wenn er vielversprechend aussieht, zu einem Unternehmen werden könnte. In diesem Larvenstadium wird jedes nennenswerte Hindernis das Startup augenblicklich stoppen. Die Entwicklung von Großrechner-Software erforderte zu viel Verpflichtung im Voraus. Entwicklungsmaschinen waren teuer, und da die Kunden große Unternehmen sein würden, bräuchten Sie eine beeindruckend aussehende Vertriebsmannschaft, um sie ihnen zu verkaufen. Den Aufbau eines Startups zur Erstellung von Großrechner-Software wäre ein viel ernsthafteres Unterfangen, als einfach etwas auf Ihrem Apple II in den Abendstunden zusammenzubasteln. Und so gab es nicht viele Startups, die Großrechner-Anwendungen schrieben.

Die Ankunft von Desktopcomputern inspirierte eine Menge neuer Software, weil das Schreiben von Anwendungen dafür ein erreichbares Ziel für Larvenstartups zu sein schien. Die Entwicklung war billig, und die Kunden wären Einzelpersonen, die man über Computerläden oder sogar per Versandhandel erreichen könnte.

Die Anwendung, die Desktopcomputer in den Mainstream brachte, war VisiCalc, die erste Tabellenkalkulation. Sie wurde von zwei Jungs auf einem Dachboden geschrieben und konnte Dinge tun, die keine Großrechner-Software konnte. [11] VisiCalc war zu seiner Zeit so ein Fortschritt, dass Leute Apple IIs kauften, nur um es zu benutzen. Und das war der Beginn eines Trends: Desktopcomputer gewannen, weil Startups Software für sie schrieben.

Es sieht so aus, als würde serverseitige Software dieses Mal gut sein, weil Startups sie schreiben werden. Computer sind jetzt so billig, dass Sie, wie wir, mit einem Desktopcomputer als Server loslegen können. Kostengünstige Prozessoren haben den Workstation-Markt aufgefressen (das Wort hört man kaum noch) und sind auf dem besten Weg, den Server-Markt zu durchdringen; Yahoos Server, die mit Belastungen umgehen, die so hoch sind wie irgendwo im Internet, haben alle die gleichen günstigen Intel-Prozessoren, die Sie auch in Ihrem Desktopcomputer haben. Und sobald Sie die Software geschrieben haben, brauchen Sie nur noch eine Website, um sie zu verkaufen. Fast alle unsere Nutzer kamen direkt über Mundpropaganda und Presseverweise auf unsere Website. [12]

Viaweb war ein typisches Larvenstartup. Wir hatten Angst davor, ein Unternehmen zu gründen, und trösteten uns in den ersten Monaten damit, die ganze Sache als Experiment zu behandeln, das wir jederzeit abbrechen könnten. Glücklicherweise gab es nur technische Hindernisse. Während wir an der Software arbeiteten, war unser Webserver derselbe Desktopcomputer, den wir für die Entwicklung verwendeten, verbunden mit der Außenwelt über eine Wählleitung. Unsere einzigen Ausgaben in dieser Phase waren Essen und Miete.

Es gibt umso mehr Grund für Startups, webbasierte Software zu schreiben, weil das Schreiben von Desktop-Software inzwischen viel weniger Spaß macht. Wenn Sie jetzt Desktop-Software schreiben wollen, tun Sie es nach Microsofts Regeln, indem Sie ihre APIs aufrufen und ihre fehlerhafte Betriebssoftware umgehen. Und wenn es Ihnen gelingt, etwas zu schreiben, das Erfolg hat, stellen Sie möglicherweise fest, dass Sie lediglich Marktforschung für Microsoft betrieben haben.

Wenn ein Unternehmen eine Plattform schaffen möchte, auf der Startups aufbauen werden, muss es etwas sein, das Hacker selbst benutzen möchten. Das bedeutet, es muss kostengünstig und gut gestaltet sein. Der Mac war bei Hackern beliebt, als er erstmals auf den Markt kam, und viele von ihnen schrieben Software dafür. [13] Das sieht man bei Windows weniger, weil Hacker es nicht benutzen. Die Art von Menschen, die gut darin sind, Software zu schreiben, laufen jetzt wahrscheinlich Linux oder FreeBSD.

Ich glaube nicht, dass wir ein Startup gegründet hätten, um Desktop-Software zu schreiben, denn Desktop-Software muss unter Windows laufen, und bevor wir Software für Windows schreiben könnten, müssten wir es selbst benutzen. Das Web ermöglichte es uns, Windows zu umgehen und direkt über den Browser Unix-Software an Nutzer auszuliefern. Das ist eine befreiende Aussicht, ganz ähnlich wie das Auftauchen von PCs vor fünfundzwanzig Jahren.

Microsoft

Damals, als Desktopcomputer auftauchten, war IBM der Gigant, vor dem alle Angst hatten. Es ist schwer, sich das jetzt vorzustellen, aber ich erinnere mich sehr gut an dieses Gefühl. Jetzt ist der beängstigende Gigant Microsoft, und ich glaube nicht, dass sie so blind für die Bedrohung sind, die ihnen gegenübersteht, wie IBM es war. Schließlich hat Microsoft ihr Geschäft bewusst in Ibms blinden Fleck aufgebaut.

Ich habe früher erwähnt, dass meine Mutter keinen Desktop-Computer wirklich braucht. Die meisten Nutzer wahrscheinlich auch nicht. Das ist ein Problem für Microsoft, und sie wissen es. Wenn Anwendungen auf entfernten 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?

Meine Vermutung ist, dass Microsoft eine Art Server/Desktop-Hybrid entwickeln wird, bei dem das Betriebssystem mit Servern zusammenarbeitet, die sie kontrollieren. Mindestens werden die Dateien zentral für Nutzer verfügbar sein, die das wollen. Ich erwarte nicht, dass Microsoft so weit geht, die Berechnungen auf dem Server durchzuführen und nur einen Browser als Client zu verwenden, wenn sie es vermeiden können. Wenn Sie für einen Client nur einen Browser benötigen, brauchen Sie Microsoft auf dem Client nicht, und wenn Microsoft den Client nicht kontrolliert, können sie die Nutzer nicht zu ihren serverseitigen Anwendungen drängen.

Ich denke, Microsoft wird es schwer haben, den Flaschengeist wieder einzufangen. Es wird zu viele verschiedene Arten von Clients geben, um sie alle zu kontrollieren. Und wenn Microsofts Anwendungen nur mit einigen Clients funktionieren, werden Wettbewerber sie übertrumpfen können, 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 mögen es schaffen, sich einen Platz zu machen, aber ich glaube nicht, dass sie diese neue Welt so dominieren werden wie die Welt der Desktop-Anwendungen.

Es ist nicht so sehr, dass ein Wettbewerber sie stolpern lässt, sondern dass sie über sich selbst stolpern werden. Mit dem Aufkommen webbasierter Software werden sie nicht nur technischen Problemen, sondern auch ihren eigenen Wunschvorstellungen gegenüberstehen. Was sie tun müssen, ist, ihr bestehendes Geschäft zu kannibalisieren, und ich kann nicht sehen, dass sie das tun werden. Die gleiche Zielstrebigkeit, die sie so weit gebracht hat, wird jetzt gegen sie arbeiten. IBM befand sich genau in derselben Situation und konnte sie nicht meistern. IBM machte einen späten und halbherzigen Eintritt in das Mikrocomputergeschäft, weil sie ambivalent gegenüber der Bedrohung ihres Bargeldkühe, dem Großrechnergeschäft, waren. Auch Microsoft wird durch den Wunsch, den Desktop zu retten, behindert werden. Eine Bargeldkuh kann ein verdammt schwerer Affe auf dem Rücken sein.

Ich sage nicht, dass niemand webbasierte Anwendungen dominieren wird. Jemand wird es wahrscheinlich irgendwann. Aber ich denke, es wird eine lange Phase fröhlichen Chaos geben, genau wie in den frühen Tagen der Mikrocomputer. Das war eine gute Zeit für Startups. Viele kleine Unternehmen gediehen und taten es, 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 Auswirkungen der Entscheidungen, die sie treffen. Wenn sie gewinnen, gewinnen sie groß.

Bei einem Startup, das webbasierte Anwendungen entwickelt, wird alles, was man mit Startups in Verbindung bringt, auf die Spitze getrieben. Sie können ein Produkt mit noch weniger Leuten und noch weniger Geld schreiben und veröffentlichen. Sie müssen noch schneller sein und können es sich leisten, noch informeller zu sein. Sie können ihr Produkt buchstäblich als drei Jungs starten, die in einem Wohnzimmer eines Apartments sitzen, und einen Server, der bei einem ISP collocated ist. Das haben wir getan.

Im Laufe der Zeit sind die Teams immer kleiner, schneller und informeller geworden. 1960 bedeutete Softwareentwicklung einen Raum voller Männer mit Hornbrillen und schmalen schwarzen Krawatten, die eifrig zehn Zeilen Code pro Tag auf IBM-Codierformularen schrieben. 1980 war es ein Team von acht bis zehn Leuten, die Jeans im Büro trugen und in vt100s tippten. Jetzt sind es ein paar Jungs, die mit Laptops in einem Wohnzimmer sitzen. (Und Jeans erweisen sich nicht als das letzte Wort in Sachen Informalität.)

Startups sind stressig, und leider wird auch dies bei webbasierten Anwendungen auf die Spitze getrieben. Viele Softwareunternehmen, vor allem zu Beginn, haben Phasen, in denen die Entwickler unter ihren Schreibtischen schlafen und so weiter. Das Beunruhigende an webbasierter Software ist, dass es nichts gibt, was dies zur Standardpraxis werden lässt. Die Geschichten über das Schlafen unter Schreibtischen enden normalerweise: Dann haben wir es endlich ausgeliefert und sind alle für eine Woche nach Hause gegangen und haben geschlafen. Webbasierte Software wird nie ausgeliefert. Sie können 16-Stunden-Tage so lange arbeiten, wie Sie wollen. Und weil Sie es können und Ihre Wettbewerber es auch können, werden Sie dazu gezwungen. Sie können es, also müssen Sie es tun. Es ist Parkinsons Gesetz, das rückwärts läuft.

Das Schlimmste ist nicht die Arbeitszeit, sondern die Verantwortung. Programmierer und Systemadministratoren haben traditionell jeweils ihre eigenen Sorgen. Programmierer müssen sich um Fehler kümmern, und Systemadministratoren müssen sich um die Infrastruktur kümmern. Programmierer mögen einen langen Tag damit verbringen, bis zu den Ellbogen in Quellcode zu arbeiten, aber irgendwann können sie nach Hause gehen und es vergessen. Systemadministratoren lassen den Job nie ganz hinter sich, aber wenn sie um 4:00 Uhr morgens gerufen werden, müssen sie in der Regel nichts sehr Kompliziertes tun. Bei webbasierten Anwendungen werden diese beiden Arten von Stress kombiniert. Die Programmierer werden zu Systemadministratoren, aber ohne die scharf definierten Grenzen, die den Job normalerweise erträglich machen.

Bei Viaweb haben wir die ersten sechs Monate damit verbracht, nur Software zu schreiben. Wir haben die üblichen langen Stunden eines frühen Startups gearbeitet. In einem Desktop-Softwareunternehmen wäre das der Teil gewesen, in dem wir hart gearbeitet haben, aber es fühlte sich wie ein Urlaub im Vergleich zu der nächsten Phase an, als wir Nutzer auf unseren Server nahmen. Der zweitgrößte Vorteil des Verkaufs von Viaweb an Yahoo (nach dem Geld) war, die gesamte Verantwortung auf die Schultern eines großen Unternehmens abwälzen zu können.

Desktop-Software zwingt Nutzer dazu, Systemadministratoren zu werden. Webbasierte Software zwingt Programmierer dazu. Es gibt insgesamt weniger Stress, aber mehr für die Programmierer. Das muss nicht unbedingt schlechte Nachrichten sein. Wenn Sie ein Startup sind, das mit einem großen Unternehmen konkurriert, sind das gute Nachrichten. [15] Webbasierte Anwendungen bieten einen geradlinigen Weg, Ihre Wettbewerber zu überarbeiten. Kein Startup wünscht sich mehr.

Gerade gut genug

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

Hier ist die Übersetzung des Inhalts ins Deutsche:

Es gibt hier eine Parallele zu den ersten Mikrocomputern. Die Prozessoren in diesen Maschinen waren eigentlich nicht dafür gedacht, die CPUs von Computern zu sein. Sie wurden entwickelt, um in Dingen wie Ampeln verwendet zu werden. Aber Leute wie Ed Roberts, der den Altair entworfen hat, erkannten, dass sie gerade gut genug waren. Man konnte einen dieser Chips mit etwas Speicher (256 Bytes im ersten Altair) und Frontplattenschaltern kombinieren und hätte einen funktionierenden Computer. Die Möglichkeit, einen eigenen Computer zu haben, war so aufregend, dass es viele Leute gab, die sie kaufen wollten, wie begrenzt sie auch sein mochten.

Webseiten wurden nicht als Benutzeroberfläche für Anwendungen entwickelt, aber sie sind gerade gut genug. Und für eine beträchtliche Anzahl von Nutzern wird eine Software, die man von jedem Browser aus verwenden kann, allein schon ein so großer Gewinn sein, dass sie die Unbequemlichkeit der Benutzeroberfläche aufwiegt. Vielleicht können Sie mit HTML keine bestaussehende Tabellenkalkulation schreiben, aber Sie können eine Tabellenkalkulation schreiben, die mehrere Personen gleichzeitig von verschiedenen Orten aus ohne spezielle Client-Software verwenden oder die Live-Datenzuführungen aufnehmen oder die Sie benachrichtigt, wenn bestimmte Bedingungen ausgelöst werden. Wichtiger noch ist, dass Sie neue Arten von Anwendungen entwickeln können, die noch nicht einmal einen Namen haben. VisiCalc war schließlich nicht nur eine Mikrocomputer-Version einer Großrechner-Anwendung, sondern eine neue Art von Anwendung.

Natürlich müssen serverseitige Anwendungen nicht webbasiert sein. Sie könnten auch einen anderen Typ von Client haben. Aber ich bin ziemlich sicher, dass das eine schlechte Idee wäre. Es wäre sehr bequem, wenn Sie davon ausgehen könnten, dass jeder Ihr Client-Programm installiert - so bequem, dass Sie sich leicht davon überzeugen könnten, dass sie es alle tun würden -, aber wenn sie es nicht tun, sind Sie am Ende. Da webbasierte Software keine Annahmen über den Client trifft, funktioniert sie überall, wo das Web funktioniert. Das ist schon ein großer Vorteil, und der Vorteil wird wachsen, je mehr neue Web-Geräte auf den Markt kommen. Die Nutzer werden Sie mögen, weil Ihre Software einfach funktioniert, und Ihr Leben wird leichter sein, weil Sie sie nicht für jeden neuen Client anpassen müssen. [16]

Ich habe das Gefühl, die Entwicklung des Webs so genau verfolgt zu haben wie kaum jemand sonst, und ich kann nicht vorhersagen, was mit den Clients passieren wird. Konvergenz kommt wahrscheinlich, aber wohin? Ich kann keinen Gewinner ausmachen. Eine Sache, die ich vorhersagen kann, ist ein Konflikt zwischen AOL und Microsoft. Was auch immer Microsofts .NET sein wird, es wird wahrscheinlich den Desktop mit Servern verbinden. Wenn AOL sich nicht wehrt, werden sie entweder beiseite gedrängt oder zu einer Leitung zwischen Microsoft-Client- und -Serversoftware. Wenn Microsoft und AOL in einen Klientenkrieg geraten, wird das Einzige, was auf beiden Seiten 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 auch nicht wissen, wenn Sie auf webbasierte Anwendungen setzen. Niemand kann das brechen, ohne das Surfen zu brechen. Das Web mag nicht der einzige Weg sein, Software auszuliefern, aber es ist einer, der jetzt funktioniert und noch lange funktionieren wird. Webbasierte Anwendungen sind billig zu entwickeln und selbst für das kleinste Start-up einfach zu liefern. Es ist eine Menge Arbeit und eine besonders stressige Art von Arbeit, aber das erhöht nur die Chancen für Start-ups.

Warum nicht?

E. B. White amüsierte sich darüber, von einem Bauernfreund zu erfahren, dass viele elektrifizierte Zäune keinen Strom führen. Die Kühe lernen anscheinend, sich von ihnen fernzuhalten, und danach braucht man den Strom nicht mehr. "Erhebt euch, Kühe!", schrieb er, "Nehmt eure Freiheit, während die Tyrannen schlafen!"

Wenn Sie ein Hacker sind, der schon einmal daran gedacht hat, ein Start-up zu gründen, gibt es wahrscheinlich zwei Dinge, die Sie davon abhalten. Das eine ist, dass Sie nichts über Geschäfte wissen. Das andere ist, dass Sie Angst vor Wettbewerb haben. Keiner dieser Zäune führt Strom.

Es gibt nur zwei Dinge, die Sie über Geschäfte wissen müssen: Bauen Sie etwas, das die Nutzer lieben, und verdienen Sie mehr, als Sie ausgeben. Wenn Sie diese beiden Dinge richtig machen, sind Sie den meisten Start-ups schon voraus. Den Rest können Sie im Laufe der Zeit herausfinden.

Vielleicht verdienen Sie anfangs nicht mehr, als Sie ausgeben, aber solange die Lücke schnell genug schließt, werden Sie in Ordnung sein. Wenn Sie unterdotiert starten, ermutigt Sie das zumindest zu einer Sparsamkeitsmentalität. Je weniger Sie ausgeben, desto leichter ist es, mehr zu verdienen als auszugeben. Glücklicherweise kann es sehr billig sein, eine webbasierte Anwendung zu starten. Wir haben mit weniger als 10.000 US-Dollar gestartet, und es wäre heute sogar noch billiger. Wir mussten Tausende für einen Server und Tausende mehr für SSL ausgeben. (Das einzige Unternehmen, das damals SSL-Software verkaufte, war Netscape.) Jetzt können Sie einen viel leistungsfähigeren Server mit SSL-Unterstützung für weniger mieten, als wir für die Bandbreite allein bezahlt haben. Sie könnten eine webbasierte Anwendung jetzt für weniger als die Kosten eines hochwertigeren Bürostuhls starten.

Was das Erstellen von etwas angeht, das die Nutzer lieben, hier sind einige allgemeine Tipps. Beginnen Sie damit, etwas Sauberes und Einfaches zu machen, das Sie selbst gerne nutzen würden. Bringen Sie schnell eine Version 1.0 heraus und verbessern Sie dann kontinuierlich die Software, indem Sie genau auf die Nutzer hören. Der Kunde hat immer Recht, aber verschiedene Kunden haben Recht in Bezug auf verschiedene Dinge; die am wenigsten anspruchsvollen Nutzer zeigen Ihnen, was Sie vereinfachen und klären müssen, und die anspruchsvollsten 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 Auswahl der Nutzer zu begrenzen. Werden Sie nicht selbstzufrieden, nur weil die Software Ihrer Wettbewerber schlecht ist; der Maßstab, mit dem Sie Ihre Software vergleichen sollten, ist das, was sie sein könnte, nicht das, was Ihre derzeitigen Wettbewerber zufällig haben. Nutzen Sie Ihre Software ständig selbst. Viaweb sollte eigentlich ein Online-Shop-Builder sein, aber wir haben es auch für unsere eigene Website verwendet. Hören Sie nicht nur auf Marketing-Leute oder Designer oder Produktmanager, nur weil sie diesen Titel haben. 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 genauso gut entwerfen können wie implementieren, starten Sie kein Start-up.

Lass uns jetzt über Wettbewerb sprechen. Wovor du dich vermutlich fürchtest, sind nicht Gruppen von Hackern wie du, sondern echte Unternehmen mit Büros, Geschäftsplänen, Verkäufern und so weiter, oder? Nun, sie haben mehr Angst vor dir als du vor ihnen, und sie haben Recht. Es ist viel einfacher für ein paar Hacker herauszufinden, wie man Büroräume mietet oder Vertriebsmitarbeiter einstellt, als für ein Unternehmen jeder Größe, Software zu schreiben. Ich war auf beiden Seiten und ich weiß es.

Als Viaweb von Yahoo gekauft wurde, fand ich mich plötzlich in einem großen Unternehmen wieder, und es war, als würde man durch hüfttiefes Wasser laufen.

Ich will Yahoo nicht herabwürdigen. Sie hatten einige gute Hacker, und das Top-Management waren echte Durchstarter. 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 Start-up. Kein großes Unternehmen kann viel besser sein. Was an Microsoft beängstigend ist, ist, dass ein so großes Unternehmen überhaupt Software entwickeln kann. Sie sind wie ein Berg, der laufen kann.

Lass dich nicht einschüchtern. Du kannst genauso viel tun, was Microsoft nicht kann, wie sie das, was du nicht kannst. Und niemand kann dich aufhalten. Du musst niemanden um Erlaubnis bitten, um webbasierte Anwendungen zu entwickeln. Du musst keine Lizenzverträge abschließen, Regalplatz in Einzelhandelsgeschäften beantragen oder um eine Einbindung deiner Anwendung ins Betriebssystem betteln. Du kannst Software direkt in den Browser liefern, und niemand kann sich zwischen dich und potenzielle Nutzer stellen, ohne ihnen das Surfen im Web zu verwehren.

Du magst es nicht glauben, aber ich verspreche dir, Microsoft hat Angst vor dir. Die selbstgefälligen mittleren Manager vielleicht nicht, aber Bill hat sie, denn er war einmal du, 1975, als eine neue Art der Softwareauslieferung auftauchte.

Anmerkungen

[1] In der Erkenntnis, dass ein Großteil des Geldes in den Dienstleistungen liegt, haben Unternehmen, die leichte Clients bauen, normalerweise versucht, die Hardware mit einem Online-Dienst zu kombinieren. Dieser Ansatz hat nicht gut funktioniert, zum Teil, weil man zwei verschiedene Arten von Unternehmen braucht, um Unterhaltungselektronik herzustellen und einen Online-Dienst zu betreiben, und zum Teil, weil Nutzer die Idee hassen. Das Verschenken des Rasierers und das Verdienen mit den Klingen mag für Gillette funktionieren, aber ein Rasierer ist ein viel kleineres Engagement als ein Web-Terminal. Hersteller von Mobiltelefonen sind zufrieden damit, Hardware zu verkaufen, ohne versuchen zu wollen, die Dienstleistungseinnahmen ebenfalls zu vereinnahmen. Das sollte wahrscheinlich auch das Modell für Internet-Clients sein. Wenn jemand einfach eine hübsch aussehende kleine Box mit einem Webbrowser verkaufen würde, die man über jeden ISP nutzen kann, würde jeder Technologiemuffel im Land eine kaufen.

[2] Die Sicherheit hängt immer mehr davon ab, keine Fehler zu machen, als von irgendwelchen Designentscheidungen, aber die Natur von serverseitiger Software wird die Entwickler dazu bringen, mehr Aufmerksamkeit darauf zu verwenden, keine Fehler zu machen. Wenn ein Server kompromittiert wird, könnte der Schaden so groß sein, dass ASPs (die im Geschäft bleiben wollen) wahrscheinlich vorsichtig mit der Sicherheit umgehen werden.

[3] 1995, als wir Viaweb starteten, galten Java-Applets als die Technologie, die jeder verwenden würde, um serverseitige Anwendungen zu entwickeln. Applets erschienen uns als eine altmodische Idee. Programme herunterladen, um sie auf dem Client auszuführen? Einfacher, sie einfach ganz auf dem Server laufen zu lassen. Wir verschwendeten wenig Zeit mit Applets, aber unzählige andere Start-ups müssen in diese Sackgasse gelockt worden sein. Wenige können lebend entkommen sein, sonst hätte Microsoft Java in der jüngsten Version von Explorer nicht fallen lassen können.

[4] Dieser Punkt stammt von Trevor Blackwell, der hinzufügt: "Die Kosten für das Schreiben von Software steigen mehr als linear mit ihrer Größe. Vielleicht liegt das hauptsächlich am Beheben alter Fehler, und die Kosten können linearer sein, wenn alle Fehler schnell gefunden werden."

[5] Die schwierigste Art von Fehler zu finden, ist vielleicht eine Variante des zusammengesetzten Fehlers, bei dem ein Fehler einen anderen zufällig kompensiert. Wenn man einen Fehler behebt, wird der andere sichtbar. Aber es wird so erscheinen, als sei die Behebung falsch, da dies die letzte Änderung war.

[6] Innerhalb von Viaweb hatten wir einmal einen Wettbewerb, um das Schlimmste an unserer Software zu beschreiben. Zwei Mitarbeiter des Kundenservice teilten sich den ersten Preis mit Einträgen, bei denen mir immer noch die Nackenhaare zu Berge stehen. Wir haben beide Probleme sofort behoben.

[7] Robert Morris schrieb das Bestellsystem, das Kunden zum Aufgeben von Bestellungen nutzten. Trevor Blackwell schrieb den Bildgenerator und den Manager, den Händler nutzten, um Bestellungen abzurufen, Statistiken anzusehen und Domainnamen zu konfigurieren. Ich schrieb den Editor, den Händler zum Erstellen ihrer Websites nutzten. Das Bestellsystem und der Bildgenerator wurden in C und C++ geschrieben, der Manager hauptsächlich in Perl und der Editor in Lisp.

[8] Preisdiskriminierung ist so weit verbreitet (wie oft haben Sie schon gehört, dass ein Einzelhändler behauptet, seine Einkaufsmacht bedeute niedrigere Preise für Sie?), dass ich überrascht war, dass sie in den USA durch den Robinson-Patman-Akt von 1936 verboten ist. Dieses Gesetz scheint nicht sehr streng durchgesetzt zu werden.

[9] In No Logo sagt Naomi Klein, dass Bekleidungsmarken, die bei "städtischer Jugend" beliebt sind, nicht zu sehr versuchen, Ladendiebstahl zu verhindern, da in ihrer Zielgruppe die Ladendiebe auch die Meinungsführer in der Mode 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 dem Wettbewerbsdruck ausgesetzt.

[11] Die beiden Männer waren Dan Bricklin und Bob Frankston. Dan schrieb einen Prototyp in Basic in ein paar Tagen, dann arbeiteten sie über das nächste Jahr zusammen (meist nachts), um eine leistungsfähigere Version in 6502-Maschinensprache zu erstellen. Dan war damals an der Harvard Business School und Bob hatte offiziell einen Tageslohn als Softwareentwickler. "Es gab kein großes Risiko, ein Geschäft zu machen", schrieb Bob, "Wenn es scheiterte, dann scheiterte es. Kein großes Ding."

[12] Es ist nicht ganz so einfach, wie ich es klingen lasse. Es dauerte eine schmerzhaft lange Zeit, bis sich Mundpropaganda in Gang kam, und wir bekamen erst dann viel Presseresonanz, als wir eine PR-Firma (zweifellos die beste im Geschäft) für 16.000 US-Dollar pro Monat engagierten. Aber es stimmte, dass der einzige nennenswerte Kanal unsere eigene Website war.

[13] Wenn der Mac so großartig war, warum hat er dann verloren? Kosten, wieder einmal. Microsoft konzentrierte sich auf das Softwaregeschäft und entfesselte eine Schwarm billiger Komponentenlieferanten auf die Apple-Hardware. Es half auch nicht, dass Anzugträger in einer entscheidenden Phase die Kontrolle übernahmen.

[14] Eine Sache, die Web-basierte Anwendungen unterstützen und verhindern würde, dass die nächste Generation von Software von Microsoft in den Schatten gestellt wird, wäre ein guter Open-Source-Browser. Mozilla ist Open-Source, scheint aber darunter gelitten zu haben, dass es so lange Unternehmenssoftware war. Ein kleiner, schneller Browser, der aktiv gepflegt wird, wäre an sich schon eine tolle Sache und würde Unternehmen wahrscheinlich auch dazu ermutigen, kleine Web-Geräte zu bauen.

Unter anderem würde ein ordnungsgemäßer Open-Source-Browser dazu führen, dass HTTP und HTML sich weiterentwickeln (wie z.B. Perl). Es würde Web-basierte Anwendungen sehr unterstützen, zwischen dem Auswählen eines Links und dem Folgen unterscheiden zu können; alles, was man dafür bräuchte, wäre eine triviale Erweiterung von HTTP, um mehrere URLs in einer Anfrage zuzulassen. Auch Dropdown-Menüs wären gut.

Wenn du die Welt verändern willst, schreibe einen neuen Mosaic. Denkst du, es ist zu spät? 1998 dachten viele, es sei zu spät, eine neue Suchmaschine zu starten, aber Google hat sie eines Besseren belehrt. Es gibt immer Platz für etwas Neues, wenn die aktuellen Optionen schlecht genug sind. Stelle sicher, dass es zuerst auf allen freien Betriebssystemen funktioniert - neue Dinge beginnen mit ihren Nutzern.

[15] Trevor Blackwell, der wahrscheinlich mehr darüber aus eigener Erfahrung weiß als jeder andere, schreibt:

"Ich würde sogar so weit gehen zu sagen, dass serverseitige Software für Programmierer so schwierig ist, dass es zu einer grundlegenden wirtschaftlichen Verschiebung weg von großen Unternehmen führt. Es erfordert die Art von Intensität und Hingabe von Programmierern, die sie nur bereit sind zu erbringen, wenn es ihr eigenes Unternehmen ist. Softwareunternehmen können qualifizierte Leute einstellen, um in einer nicht allzu anspruchsvollen Umgebung zu arbeiten, und können unqualifizierte Leute einstellen, um Härten auszuhalten, aber sie können keine hochqualifizierten Leute einstellen, um sich die Seele aus dem Leib zu arbeiten. Da Kapital nicht mehr benötigt wird, haben große Unternehmen wenig einzubringen."

[16] In der ursprünglichen Version dieses Essays habe ich empfohlen, JavaScript zu vermeiden. Das war 2001 ein guter Plan, aber JavaScript funktioniert jetzt.

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

Du findest diesen Aufsatz und 14 weitere in Hackers & Painters.