另一条道路
2001年9月
(本文解释了为什么下一代软件可能主要基于服务器,这对程序员意味着什么,以及为什么这种新型软件对创业公司来说是一个绝佳机会。本文源自我在BBN实验室的一次演讲。)
1995年夏天,我和我的朋友Robert Morris决定创办一家创业公司。当时Netscape的IPO宣传活动正在如火如荼地进行,媒体上充斥着关于在线商务的讨论。当时网络上可能只有30家实际的商店,都是手工制作的。如果将来会有很多在线商店,就需要有制作它们的软件,所以我们决定编写一些。
最初一周左右,我们打算把它做成一个普通的桌面应用程序。然后有一天,我们想到让软件在我们的Web服务器上运行,使用浏览器作为界面。我们尝试重写软件使其通过Web工作,很明显这是正确的方向。如果我们把软件写成在服务器上运行,对用户和我们来说都会容易得多。
这被证明是一个好计划。现在,作为Yahoo Store,这个软件是最受欢迎的在线商店构建工具,拥有约14,000名用户。
当我们开始Viaweb时,几乎没有人理解我们说的"软件在服务器上运行"是什么意思。直到一年后Hotmail推出,人们才开始明白。现在每个人都知道这是一个有效的方法。现在对我们这样的人有一个专门的称呼:应用服务提供商,简称ASP。
我认为下一代软件中的很大一部分将按照这种模式编写。即使是损失最大的微软,似乎也看到了将某些功能从桌面转移到服务器的必然性。如果软件从桌面转移到服务器,对开发者来说将意味着一个非常不同的世界。本文描述了我们作为这个新世界的第一批访客所看到的令人惊讶的事情。就软件确实转移到服务器而言,我在这里描述的就是未来。
下一件事?
当我们回顾桌面软件时代时,我想我们会惊叹于人们所忍受的不便,就像我们现在惊叹于早期汽车用户所忍受的不便一样。在最初的二三十年里,你必须是一个汽车专家才能拥有一辆汽车。但汽车是如此大的优势,以至于许多不是汽车专家的人也想要拥有它们。
计算机现在正处于这个阶段。当你拥有一台桌面计算机时,你最终会学到比你想知道的更多的关于其内部发生的事情。但美国超过一半的家庭都拥有一台。我母亲有一台用于收发电子邮件和记账的电脑。大约一年前,她收到苹果公司的一封信,为她提供新版本操作系统的折扣,这让她感到不安。当一个只想用电脑收发邮件和记账的65岁女性不得不考虑安装新的操作系统时,这一定有什么问题。普通用户甚至不应该知道"操作系统"这个词,更不用说"设备驱动程序"或"补丁"了。
现在有另一种交付软件的方式,可以让用户免于成为系统管理员。基于Web的应用程序是在Web服务器上运行并使用Web页面作为用户界面的程序。对普通用户来说,这种新型软件比桌面软件更容易、更便宜、更便携、更可靠,而且通常更强大。
使用基于Web的软件,大多数用户只需要考虑他们使用的应用程序。所有混乱的、不断变化的东西都会放在某个服务器上,由擅长这类事情的人来维护。因此,你通常不需要一台计算机本身来使用软件。你只需要一个带键盘、屏幕和Web浏览器的东西。也许它会支持无线互联网接入。也许它还会是你的手机。不管是什么,它都会是消费电子产品:价格在200美元左右,人们主要根据外壳外观来选择。你会在互联网服务上花费比硬件更多的钱,就像现在使用电话一样。[1]
点击到服务器再返回需要大约十分之一秒,所以对于像Photoshop这样需要高度交互的软件,用户仍然希望计算在桌面上进行。但如果你看看大多数人使用计算机做的事情,十分之一秒的延迟不会造成问题。我母亲并不真正需要一台桌面计算机,而且有很多像她这样的人。
用户的胜利
在我家附近有一辆汽车,保险杠上贴着一张贴纸,上面写着"宁死不屈"。大多数人,在大多数时候,会选择需要最少工作的选项。如果基于Web的软件获胜,那是因为它更方便。而且看起来确实如此,对用户和开发者都是如此。
要使用纯Web应用程序,你只需要一个连接到互联网的浏览器。所以你可以随时随地使用Web应用程序。当你在桌面计算机上安装软件时,你只能在那台计算机上使用它。更糟糕的是,你的文件被困在那台计算机上。随着人们习惯了网络,这种模式的不便变得越来越明显。
这里的楔子尖端是Web邮件。现在数百万人意识到,无论你在哪里,你都应该能够访问电子邮件。如果你能看到你的邮件,为什么不能看到你的日历?如果你能和同事讨论文档,为什么不能编辑它?为什么你的任何数据都要被困在远处办公桌上的某台计算机里?
“你的计算机"这个整体概念正在消失,被"你的数据"所取代。你应该能够从任何计算机访问你的数据。或者更准确地说,从任何客户端访问,而客户端不一定是计算机。
客户端不应该存储数据;它们应该像电话一样。事实上,它们可能会变成电话,或者反之亦然。随着客户端变得越来越小,你有另一个理由不在它们上面保存数据:随身携带的东西可能会丢失或被盗。把PDA落在出租车里就像磁盘崩溃一样,只是你的数据是交给了别人,而不是被销毁。
使用纯Web软件,你的数据和应用程序都不会保存在客户端。所以你不需要安装任何东西就能使用它。当没有安装时,你就不必担心安装出错。应用程序和你的操作系统之间不可能有不兼容,因为软件不在你的操作系统上运行。
因为它不需要安装,在"购买"之前尝试Web软件会很容易,也很常见。你应该期望能够通过访问提供该软件的网站来免费试用任何Web应用程序。在Viaweb,我们的整个网站就像一个指向用户试用的大箭头。
在尝试演示后,注册服务应该只需要填写一个简短的表格(越简短越好)。这应该是用户需要做的最后一项工作。使用Web软件,你应该能在不支付额外费用、不做任何工作,甚至可能不知道的情况下获得新版本。
升级不会像现在这样带来巨大的冲击。随着时间的推移,应用程序会悄悄地变得更强大。这需要开发者付出一些努力。他们必须设计软件,使其能够在不让用户感到困惑的情况下更新。这是一个新问题,但有方法可以解决。
使用Web应用程序,每个人都使用相同的版本,错误可以在发现后立即修复。所以Web软件应该比桌面软件有更少的错误。在Viaweb,我怀疑我们任何时候的已知错误都不超过10个。这比桌面软件好得多。
Web应用程序可以同时被多个人使用。这对协作应用程序来说是一个明显的优势,但我敢打赌,一旦用户意识到这是可能的,他们就会开始希望在大多数应用程序中都有这个功能。让两个人同时编辑同一个文档通常很有用。Viaweb允许多个用户同时编辑一个网站,这更多是因为这是编写软件的正确方式,而不是因为我们期望用户会想要这样做,但事实证明很多人都想要。
当你使用Web应用程序时,你的数据会更安全。磁盘崩溃不会成为过去,但用户不会再听到它们了。它们会在服务器农场内发生。提供Web应用程序的公司实际上会做备份 — 不仅是因为他们会有真正的系统管理员担心这些事情,而且因为一个丢失用户数据的ASP会陷入大麻烦。当人们在磁盘崩溃中丢失自己的数据时,他们不能太生气,因为他们只能生自己的气。当一家公司为他们丢失数据时,他们会更生气。
最后,Web软件应该不太容易受到病毒攻击。如果客户端除了浏览器什么都不运行,运行病毒的机会就更少,而且本地也没有数据可以破坏。一个攻击服务器本身的程序会发现它们防御得很好。[2]
对用户来说,Web软件的压力会更小。我想如果你看看普通Windows用户的内心,你会发现一个巨大且基本上未被开发的愿望,希望软件符合这个描述。释放出来,它可能是一股强大的力量。
服务器端软件的优势
服务器端软件比桌面应用有以下几个主要优势:
-
更好的用户体验:用户不需要安装或更新软件,只需要一个浏览器就能使用。软件始终是最新版本,用户不需要担心兼容性问题。
-
更低的维护成本:由于软件运行在服务器上,开发者可以快速修复bug和添加新功能,用户立即就能获得更新。
-
更好的安全性:敏感数据存储在服务器上,而不是用户的本地机器上,减少了数据泄露的风险。
-
更容易扩展:服务器端软件可以轻松地扩展到数百万用户,而桌面应用则需要考虑每个用户的硬件限制。
-
更好的商业模式:服务器端软件可以采用订阅模式,提供更稳定的收入流。
未来的趋势
Graham预测,随着互联网技术的发展,越来越多的软件将从桌面迁移到服务器端。他认为,这不仅是技术上的进步,更是商业模式和用户体验的重大变革。
他指出,这种转变已经在一些领域开始发生,比如电子邮件、文档处理等。未来,更多的应用软件也会走上这条路。
结论
Graham认为,服务器端软件是软件开发的"另一条道路”,它提供了更好的用户体验、更低的维护成本和更稳定的商业模式。虽然这种转变可能会带来一些挑战,但最终会带来更好的结果。
他建议创业者们认真考虑这条道路,因为它不仅代表了技术的进步,更代表了商业模式的革新。在这个快速变化的时代,选择正确的技术路线对于创业成功至关重要。
英文版:paulgraham.com/road.html|中文版:HiJiangChuan.com/paulgraham/011-the-other-road-ahead
更新记录:
- 2025-02-14 HiJiangChuan 初稿翻译,术语待验证;