← Paul Graham

The Other Road Ahead

前方的另一条路
 ·  Paul Graham  ·  原文

September 2001 (This article explains why much of the next generation of software may be server-based, what that will mean for programmers, and why this new kind of software is a great opportunity for startups.

2001 年 9 月(本文解释了为什么下一代软件大部分可能是基于服务器的、这对程序员意味着什么,以及为什么这种新型软件对于初创公司来说是一个很好的机会。

It's derived from a talk at BBN Labs.) In the summer of 1995, my friend Robert Morris and I decided to start a startup.

它源自 BBN 实验室的一次演讲。)1995 年夏天,我和我的朋友罗伯特·莫里斯 (Robert Morris) 决定创办一家初创公司。

The PR campaign leading up to Netscape's IPO was running full blast then, and there was a lot of talk in the press

当时,网景首次公开募股前的公关活动正如火如荼地进行,媒体上议论纷纷

about online commerce.

关于在线商务。

At the time there might have been thirty actual stores on the Web, all made by hand.

当时,网上可能有三十家实际商店,全部是手工制作的。

If there were going to be a lot of online stores, there would need to be software for making them, so we decided to write some.

如果有很多在线商店,就需要有制作它们的软件,所以我们决定编写一些。

For the first week or so we intended to make this an ordinary desktop application.

在第一周左右的时间里,我们打算将其变成一个普通的桌面应用程序。

Then one day we had the idea of making the software run on our Web server, using the browser as an

然后有一天,我们有了让软件在我们的 Web 服务器上运行的想法,使用浏览器作为

interface.

界面。

We tried rewriting the software to work over the Web, and it was clear that this was the way to go.

我们尝试重写该软件以在网络上运行,很明显这是正确的方法。

If we wrote our software to run on the server, it would be a lot easier for the users and for us as well.

如果我们编写在服务器上运行的软件,那么对于用户和我们来说都会容易得多。

This turned out to be a good plan.

事实证明这是一个好计划。

Now, as Yahoo Store , this software is the most popular online store builder, with about 14,000 users.

现在,作为 Yahoo Store,该软件是最受欢迎的在线商店构建器,拥有约 14,000 名用户。

When we started Viaweb, hardly anyone understood what we meant when

当我们创办 Viaweb 时,几乎没有人明白我们的意思

we said that the software ran on the server.

我们说软件是在服务器上运行的。

It was not until Hotmail was launched a year later that people started to get it.

直到一年后 Hotmail 推出后,人们才开始使用它。

Now everyone knows that this is a valid approach.

现在每个人都知道这是一个有效的方法。

There is a name now for what we were: an Application Service Provider, or ASP.

我们的过去现在有了一个名字:应用程序服务提供商 (ASP)。

I think that a lot of the next generation of software will be written on this model.

我认为很多下一代软件都会基于这个模型编写。

Even Microsoft, who have the most to lose, seem to see the inevitablity of moving some things off

即使是损失最大的微软似乎也不可避免地要放弃一些东西

the desktop.

桌面。

If software moves off the desktop and onto servers, it will mean a very different world for developers.

如果软件从桌面转移到服务器上,这对开发人员来说将意味着一个截然不同的世界。

This article describes the surprising things we saw, as some of the first visitors to this new world.

这篇文章描述了我们作为这个新世界的第一批访客所看到的令人惊讶的事情。

To the extent software does move onto servers, what I'm describing here is the future.

就软件确实转移到服务器上而言,我在这里描述的是未来。

The Next Thing?

下一步是什么?

When we look back on the desktop software era, I think we'll marvel at the inconveniences people put up with, just as we marvel now at

当我们回顾桌面软件时代时,我想我们会惊叹于人们所忍受的不便,就像我们现在惊叹于

what early car owners put up with.

早期车主所忍受的。

For the first twenty or thirty years, you had to be a car expert to own a car.

在最初的二十年或三十年里,你必须是汽车专家才能拥有一辆汽车。

But cars were such a big win that lots of people who weren't car experts wanted to have them as well.

但汽车是一个巨大的胜利,以至于许多非汽车专家也想拥有它们。

Computers are in this phase now.

计算机现在正处于这个阶段。

When you own a desktop computer, you end up learning a lot more than you wanted to know about what's happening inside it.

当您拥有一台台式计算机时,您最终会学到比您想知道的更多的关于计算机内部发生的情况。

But more than half the households in the US

但超过一半的美国家庭

own one.

拥有一个。

My mother has a computer that she uses for email and for keeping accounts.

我母亲有一台电脑,用来收发电子邮件和记账。

About a year ago she was alarmed to receive a letter from Apple, offering her a discount on a new version of the operating system.

大约一年前,她收到苹果公司的一封信,信中为她提供了新版本操作系统的折扣,这让她感到震惊。

There's something wrong when a sixty-five year old woman who wants to use a computer for email and accounts has to think about installing new operating systems.

当一位 65 岁的女性想要使用计算机处理电子邮件和帐户时,必须考虑安装新的操作系统,这就出了问题。

Ordinary users shouldn't even know the words "operating system," much less "device

普通用户甚至不应该知道“操作系统”这个词,更不用说“设备”了

driver" or "patch." There is now another way to deliver software that will save users from becoming system administrators.

驱动程序”或“补丁”。现在有另一种交付软件的方法可以让用户免于成为系统管理员。

Web-based applications are programs that run on Web servers and use Web pages as the user interface.

基于 Web 的应用程序是在 Web 服务器上运行并使用网页作为用户界面的程序。

For the average user this new kind of software will be easier, cheaper, more mobile, more reliable, and often more powerful than desktop software.

对于普通用户来说,这种新型软件将比桌面软件更容易、更便宜、更移动、更可靠,而且通常更强大。

With Web-based software, most users won't have to think about

使用基于网络的软件,大多数用户无需考虑

anything except the applications they use.

除了他们使用的应用程序之外的任何东西。

All the messy, changing stuff will be sitting on a server somewhere, maintained by the kind of people who are good at that kind of thing.

所有混乱的、不断变化的东西都将存放在某个服务器上,由擅长此类事情的人维护。

And so you won't ordinarily need a computer, per se, to use software.

因此,您通常不需要计算机本身来使用软件。

All you'll need will be something with a keyboard, a screen, and a Web browser.

您所需要的只是一个键盘、一个屏幕和一个网络浏览器。

Maybe it will have wireless Internet access.

也许它将有无线互联网接入。

Maybe it will also be your cell phone.

也许它也将是您的手机。

Whatever it is, it will be consumer electronics:

不管它是什么,都将是消费电子产品:

something that costs about $200, and that people choose mostly based on how the case looks.

价格约为 200 美元的东西,人们主要根据外壳的外观来选择。

You'll pay more for Internet services than you do for the hardware, just as you do now with telephones.

您为互联网服务支付的费用将高于为硬件支付的费用,就像您现在为电话支付的费用一样。

[1] It will take about a tenth of a second for a click to get to the server and back, so users of heavily interactive software, like Photoshop, will still want to have the computations happening on the desktop.

[1] 单击一次到达服务器并返回大约需要十分之一秒,因此 Photoshop 等高度交互软件的用户仍然希望在桌面上进行计算。

But if you look at the kind of things most people

但如果你看看大多数人的事情

use computers for, a tenth of a second latency would not be a problem.

使用计算机,十分之一秒的延迟不会是问题。

My mother doesn't really need a desktop computer, and there are a lot of people like her.

我妈妈其实并不需要台式电脑,而且像她这样的人还有很多。

The Win for Users Near my house there is a car with a bumper sticker that reads "death before inconvenience." Most people, most of the time, will take whatever choice requires least work.

用户的胜利 我家附近有一辆汽车,保险杠上贴着一张贴纸,上面写着“在不便之前先死”。大多数人,大多数时候,都会采取任何需要最少工作的选择。

If Web-based software wins, it will be because it's more convenient.

如果基于网络的软件获胜,那将是因为它更方便。

And it looks as if it

而且看起来好像是

will be, for users and developers both.

对于用户和开发者来说都是如此。

To use a purely Web-based application, all you need is a browser connected to the Internet.

要使用纯粹基于 Web 的应用程序,您只需要一个连接到 Internet 的浏览器。

So you can use a Web-based application anywhere.

因此您可以在任何地方使用基于 Web 的应用程序。

When you install software on your desktop computer, you can only use it on that computer.

当您在台式计算机上安装软件时,您只能在该计算机上使用它。

Worse still, your files are trapped on that computer.

更糟糕的是,您的文件被困在该计算机上。

The inconvenience of this model becomes more and more evident as people get used to networks.

随着人们习惯网络,这种模式的不便变得越来越明显。

The thin end of the wedge here was Web-based email.

这里楔子的薄弱部分是基于网络的电子邮件。

Millions of people now realize that you should have access to email messages no matter where you are.

现在,数百万人意识到,无论您身在何处,都应该能够访问电子邮件。

And if you can see your email, why not your calendar?

如果您可以看到电子邮件,为什么看不到日历呢?

If you can discuss a document with your colleagues, why can't you edit it?

如果您可以与同事讨论文档,为什么不能编辑它?

Why should any of your data be trapped on some computer sitting on a faraway desk?

为什么您的数据应该被困在远处办公桌上的某台计算机上?

The whole idea of "your computer" is going away, and being replaced

“你的电脑”的整个概念正在消失并被取代

with "your data." You should be able to get at your data from any computer.

与“您的数据”。您应该能够从任何计算机获取您的数据。

Or rather, any client, and a client doesn't have to be a computer.

或者更确切地说,任何客户端,并且客户端不一定是计算机。

Clients shouldn't store data; they should be like telephones.

客户端不应该存储数据;它们应该像电话一样。

In fact they may become telephones, or vice versa.

事实上,它们可能会变成电话,反之亦然。

And as clients get smaller, you have another reason not to keep your data on them: something you carry around with you can be lost or stolen.

随着客户规模的缩小,您还有另一个理由不保留您的数据:您随身携带的东西可能会丢失或被盗。

Leaving

离开

your PDA in a taxi is like a disk crash, except that your data is handed to someone else instead of being vaporized.

你在出租车上的 PDA 就像磁盘崩溃一样,只不过你的数据被交给了其他人而不是被蒸发了。

With purely Web-based software, neither your data nor the applications are kept on the client.

使用纯粹基于网络的软件,您的数据和应用程序都不会保留在客户端上。

So you don't have to install anything to use it.

因此您无需安装任何东西即可使用它。

And when there's no installation, you don't have to worry about installation going wrong.

而且在没有安装的时候,也不用担心安装出错。

There can't be incompatibilities between the application and your operating system, because the

应用程序和操作系统之间不可能不兼容,因为

software doesn't run on your operating system.

软件不在您的操作系统上运行。

Because it needs no installation, it will be easy, and common, to try Web-based software before you "buy" it.

由于无需安装,因此在“购买”基于 Web 的软件之前试用它会变得简单且常见。

You should expect to be able to test-drive any Web-based application for free, just by going to the site where it's offered.

您应该期望能够免费测试任何基于 Web 的应用程序,只需访问提供该应用程序的网站即可。

At Viaweb our whole site was like a big arrow pointing users to the test drive.

在 Viaweb,我们的整个网站就像一个大箭头,将用户指向试驾。

After trying the demo, signing up for the service should require

尝试演示后,注册该服务应该需要

nothing more than filling out a brief form (the briefer the better).

无非是填写一份简短的表格(越简短越好)。

And that should be the last work the user has to do.

这应该是用户必须做的最后一项工作。

With Web-based software, you should get new releases without paying extra, or doing any work, or possibly even knowing about it.

使用基于 Web 的软件,您应该无需支付额外费用、无需做任何工作,甚至无需了解它,即可获得新版本。

Upgrades won't be the big shocks they are now.

升级不会像现在这样带来巨大的冲击。

Over time applications will quietly grow more powerful.

随着时间的推移,应用程序将悄然变得更加强大。

This will take some effort on the part of the developers.

这需要开发人员付出一些努力。

They will have to design software so

他们必须设计软件,以便

that it can be updated without confusing the users.

它可以在不混淆用户的情况下进行更新。

That's a new problem, but there are ways to solve it.

这是一个新问题,但有办法解决它。

With Web-based applications, everyone uses the same version, and bugs can be fixed as soon as they're discovered.

对于基于Web的应用程序,每个人都使用相同的版本,并且一旦发现错误就可以修复。

So Web-based software should have far fewer bugs than desktop software.

因此,基于网络的软件的错误应该比桌面软件少得多。

At Viaweb, I doubt we ever had ten known bugs at any one time.

在 Viaweb,我怀疑我们是否曾同时出现过 10 个已知错误。

That's orders of magnitude better than desktop software.

这比桌面软件好几个数量级。

Web-based applications can be used by several people at the same time.

基于网络的应用程序可以由多人同时使用。

This is an obvious win for collaborative applications, but I bet users will start to want this in most applications once they realize it's possible.

这对于协作应用程序来说是一个明显的胜利,但我敢打赌,一旦用户意识到这是可能的,他们就会开始希望在大多数应用程序中实现这一点。

It will often be useful to let two people edit the same document, for example.

例如,让两个人编辑同一个文档通常很有用。

Viaweb let multiple users edit a site simultaneously, more because that was the right way to write the software than because we expected users to want to, but

Viaweb 允许多个用户同时编辑一个站点,更多的是因为这是编写软件的正确方法,而不是因为我们期望用户愿意这样做,但是

it turned out that many did.

事实证明很多人都这么做了。

When you use a Web-based application, your data will be safer.

当您使用基于网络的应用程序时,您的数据将更加安全。

Disk crashes won't be a thing of the past, but users won't hear about them anymore.

磁盘崩溃将不再成为过去,但用户将不会再听到它们。

They'll happen within server farms.

它们将发生在服务器场内。

And companies offering Web-based applications will actually do backups-- not only because they'll have real system administrators worrying about such things, but because an ASP that does lose people's data

提供基于 Web 的应用程序的公司实际上会进行备份——不仅因为他们会有真正的系统管理员担心这些事情,而且因为 ASP 确实会丢失人们的数据

will be in big, big trouble.

将会遇到很大很大的麻烦。

When people lose their own data in a disk crash, they can't get that mad, because they only have themselves to be mad at.

当人们在磁盘崩溃中丢失自己的数据时,他们不会生气,因为他们只有自己生气。

When a company loses their data for them, they'll get a lot madder.

当一家公司丢失了他们的数据时,他们会变得更加愤怒。

Finally, Web-based software should be less vulnerable to viruses.

最后,基于网络的软件应该不易受到病毒的侵害。

If the client doesn't run anything except a browser, there's less chance of running viruses, and no data locally to damage.

如果客户端除了浏览器之外不运行任何东西,那么运行病毒的可能性就会较小,并且本地数据不会受到损坏。

And a

还有一个

program that attacked the servers themselves should find them very well defended.

攻击服务器本身的程序应该会发现它们得到了很好的防御。

[2] For users, Web-based software will be less stressful.

[2] 对于用户来说,基于网络的软件压力会更小。

I think if you looked inside the average Windows user you'd find a huge and pretty much untapped desire for software meeting that description.

我认为,如果您深入了解普通 Windows 用户的内心,您会发现对满足该描述的软件有巨大且尚未开发的渴望。

Unleashed, it could be a powerful force.

如果释放出来,它可能会产生强大的力量。

City of Code To developers, the most conspicuous difference between Web-based

City of Code 对于开发者来说,最显着的区别是基于 Web 的

and desktop software is that a Web-based application is not a single piece of code.

与桌面软件不同的是,基于Web的应用程序不是一段代码。

It will be a collection of programs of different types rather than a single big binary.

它将是不同类型程序的集合,而不是单个大二进制文件。

And so designing Web-based software is like desiging a city rather than a building: as well as buildings you need roads, street signs, utilities, police and fire departments, and plans for both growth and various kinds of disasters.

因此,设计基于 Web 的软件就像设计一座城市而不是一座建筑物:除了建筑物之外,您还需要道路、街道标志、公用设施、警察和消防部门,以及针对增长和各种灾难的计划。

At Viaweb, software included fairly big applications that users talked to directly, programs that those programs used, programs that ran constantly in the background looking for problems, programs that tried to restart things if they broke, programs that ran occasionally to compile statistics or build indexes for searches, programs we ran explicitly to garbage-collect resources or to move or restore data, programs that pretended to be users (to measure

在 Viaweb,软件包括用户直接与之对话的相当大的应用程序、这些程序使用的程序、在后台不断运行寻找问题的程序、在出现故障时尝试重新启动的程序、偶尔运行以编译统计数据或构建搜索索引的程序、我们明确运行的用于垃圾收集资源或移动或恢复数据的程序、冒充用户的程序(以测量

performance or expose bugs), programs for diagnosing network troubles, programs for doing backups, interfaces to outside services, software that drove an impressive collection of dials displaying real-time server statistics (a hit with visitors, but indispensable for us too), modifications (including bug fixes) to open-source software, and a great many configuration files and settings.

性能或暴露错误)、诊断网络故障的程序、进行备份的程序、与外部服务的接口、驱动大量显示实时服务器统计数据的表盘的软件(受到访问者的欢迎,但对我们来说也是必不可少的)、对开源软件的修改(包括错误修复)以及大量的配置文件和设置。

Trevor Blackwell wrote a spectacular program for moving stores to new

特雷弗·布莱克威尔(Trevor Blackwell)编写了一个精彩的计划,将商店搬到新的地方

servers across the country, without shutting them down, after we were bought by Yahoo.

我们被雅虎收购后,我们在全国各地的服务器上都没有关闭它们。

Programs paged us, sent faxes and email to users, conducted transactions with credit card processors, and talked to one another through sockets, pipes, http requests, ssh, udp packets, shared memory, and files.

程序给我们寻呼,向用户发送传真和电子邮件,与信用卡处理器进行交易,并通过套接字、管道、http 请求、ssh、udp 数据包、共享内存和文件相互通信。

Some of Viaweb even consisted of the absence of programs, since one of the keys to Unix security is not to run unnecessary utilities that people might use to break

有些 Viaweb 甚至没有程序,因为 Unix 安全的关键之一是不要运行人们可能用来破坏的不必要的实用程序

into your servers.

进入您的服务器。

It did not end with software.

它并没有随着软件而结束。

We spent a lot of time thinking about server configurations.

我们花了很多时间考虑服务器配置。

We built the servers ourselves, from components-- partly to save money, and partly to get exactly what we wanted.

我们自己用组件构建服务器——部分是为了省钱,部分是为了得到我们想要的东西。

We had to think about whether our upstream ISP had fast enough connections to all the backbones.

我们必须考虑我们的上游 ISP 是否有足够快的速度连接到所有主干网。

We serially dated RAID suppliers.

我们连续与 RAID 供应商约会。

But hardware is not just something to worry about.

但硬件不仅仅是值得担心的事情。

When you control

当你控制

it you can do more for users.

它你可以为用户做更多的事情。

With a desktop application, you can specify certain minimum hardware, but you can't add more.

对于桌面应用程序,您可以指定某些最低硬件,但不能添加更多硬件。

If you administer the servers, you can in one step enable all your users to page people, or send faxes, or send commands by phone, or process credit cards, etc, just by installing the relevant hardware.

如果您管理服务器,则只需安装相关硬件,您就可以一次性使所有用户能够寻呼人员、发送传真、通过电话发送命令、或处理信用卡等。

We always looked for new ways to add features with hardware, not just because it pleased users, but also as a way to distinguish ourselves

我们一直在寻找新的方法来添加硬件功能,不仅因为它让用户满意,而且也是一种让我们脱颖而出的方式

from competitors who (either because they sold desktop software, or resold Web-based applications through ISPs) didn't have direct control over the hardware.

来自那些无法直接控制硬件的竞争对手(要么是因为他们销售桌面软件,要么是通过 ISP 转售基于 Web 的应用程序)。

Because the software in a Web-based application will be a collection of programs rather than a single binary, it can be written in any number of different languages.

由于基于 Web 的应用程序中的软件将是程序的集合而不是单个二进制文件,因此它可以用任意数量的不同语言编写。

When you're writing desktop software, you're practically forced to write the application in the same

当您编写桌面软件时,您实际上被迫以相同的方式编写应用程序

language as the underlying operating system-- meaning C and C++.

作为底层操作系统的语言——即 C 和 C++。

And so these languages (especially among nontechnical people like managers and VCs) got to be considered as the languages for "serious" software development.

因此,这些语言(特别是对于经理和风险投资人等非技术人员来说)必须被视为“严肃”软件开发的语言。

But that was just an artifact of the way desktop software had to be delivered.

但这只是桌面软件交付方式的产物。

For server-based software you can use any language you want.

对于基于服务器的软件,您可以使用任何您想要的语言。

[3] Today a lot of the top hackers are using languages far removed from C and C++: Perl,

[3] 如今,许多顶级黑客正在使用远离 C 和 C++ 的语言:Perl、

Python, and even Lisp.

Python,甚至 Lisp。

With server-based software, no one can tell you what language to use, because you control the whole system, right down to the hardware.

对于基于服务器的软件,没有人可以告诉您使用哪种语言,因为您控制着整个系统,甚至包括硬件。

Different languages are good for different tasks.

不同的语言适合不同的任务。

You can use whichever is best for each.

您可以使用最适合每种情况的一种。

And when you have competitors, "you can" means "you must" (we'll return to this later), because if you don't take advantage of this possibility, your competitors

当你有竞争对手时,“你可以”意味着“你必须”(我们稍后会回到这个),因为如果你不利用这种可能性,你的竞争对手

will.

会的。

Most of our competitors used C and C++, and this made their software visibly inferior because (among other things), they had no way around the statelessness of CGI scripts.

我们的大多数竞争对手都使用 C 和 C++,这使得他们的软件明显较差,因为(除其他外)他们无法解决 CGI 脚本的无状态性。

If you were going to change something, all the changes had to happen on one page, with an Update button at the bottom.

如果您要更改某些内容,所有更改都必须发生在一页上,并在底部有一个“更新”按钮。

As I've written elsewhere, by using Lisp , which many people still consider a research language, we could make the Viaweb editor behave more like desktop software.

正如我在其他地方写过的那样,通过使用 Lisp(许多人仍然认为它是一种研究语言),我们可以使 Viaweb 编辑器的行为更像桌面软件。

Releases One of the most important changes in this new world is the way you do releases.

发布 这个新世界中最重要的变化之一是发布的方式。

In the desktop software business, doing a release is a huge trauma, in which the whole company sweats and strains to push out a single, giant piece of code.

在桌面软件业务中,发布是一个巨大的创伤,整个公司都在努力推出单个巨大的代码。

Obvious comparisons suggest themselves, both to the process and the resulting product.

无论是过程还是最终产品,都可以进行明显的比较。

With server-based software, you can make changes almost as you would in a program you were writing for yourself.

使用基于服务器的软件,您几乎可以像在自己编写的程序中一样进行更改。

You release

你释放

software as a series of incremental changes instead of an occasional big explosion.

软件是一系列增量变化而不是偶尔的大爆炸。

A typical desktop software company might do one or two releases a year.

典型的桌面软件公司可能每年发布一到两个版本。

At Viaweb we often did three to five releases a day.

在 Viaweb,我们经常每天发布三到五个版本。

When you switch to this new model, you realize how much software development is affected by the way it is released.

当您切换到这种新模型时,您会意识到软件开发在多大程度上受到其发布方式的影响。

Many of the nastiest problems you see in the desktop software business are due

您在桌面软件业务中看到的许多最严重的问题都是由于

to catastrophic nature of releases.

释放的灾难性性质。

When you release only one new version a year, you tend to deal with bugs wholesale.

当您一年只发布一个新版本时,您往往会大量处理错误。

Some time before the release date you assemble a new version in which half the code has been torn out and replaced, introducing countless bugs.

在发布日期之前的某个时间,您组装了一个新版本,其中一半的代码已被删除和替换,从而引入了无数的错误。

Then a squad of QA people step in and start counting them, and the programmers work down the list, fixing them.

然后,一队 QA 人员介入并开始计数,程序员则根据列表进行修复。

They do not generally get to the end of the list, and indeed,

他们通常不会到达列表的末尾,事实上,

no one is sure where the end is.

没有人知道终点在哪里。

It's like fishing rubble out of a pond.

这就像从池塘里捞碎石一样。

You never really know what's happening inside the software.

您永远不知道软件内部发生了什么。

At best you end up with a statistical sort of correctness.

最多你最终会得到统计上的正确性。

With server-based software, most of the change is small and incremental.

对于基于服务器的软件,大多数更改都是小且增量的。

That in itself is less likely to introduce bugs.

这本身不太可能引入错误。

It also means you know what to test most carefully when you're about to release software: the last thing you changed.

它还意味着您知道在要发布软件时要最仔细地测试什么:您最后更改的内容。

You end up with

你最终会得到

a much firmer grip on the code.

对代码的掌握更加牢固。

As a general rule, you do know what's happening inside it.

一般来说,您确实知道里面发生了什么。

You don't have the source code memorized, of course, but when you read the source you do it like a pilot scanning the instrument panel, not like a detective trying to unravel some mystery.

当然,你没有记住源代码,但是当你阅读源代码时,你会像飞行员扫描仪表板一样,而不是像侦探试图解开一些谜团。

Desktop software breeds a certain fatalism about bugs.

桌面软件滋生了某种关于错误的宿命论。

You know that you're shipping something loaded with bugs, and you've even

你知道你正在运送一些充满错误的东西,你甚至已经

set up mechanisms to compensate for it (e.g. patch releases).

建立补偿机制(例如补丁发布)。

So why worry about a few more?

那么为什么还要担心更多呢?

Soon you're releasing whole features you know are broken.

很快你就会发布所有你知道有问题的功能。

Apple did this earlier this year.

苹果公司今年早些时候就这样做了。

They felt under pressure to release their new OS, whose release date had already slipped four times, but some of the software (support for CDs and DVDs) wasn't ready.

他们感受到了发布新操作系统的压力,其发布日期已经推迟了四次,但某些软件(对 CD 和 DVD 的支持)还没有准备好。

The solution?

解决方案是什么?

They released the OS without the unfinished parts, and users will have to install them

他们发布的操作系统没有未完成的部分,用户必须安装它们

later.

稍后。

With Web-based software, you never have to release software before it works, and you can release it as soon as it does work.

使用基于 Web 的软件,您无需在软件运行之前发布它,并且可以在软件运行后立即发布它。

The industry veteran may be thinking, it's a fine-sounding idea to say that you never have to release software before it works, but what happens when you've promised to deliver a new version of your software by a certain date?

行业资深人士可能会想,在软件运行之前你不必发布软件,这听起来不错,但是当你承诺在某个日期之前交付软件的新版本时会发生什么?

With Web-based software, you wouldn't make such a promise, because there are no versions.

对于基于网络的软件,您不会做出这样的承诺,因为没有版本。

Your software

你的软件

changes gradually and continuously.

逐渐且持续地变化。

Some changes might be bigger than others, but the idea of versions just doesn't naturally fit onto Web-based software.

有些变化可能比其他变化更大,但版本的概念并不自然地适合基于 Web 的软件。

If anyone remembers Viaweb this might sound odd, because we were always announcing new versions.

如果有人还记得 Viaweb,这可能听起来很奇怪,因为我们总是在发布新版本。

This was done entirely for PR purposes.

这样做完全是为了公关目的。

The trade press, we learned, thinks in version numbers.

我们了解到,商业媒体以版本号来思考。

They will give you major coverage for a major release, meaning a

他们将为您提供主要版本的主要报道,这意味着

new first digit on the version number, and generally a paragraph at most for a point release, meaning a new digit after the decimal point.

版本号上新的第一个数字,通常最多一个段落为一个点发布,意味着小数点后有一个新的数字。

Some of our competitors were offering desktop software and actually had version numbers.

我们的一些竞争对手提供桌面软件并且实际上有版本号。

And for these releases, the mere fact of which seemed to us evidence of their backwardness, they would get all kinds of publicity.

对于这些发布,在我们看来,仅仅这一事实就证明了它们的落后,它们会得到各种各样的宣传。

We didn't want to miss out, so we started

我们不想错过,所以我们开始了

giving version numbers to our software too.

也为我们的软件提供版本号。

When we wanted some publicity, we'd make a list of all the features we'd added since the last "release," stick a new version number on the software, and issue a press release saying that the new version was available immediately.

当我们想要一些宣传时,我们会列出自上次“发布”以来添加的所有功能,在软件上贴上新版本号,并发布新闻稿称新版本立即可用。

Amazingly, no one ever called us on it.

令人惊讶的是,没有人打电话给我们。

By the time we were bought, we had done this three times, so we were on Version 4.

当我们被购买时,我们已经这样做了 3 次,所以我们使用的是版本 4。

Version 4.1 if I remember correctly.

如果我没记错的话是4.1版本。

After

之后

Viaweb became Yahoo Store, there was no longer such a desperate need for publicity, so although the software continued to evolve, the whole idea of version numbers was quietly dropped.

Viaweb 成为了雅虎商店,不再那么迫切需要宣传,因此尽管软件不断发展,但版本号的整个想法却悄然被放弃了。

Bugs The other major technical advantage of Web-based software is that you can reproduce most bugs.

错误 基于 Web 的软件的另一个主要技术优势是您可以重现大多数错误。

You have the users' data right there on your disk.

您的磁盘上就有用户的数据。

If someone breaks your software, you don't have to try to guess what's going on, as you would with desktop software:

如果有人破坏了您的软件,您不必像使用桌面软件那样尝试猜测发生了什么:

you should be able to reproduce the error while they're on the phone with you.

当他们与您通电话时,您应该能够重现该错误。

You might even know about it already, if you have code for noticing errors built into your application.

如果您的应用程序中内置了用于注意到错误的代码,您甚至可能已经知道了。

Web-based software gets used round the clock, so everything you do is immediately put through the wringer.

基于网络的软件全天候使用,因此您所做的一切都会立即受到影响。

Bugs turn up quickly.

错误很快就会出现。

Software companies are sometimes accused of letting the users debug their software.

软件公司有时会被指责让用户调试他们的软件。

And that is just what I'm advocating.

这正是我所提倡的。

For Web-based

对于基于网络的

software it's actually a good plan, because the bugs are fewer and transient.

软件这实际上是一个很好的计划,因为错误更少并且是暂时的。

When you release software gradually you get far fewer bugs to start with.

当你逐渐发布软件时,一开始出现的错误就会少得多。

And when you can reproduce errors and release changes instantly, you can find and fix most bugs as soon as they appear.

当您可以重现错误并立即发布更改时,您可以在大多数错误出现时立即找到并修复它们。

We never had enough bugs at any one time to bother with a formal bug-tracking system.

我们在任何时候都没有足够多的错误来打扰正式的错误跟踪系统。

You should test changes before you release them, of course, so no

当然,您应该在发布更改之前对其进行测试,所以不

major bugs should get released.

主要错误应该被发布。

Those few that inevitably slip through will involve borderline cases and will only affect the few users that encounter them before someone calls in to complain.

那些不可避免地会漏掉的少数情况将涉及边缘案例,并且只会影响在有人打电话投诉之前遇到这些情况的少数用户。

As long as you fix bugs right away, the net effect, for the average user, is far fewer bugs.

只要立即修复错误,对于普通用户来说,最终的效果就是错误少得多。

I doubt the average Viaweb user ever saw a bug.

我怀疑普通 Viaweb 用户是否见过错误。

Fixing fresh bugs is easier than fixing old ones.

修复新的错误比修复旧的错误更容易。

It's usually fairly quick to find a bug in code you just wrote.

通常可以很快地找到您刚刚编写的代码中的错误。

When it turns

当它转动时

up you often know what's wrong before you even look at the source, because you were already worrying about it subconsciously.

在你查看源代码之前,你通常就知道出了什么问题,因为你已经在潜意识里担心它了。

Fixing a bug in something you wrote six months ago (the average case if you release once a year) is a lot more work.

修复六个月前编写的错误(如果您每年发布一次,则为平均情况)需要做更多的工作。

And since you don't understand the code as well, you're more likely to fix it in an ugly way, or even introduce more bugs.

而且由于您也不理解代码,因此您更有可能以丑陋的方式修复它,甚至引入更多错误。

[4] When you catch bugs early, you also get fewer compound bugs.

[4] 当你尽早发现错误时,你得到的复合错误也会更少。

Compound bugs are two separate bugs that interact: you trip going downstairs, and when you reach for the handrail it comes off in your hand.

复合虫子是两种相互作用的独立虫子:你下楼时绊倒,当你伸手去拿扶手时,扶手从你手中脱落。

In software this kind of bug is the hardest to find, and also tends to have the worst consequences.

在软件中,这种错误是最难发现的,而且往往会产生最严重的后果。

[5] The traditional "break everything and then filter out the bugs" approach inherently yields a lot of compound bugs.

[5] 传统的“打破一切,然后过滤掉错误”的方法本质上会产生大量复合错误。

And software that's released in a series of small changes inherently tends not to.

而以一系列小变化发布的软件本质上往往不会这样。

The floors are

地板是

constantly being swept clean of any loose objects that might later get stuck in something.

不断地清除任何松散的物体,这些物体后来可能会卡在某物中。

It helps if you use a technique called functional programming.

如果您使用一种称为函数式编程的技术,将会有所帮助。

Functional programming means avoiding side-effects.

函数式编程意味着避免副作用。

It's something you're more likely to see in research papers than commercial software, but for Web-based applications it turns out to be really useful.

与商业软件相比,您更有可能在研究论文中看到它,但对于基于 Web 的应用程序来说,它确实非常有用。

It's hard to write entire programs as purely functional

将整个程序编写为纯函数式是很困难的

code, but you can write substantial chunks this way.

代码,但您可以通过这种方式编写大量的代码块。

It makes those parts of your software easier to test, because they have no state, and that is very convenient in a situation where you are constantly making and testing small modifications.

它使软件的这些部分更容易测试,因为它们没有状态,这在您不断进行和测试小修改的情况下非常方便。

I wrote much of Viaweb's editor in this style, and we made our scripting language, RTML , a purely functional language.

我以这种风格编写了 Viaweb 的大部分编辑器,并且我们将脚本语言 RTML 变成了一种纯粹的函数式语言。

People from the desktop software business will find this hard to

从事桌面软件行业的人会发现这很难

credit, but at Viaweb bugs became almost a game.

信用,但在 Viaweb,错误几乎成了一种游戏。

Since most released bugs involved borderline cases, the users who encountered them were likely to be advanced users, pushing the envelope.

由于大多数发布的错误都涉及边缘情况,因此遇到这些错误的用户很可能是挑战极限的高级用户。

Advanced users are more forgiving about bugs, especially since you probably introduced them in the course of adding some feature they were asking for.

高级用户对错误更加宽容,特别是因为您可能在添加他们要求的某些功能的过程中引入了错误。

In fact, because bugs were rare and you had to be doing sophisticated things to see them, advanced users were often

事实上,由于错误很少见,而且您必须做复杂的事情才能看到它们,因此高级用户通常会

proud to catch one.

很自豪能够抓住一只。

They would call support in a spirit more of triumph than anger, as if they had scored points off us.

他们会以一种胜利而不是愤怒的精神来呼吁支持,就好像他们从我们身上得分一样。

Support When you can reproduce errors, it changes your approach to customer support.

支持 当您可以重现错误时,它会改变您获得客户支持的方法。

At most software companies, support is offered as a way to make customers feel better.

在大多数软件公司,提供支持是为了让客户感觉更好。

They're either calling you about a known bug, or they're just doing something wrong and you have to figure out what.

他们要么打电话给你询问已知的错误,要么他们只是做错了什么,你必须找出原因。

In either case there's not much you can learn

无论哪种情况,你都学不到太多东西

from them.

来自他们。

And so you tend to view support calls as a pain in the ass that you want to isolate from your developers as much as possible.

因此,您倾向于将支持电话视为一种痛苦,并希望尽可能与开发人员隔离。

This was not how things worked at Viaweb.

Viaweb 的运作方式并非如此。

At Viaweb, support was free, because we wanted to hear from customers.

在 Viaweb,支持是免费的,因为我们希望听取客户的意见。

If someone had a problem, we wanted to know about it right away so that we could reproduce the error and release a fix.

如果有人遇到问题,我们希望立即了解,以便我们可以重现错误并发布修复程序。

So at Viaweb the developers were always in close contact with

因此,在 Viaweb,开发人员始终与

support.

支持。

The customer support people were about thirty feet away from the programmers, and knew that they could always interrupt anything with a report of a genuine bug.

客户支持人员距离程序员大约三十英尺,并且知道他们总是可以通过报告真正的错误来中断任何事情。

We would leave a board meeting to fix a serious bug.

我们将召开董事会会议来修复严重的错误。

Our approach to support made everyone happier.

我们的支持方式让每个人都更高兴。

The customers were delighted.

顾客们都很高兴。

Just imagine how it would feel to call a support line and be treated as someone bringing important news.

想象一下拨打支持热线并被视为带来重要消息的人会是什么感觉。

The customer

客户

support people liked it because it meant they could help the users, instead of reading scripts to them.

支持人员喜欢它,因为这意味着他们可以帮助用户,而不是向他们阅读脚本。

And the programmers liked it because they could reproduce bugs instead of just hearing vague second-hand reports about them.

程序员喜欢它,因为他们可以重现错误,而不仅仅是听到有关错误的模糊的二手报告。

Our policy of fixing bugs on the fly changed the relationship between customer support people and hackers.

我们即时修复错误的政策改变了客户支持人员和黑客之间的关系。

At most software companies, support people are underpaid human shields, and hackers

在大多数软件公司,支持人员都是工资低的人盾,而黑客

are little copies of God the Father, creators of the world.

是天父上帝、世界的创造者的小复制品。

Whatever the procedure for reporting bugs, it is likely to be one-directional: support people who hear about bugs fill out some form that eventually gets passed on (possibly via QA) to programmers, who put it on their list of things to do.

无论报告错误的程序如何,它都可能是单向的:支持听说错误的人填写某种表格,最终将其传递给程序员(可能通过质量检查),程序员将其放在要做的事情列表中。

It was very different at Viaweb.

Viaweb 的情况非常不同。

Within a minute of hearing about a bug from a customer, the support

在从客户那里听到错误后一分钟内,支持人员就会

people could be standing next to a programmer hearing him say "Shit, you're right, it's a bug." It delighted the support people to hear that "you're right" from the hackers.

人们可能站在程序员旁边,听到他说“妈的,你是对的,这是一个错误。”听到黑客说“你是对的”,支持人员很高兴。

They used to bring us bugs with the same expectant air as a cat bringing you a mouse it has just killed.

他们过去常常带着期待的神情给我们带来虫子,就像猫给你带来刚杀死的老鼠一样。

It also made them more careful in judging the seriousness of a bug, because now their honor was on the line.

这也让他们在判断bug的严重性时更加谨慎,因为现在他们的荣誉岌岌可危。

After we were bought by Yahoo, the customer support people were

我们被雅虎收购后,客户支持人员

moved far away from the programmers.

远离程序员。

It was only then that we realized that they were effectively QA and to some extent marketing as well.

直到那时我们才意识到它们实际上是质量保证,并且在某种程度上也是营销。

In addition to catching bugs, they were the keepers of the knowledge of vaguer, buglike things, like features that confused users.

除了捕捉 bug 之外,他们还保存着一些模糊的、类似 bug 的知识,比如让用户感到困惑的功能。

[6] They were also a kind of proxy focus group; we could ask them which of two new features users wanted more, and they were always right.

[6] 他们也是一种代理焦点小组;我们可以问他们用户更想要两个新功能中的哪一个,他们总是对的。

Morale Being able to release software immediately is a big motivator.

士气 能够立即发布软件是一个很大的动力。

Often as I was walking to work I would think of some change I wanted to make to the software, and do it that day.

通常,当我步行去上班时,我会想到要对软件进行一些更改,并在当天进行。

This worked for bigger features as well.

这也适用于更大的功能。

Even if something was going to take two weeks to write (few projects took longer), I knew I could see the effect in the software as soon as it was done.

即使某些东西需要花费两周的时间来编写(很少有项目需要更长的时间),我知道一旦完成我就可以在软件中看到效果。

If I'd had to wait a year for the next release, I would have shelved

如果我必须等待一年才能发布下一个版本,我会搁置

most of these ideas, for a while at least.

这些想法中的大多数,至少在一段时间内是这样。

The thing about ideas, though, is that they lead to more ideas.

然而,关于想法的事情是,它们会带来更多的想法。

Have you ever noticed that when you sit down to write something, half the ideas that end up in it are ones you thought of while writing it?

你是否注意到,当你坐下来写东西时,最终出现的想法有一半是你在写作时想到的?

The same thing happens with software.

软件也会发生同样的情况。

Working to implement one idea gives you more ideas.

努力实现一个想法会给你带来更多的想法。

So shelving an idea costs you not only that delay in implementing it, but also all the ideas that implementing it would

因此,搁置一个想法不仅会让你延迟实施它,还会导致实施它所需要的所有想法。

have led to.

已导致。

In fact, shelving an idea probably even inhibits new ideas: as you start to think of some new feature, you catch sight of the shelf and think "but I already have a lot of new things I want to do for the next release." What big companies do instead of implementing features is plan them.

事实上,搁置一个想法甚至可能会抑制新的想法:当你开始考虑一些新功能时,你会看到搁架并想“但我已经有很多想要为下一个版本做的新事情了。”大公司所做的不是实施功能,而是对其进行规划。

At Viaweb we sometimes ran into trouble on this account.

在 Viaweb,我们有时会在这个问题上遇到麻烦。

Investors and analysts would ask us what we had planned for the

投资者和分析师会问我们的计划是什么

future.

未来。

The truthful answer would have been, we didn't have any plans.

真实的答案是,我们没有任何计划。

We had general ideas about things we wanted to improve, but if we knew how we would have done it already.

我们对想要改进的事情有总体想法,但如果我们知道如何做,我们早就做到了。

What were we going to do in the next six months?

接下来的六个月我们要做什么?

Whatever looked like the biggest win.

不管什么看起来都是最大的胜利。

I don't know if I ever dared give this answer, but that was the truth.

我不知道我是否敢于给出这个答案,但那是事实。

Plans are just another word for ideas on the shelf.

计划只是搁置想法的另一种说法。

When we thought of good ideas, we implemented them.

当我们想到好主意时,我们就会实施它们。

At Viaweb, as at many software companies, most code had one definite owner.

在 Viaweb,与许多软件公司一样,大多数代码都有一个明确的所有者。

But when you owned something you really owned it: no one except the owner of a piece of software had to approve (or even know about) a release.

但是,当您拥有某样东西时,您就真正拥有了它:除了软件的所有者之外,没有人必须批准(甚至知道)发布。

There was no protection against breakage except the fear of looking like an idiot to one's peers, and that was more than enough.

除了担心在同龄人看来像个白痴之外,没有任何保护措施可以防止破损,但这已经足够了。

I may have given the impression that we just blithely plowed forward writing code.

我可能给人的印象是我们只是愉快地努力编写代码。

We did go fast, but we

我们确实走得很快,但我们

thought very carefully before we released software onto those servers.

在我们将软件发布到这些服务器上之前,我们进行了非常仔细的考虑。

And paying attention is more important to reliability than moving slowly.

对于可靠性来说,集中注意力比缓慢行动更重要。

Because he pays close attention, a Navy pilot can land a 40,000 lb.

因为他密切关注,一名海军飞行员可以将 40,000 磅重的飞机着陆。

aircraft at 140 miles per hour on a pitching carrier deck, at night, more safely than the average teenager can cut a bagel.

夜间,飞机以每小时 140 英里的速度在倾斜的航母甲板上飞行,比一般青少年切百吉饼还要安全。

This way of writing software is a double-edged sword of course.

这种编写软件的方式当然是一把双刃剑。

It works a lot better for a small team of good, trusted programmers than it would for a big company of mediocre ones, where bad ideas are caught by committees instead of the people that had them.

它对于一个由优秀、值得信赖的程序员组成的小团队来说比对于一个由平庸的程序员组成的大公司要好得多,在大公司里,不好的想法是由委员会而不是拥有这些想法的人发现的。

Brooks in Reverse Fortunately, Web-based software does require fewer programmers.

布鲁克斯的逆向幸运的是,基于网络的软件确实需要更少的程序员。

I once worked for a medium-sized desktop software company that had over 100 people working in engineering as a whole.

我曾经在一家中型桌面软件公司工作,该公司总共有 100 多名工程人员。

Only 13 of

只有 13 个

these were in product development.

这些是在产品开发中。

All the rest were working on releases, ports, and so on.

其余的人都在致力于发布、移植等等。

With Web-based software, all you need (at most) are the 13 people, because there are no releases, ports, and so on.

对于基于 Web 的软件,您(最多)只需要 13 个人,因为没有版本、端口等。

Viaweb was written by just three people.

Viaweb 仅由三个人编写。

[7] I was always under pressure to hire more, because we wanted to get bought, and we knew that buyers would have a hard time paying a high price for a company

[7] 我总是面临着雇用更多员工的压力,因为我们想被收购,而且我们知道买家很难为一家公司支付高价

with only three programmers.

只有三个程序员。

(Solution: we hired more, but created new projects for them.) When you can write software with fewer programmers, it saves you more than money.

(解决方案:我们雇用了更多员工,但为他们创建了新项目。)当您可以用更少的程序员编写软件时,它为您节省的不仅仅是金钱。

As Fred Brooks pointed out in The Mythical Man-Month, adding people to a project tends to slow it down.

正如 Fred Brooks 在《人月神话》中指出的那样,向项目添加人员往往会减慢项目的速度。

The number of possible connections between developers grows exponentially with the size of the group.

开发人员之间可能的联系数量随着团队规模的扩大而呈指数级增长。

The larger the group, the more time

团体越大,时间越多

they'll spend in meetings negotiating how their software will work together, and the more bugs they'll get from unforeseen interactions.

他们会花很多时间在会议上讨论他们的软件如何协同工作,以及他们会从不可预见的交互中得到更多的错误。

Fortunately, this process also works in reverse: as groups get smaller, software development gets exponentially more efficient.

幸运的是,这个过程也可以反向进行:随着团队规模的缩小,软件开发的效率会成倍提高。

I can't remember the programmers at Viaweb ever having an actual meeting.

我不记得 Viaweb 的程序员曾经召开过真正的会议。

We never had more to say at any one time than we could say as we were walking to lunch.

我们在任何时候都没有比步行去吃午饭时能说的更多的话了。

If there is a downside here, it is that all the programmers have to be to some degree system administrators as well.

如果说这里有一个缺点的话,那就是所有程序员都必须在某种程度上是系统管理员。

When you're hosting software, someone has to be watching the servers, and in practice the only people who can do this properly are the ones who wrote the software.

当您托管软件时,必须有人监视服务器,而实际上,唯一能够正确执行此操作的人是编写软件的人。

At Viaweb our system had so many components and changed so frequently that there was no definite border between software and infrastructure.

在 Viaweb,我们的系统有如此多的组件,并且变化如此频繁,以至于软件和基础设施之间没有明确的界限。

Arbitrarily declaring such a border

任意宣布这样的边界

would have constrained our design choices.

会限制我们的设计选择。

And so although we were constantly hoping that one day ("in a couple months") everything would be stable enough that we could hire someone whose job was just to worry about the servers, it never happened.

因此,尽管我们一直希望有一天(“几个月后”)一切都会足够稳定,以至于我们可以聘请一个只负责担心服务器的人,但这从未发生过。

I don't think it could be any other way, as long as you're still actively developing the product.

我认为只要你仍在积极开发产品,就不可能有其他方式。

Web-based software is never going to be something you write, check in, and go home.

基于网络的软件永远不会是你编写、签入然后回家的东西。

It's a live

这是一场直播

thing, running on your servers right now.

东西,现在正在您的服务器上运行。

A bad bug might not just crash one user's process; it could crash them all.

一个严重的错误可能不仅会导致一个用户的进程崩溃,还会导致一个用户的进程崩溃。它可能会让他们全部崩溃。

If a bug in your code corrupts some data on disk, you have to fix it.

如果代码中的错误损坏了磁盘上的某些数据,则必须修复它。

And so on.

等等。

We found that you don't have to watch the servers every minute (after the first year or so), but you definitely want to keep an eye on things you've changed recently.

我们发现您不必每分钟都观察服务器(在第一年左右之后),但您肯定希望关注最近更改的内容。

You don't release code late at night and then go home.

你不会在深夜发布代码然后回家。

Watching Users With server-based software, you're in closer touch with your code.

观察用户 使用基于服务器的软件,您可以更密切地接触您的代码。

You can also be in closer touch with your users.

您还可以与用户建立更密切的联系。

Intuit is famous for introducing themselves to customers at retail stores and asking to follow them home.

Intuit 因在零售店向顾客介绍自己并要求跟随他们回家而闻名。

If you've ever watched someone use your software for the first time, you know what surprises must have awaited them.

如果您曾经见过有人第一次使用您的软件,您就会知道等待他们的一定是什么惊喜。

Software should do what users think it will.

软件应该做用户认为它会做的事情。

But you can't have

但你不能拥有

any idea what users will be thinking, believe me, until you watch them.

相信我,在你亲眼目睹之前,你知道用户会怎么想。

And server-based software gives you unprecedented information about their behavior.

基于服务器的软件为您提供有关他们行为的前所未有的信息。

You're not limited to small, artificial focus groups.

您并不局限于小型的、人为的焦点小组。

You can see every click made by every user.

您可以看到每个用户的每次点击。

You have to consider carefully what you're going to look at, because you don't want to violate users' privacy, but even the most general statistical sampling can be very useful.

您必须仔细考虑要查看的内容,因为您不想侵犯用户的隐私,但即使是最一般的统计抽样也可能非常有用。

When you have the users on your server, you don't have to rely on benchmarks, for example.

例如,当您的服务器上有用户时,您就不必依赖基准测试。

Benchmarks are simulated users.

基准是模拟用户。

With server-based software, you can watch actual users.

使用基于服务器的软件,您可以观察实际用户。

To decide what to optimize, just log into a server and see what's consuming all the CPU.

要决定优化哪些内容,只需登录服务器并查看哪些内容消耗了所有 CPU。

And you know when to stop optimizing too: we eventually got the Viaweb editor to the point where it was memory-bound rather than CPU-bound, and since there was nothing we could do to decrease

而且您也知道何时停止优化:我们最终使 Viaweb 编辑器达到了内存限制而不是 CPU 限制的程度,并且由于我们无法采取任何措施来减少

the size of users' data (well, nothing easy), we knew we might as well stop there.

用户数据的大小(好吧,这并不容易),我们知道我们不妨就此止步。

Efficiency matters for server-based software, because you're paying for the hardware.

对于基于服务器的软件来说,效率很重要,因为您要为硬件付费。

The number of users you can support per server is the divisor of your capital cost, so if you can make your software very efficient you can undersell competitors and still make a profit.

每台服务器可以支持的用户数量是您的资本成本的除数,因此,如果您可以使您的软件非常高效,您就可以低于竞争对手并仍然获利。

At Viaweb we got the capital cost per user down to about

在 Viaweb,我们将每个用户的资本成本降至约

$5.

5 美元。

It would be less now, probably less than the cost of sending them the first month's bill.

现在会少一些,可能比寄给他们第一个月账单的费用还要少。

Hardware is free now, if your software is reasonably efficient.

如果您的软件相当高效,那么硬件现在是免费的。

Watching users can guide you in design as well as optimization.

观察用户可以指导您进行设计和优化。

Viaweb had a scripting language called RTML that let advanced users define their own page styles.

Viaweb 有一种名为 RTML 的脚本语言,可以让高级用户定义自己的页面样式。

We found that RTML became a kind of suggestion box, because users only used it when the predefined page

我们发现RTML变成了一种建议框,因为用户只在预定义页面时使用它

styles couldn't do what they wanted.

风格不能做他们想要的。

Originally the editor put button bars across the page, for example, but after a number of users used RTML to put buttons down the left side , we made that an option (in fact the default) in the predefined page styles.

例如,最初编辑器将按钮栏放在整个页面上,但在许多用户使用 RTML 将按钮放在左侧之后,我们在预定义的页面样式中将其作为一个选项(实际上是默认选项)。

Finally, by watching users you can often tell when they're in trouble.

最后,通过观察用户,您通常可以判断他们何时遇到麻烦。

And since the customer is always right, that's a sign of something you need to fix.

由于客户永远是对的,这表明您需要解决某些问题。

At Viaweb the key to getting users was

在 Viaweb,获取用户的关键是

the online test drive.

在线试驾。

It was not just a series of slides built by marketing people.

这不仅仅是营销人员制作的一系列幻灯片。

In our test drive, users actually used the software.

在我们的测试中,用户实际使用了该软件。

It took about five minutes, and at the end of it they had built a real, working store.

大约花了五分钟,最后他们建立了一个真正的、可以使用的商店。

test drive is still online, but now they make you fill out several forms, and don't tell you that you've created a working store.

试驾仍然在线,但现在他们让你填写几张表格,并且不告诉你你已经创建了一个工作商店。

If you try the test drive, here is how to find your store: if you choose foo as your

如果您尝试试驾,以下是如何找到您的商店:如果您选择 foo 作为您的商店

store id, the finished store will be at store.yahoo.com/foo.] --> The test drive was the way we got nearly all our new users.

商店 id,完成的商店将位于 store.yahoo.com/foo。] --> 试驾是我们获得几乎所有新用户的方式。

I think it will be the same for most Web-based applications.

我认为对于大多数基于 Web 的应用程序来说都是一样的。

If users can get through a test drive successfully, they'll like the product.

如果用户能够成功地通过试驾,他们就会喜欢这个产品。

If they get confused or bored, they won't.

如果他们感到困惑或无聊,他们就不会。

So anything we could do to get more people through the test drive would increase our growth rate.

因此,我们可以采取任何措施让更多人通过试驾,从而提高我们的增长率。

I studied click trails of people taking the test drive and found that at a certain step they would get confused and click on the browser's Back button.

我研究了试驾者的点击轨迹,发现在某个步骤他们会感到困惑并点击浏览器的后退按钮。

(If you try writing Web-based applications, you'll find that the Back button becomes one of your most interesting philosophical problems.) So I added a message at that point, telling users that they were nearly finished, and reminding them not to click on the Back button.

(如果您尝试编写基于 Web 的应用程序,您会发现“后退”按钮成为您最有趣的哲学问题之一。)因此我在此时添加了一条消息,告诉用户他们即将完成,并提醒他们不要单击“后退”按钮。

Another great thing about Web-based

基于网络的另一个伟大的事情

software is that you get instant feedback from changes: the number of people completing the test drive rose immediately from 60% to 90%.

软件的优点是您可以从更改中获得即时反馈:完成试驾的人数立即从 60% 上升到 90%。

And since the number of new users was a function of the number of completed test drives, our revenue growth increased by 50%, just from that change.

由于新用户数量是完成试驾数量的函数,因此我们的收入仅因这一变化就增长了 50%。

Money In the early 1990s I read an article in which someone said that software was a subscription business.

金钱 在 20 世纪 90 年代初期,我读过一篇文章,其中有人说软件是一种订阅业务。

At first this seemed a very

起初这似乎是一个非常

cynical statement.

愤世嫉俗的声明。

But later I realized that it reflects reality: software development is an ongoing process.

但后来我意识到这反映了现实:软件开发是一个持续的过程。

I think it's cleaner if you openly charge subscription fees, instead of forcing people to keep buying and installing new versions so that they'll keep paying you.

我认为,如果你公开收取订阅费,而不是强迫人们继续购买和安装新版本,以便他们继续向你付费,那就更干净了。

And fortunately, subscriptions are the natural way to bill for Web-based applications.

幸运的是,订阅是对基于 Web 的应用程序进行计费的自然方式。

Hosting applications is an area where companies will play a role

托管应用程序是公司将发挥作用的一个领域

that is not likely to be filled by freeware.

这不太可能由免费软件来填补。

Hosting applications is a lot of stress, and has real expenses.

托管应用程序压力很大,而且费用也很高。

No one is going to want to do it for free.

没有人愿意免费做这件事。

For companies, Web-based applications are an ideal source of revenue.

对于公司来说,基于 Web 的应用程序是理想的收入来源。

Instead of starting each quarter with a blank slate, you have a recurring revenue stream.

您不必每个季度都以空白开始,而是拥有经常性收入流。

Because your software evolves gradually, you don't have to worry that a new model will flop; there never

因为你的软件是逐渐发展的,所以你不必担心新模型会失败;从来没有

need be a new model, per se, and if you do something to the software that users hate, you'll know right away.

本质上需要一个新的模型,如果你对用户讨厌的软件做了一些事情,你马上就会知道。

You have no trouble with uncollectable bills; if someone won't pay you can just turn off the service.

您不会遇到无法收回的账单的问题;如果有人不付钱,你可以关闭服务。

And there is no possibility of piracy.

而且不存在盗版的可能。

That last "advantage" may turn out to be a problem.

最后一个“优势”可能会成为一个问题。

Some amount of piracy is to the advantage of software companies.

一定程度的盗版对软件公司有利。

If some user really would not have bought your software at any price, you haven't

如果某些用户确实不会以任何价格购买您的软件,那么您就没有

lost anything if he uses a pirated copy.

如果他使用盗版,他就会失去任何东西。

In fact you gain, because he is one more user helping to make your software the standard-- or who might buy a copy later, when he graduates from high school.

事实上,你获益了,因为他是又一个帮助你的软件成为标准的用户——或者他可能会在高中毕业后购买一份副本。

When they can, companies like to do something called price discrimination, which means charging each customer as much as they can afford.

如果可以的话,公司喜欢做一些叫做价格歧视的事情,这意味着向每个客户收取他们能承受的尽可能多的费用。

[8] Software is particularly suitable for price discrimination, because the marginal cost is close to zero.

[8] 软件特别适合价格歧视,因为边际成本接近于零。

This

这个

is why some software costs more to run on Suns than on Intel boxes: a company that uses Suns is not interested in saving money and can safely be charged more.

这就是为什么有些软件在 Sun 上运行的成本比在 Intel 机器上运行的成本更高的原因:使用 Sun 的公司对省钱不感兴趣,可以安全地收取更多费用。

Piracy is effectively the lowest tier of price discrimination.

盗版实际上是最低级别的价格歧视。

I think that software companies understand this and deliberately turn a blind eye to some kinds of piracy.

我认为软件公司明白这一点,并且刻意对某些盗版行为视而不见。

[9] With server-based software they are going to have to come up with some other solution.

[9] 对于基于服务器的软件,他们将不得不提出其他一些解决方案。

Web-based software sells well, especially in comparison to desktop software, because it's easy to buy.

基于网络的软件卖得很好,特别是与桌面软件相比,因为它很容易购买。

You might think that people decide to buy something, and then buy it, as two separate steps.

您可能认为人们决定购买某样东西,然后再购买它,这是两个独立的步骤。

That's what I thought before Viaweb, to the extent I thought about the question at all.

这就是我在 Viaweb 之前的想法,甚至是我思考过这个问题的程度。

In fact the second step can propagate back into the first: if something is hard to buy, people will change their mind about whether they wanted it.

事实上,第二步可以传播回第一步:如果某样东西很难买到,人们就会改变他们是否想要它的想法。

And vice versa: you'll

反之亦然:你会

sell more of something when it's easy to buy.

当某种东西容易购买时,卖出更多东西。

I buy more books because Amazon exists.

因为亚马逊的存在,我买了更多的书。

Web-based software is just about the easiest thing in the world to buy, especially if you have just done an online demo.

基于网络的软件几乎是世界上最容易购买的东西,特别是如果您刚刚完成在线演示。

Users should not have to do much more than enter a credit card number.

用户只需输入信用卡号即可。

(Make them do more at your peril.) Sometimes Web-based software is offered through ISPs acting as resellers.

(让他们做得更多,后果自负。) 有时,基于 Web 的软件是通过充当经销商的 ISP 提供的。

This is a bad idea.

这是一个坏主意。

You have to be administering the

您必须管理

servers, because you need to be constantly improving both hardware and software.

服务器,因为您需要不断改进硬件和软件。

If you give up direct control of the servers, you give up most of the advantages of developing Web-based applications.

如果您放弃对服务器的直接控制,您就放弃了开发基于 Web 的应用程序的大部分优势。

Several of our competitors shot themselves in the foot this way-- usually, I think, because they were overrun by suits who were excited about this huge potential channel, and didn't realize that it would ruin the product they hoped to sell through it.

我们的一些竞争对手就这样搬起石头砸自己的脚——我想,通常是因为他们被那些对这个巨大的潜在渠道感到兴奋的诉讼公司淹没了,并且没有意识到这会毁掉他们希望通过它销售的产品。

Selling

销售

Web-based software through ISPs is like selling sushi through vending machines.

通过 ISP 使用基于网络的软件就像通过自动售货机出售寿司一样。

Customers Who will the customers be?

客户 客户会是谁?

At Viaweb they were initially individuals and smaller companies, and I think this will be the rule with Web-based applications.

在 Viaweb,他们最初是个人和小型公司,我认为这将是基于 Web 的应用程序的规则。

These are the users who are ready to try new things, partly because they're more flexible, and partly because they want the lower costs of new technology.

这些用户准备尝试新事物,部分原因是他们更加灵活,部分原因是他们希望新技术的成本更低。

Web-based applications will often be the best thing for big companies

对于大公司来说,基于 Web 的应用程序通常是最好的选择

too (though they'll be slow to realize it).

也是(尽管他们会慢慢意识到这一点)。

The best intranet is the Internet.

最好的内部网是互联网。

If a company uses true Web-based applications, the software will work better, the servers will be better administered, and employees will have access to the system from anywhere.

如果公司使用真正的基于 Web 的应用程序,该软件将运行得更好,服务器将得到更好的管理,并且员工将可以从任何地方访问该系统。

The argument against this approach usually hinges on security: if access is easier for employees, it will be for bad guys too.

反对这种方法的论点通常取决于安全性:如果员工更容易访问,那么坏人也会更容易访问。

Some larger merchants were reluctant to use Viaweb because they thought

一些较大的商家不愿意使用 Viaweb,因为他们认为

customers' credit card information would be safer on their own servers.

客户的信用卡信息在他们自己的服务器上会更安全。

It was not easy to make this point diplomatically, but in fact the data was almost certainly safer in our hands than theirs.

外交上表达这一点并不容易,但事实上,数据在我们手中几乎肯定比在他们手中更安全。

Who can hire better people to manage security, a technology startup whose whole business is running servers, or a clothing retailer?

谁能雇用更好的人员来管理安全性,是一家整个业务都在运行服务器的科技初创公司,还是一家服装零售商?

Not only did we have better people worrying about security, we worried more about it.

我们不仅有更好的人担心安全,而且我们更担心它。

If someone broke into the

如果有人闯入

clothing retailer's servers, it would affect at most one merchant, could probably be hushed up, and in the worst case might get one person fired.

服装零售商的服务器,最多会影响一个商家,可能会被掩盖,最坏的情况可能会导致一个人被解雇。

If someone broke into ours, it could affect thousands of merchants, would probably end up as news on CNet, and could put us out of business.

如果有人闯入我们的系统,可能会影响数千家商家,最终可能会成为 CNet 的新闻,并可能导致我们破产。

If you want to keep your money safe, do you keep it under your mattress at home, or put it in a bank?

如果你想保证你的钱安全,你会把它放在家里的床垫下,还是放在银行里?

This argument applies to

这个论点适用于

every aspect of server administration: not just security, but uptime, bandwidth, load management, backups, etc. Our existence depended on doing these things right.

服务器管理的各个方面:不仅是安全性,还有正常运行时间、带宽、负载管理、备份等。我们的存在取决于正确地做好这些事情。

Server problems were the big no-no for us, like a dangerous toy would be for a toy maker, or a salmonella outbreak for a food processor.

服务器问题对我们来说是最大的禁忌,就像危险的玩具对于玩具制造商来说,或者沙门氏菌爆发对于食品加工商来说一样。

A big company that uses Web-based applications is to that extent outsourcing IT.

使用基于 Web 的应用程序的大公司在某种程度上就是外包 IT。

Drastic as it sounds, I think this is generally

虽然听起来很激烈,但我认为这通常是

a good idea.

好主意。

Companies are likely to get better service this way than they would from in-house system administrators.

通过这种方式,公司可能会获得比内部系统管理员更好的服务。

System administrators can become cranky and unresponsive because they're not directly exposed to competitive pressure: a salesman has to deal with customers, and a developer has to deal with competitors' software, but a system administrator, like an old bachelor, has few external forces to keep him in line.

系统管理员可能会变得脾气暴躁、反应迟钝,因为他们没有直接面临竞争压力:推销员必须与客户打交道,开发人员必须与竞争对手的软件打交道,但系统管理员就像一个老光棍一样,几乎没有外部力量来约束他。

[10] At Viaweb we had

[10] 在 Viaweb,我们有

external forces in plenty to keep us in line.

有足够的外部力量来让我们保持一致。

The people calling us were customers, not just co-workers.

给我们打电话的人是客户,而不仅仅是同事。

If a server got wedged, we jumped; just thinking about it gives me a jolt of adrenaline, years later.

如果服务器被卡住,我们就会跳下去;几年后,只要一想到这件事,我就会感到肾上腺素激增。

So Web-based applications will ordinarily be the right answer for big companies too.

因此,基于 Web 的应用程序通常也是大公司的正确答案。

They will be the last to realize it, however, just as they were with desktop computers.

然而,他们将是最后一个意识到这一点的人,就像他们对待台式电脑一样。

And partly for the same

部分是为了同样的

reason: it will be worth a lot of money to convince big companies that they need something more expensive.

原因:让大公司相信他们需要更昂贵的东西是值得花很多钱的。

There is always a tendency for rich customers to buy expensive solutions, even when cheap solutions are better, because the people offering expensive solutions can spend more to sell them.

富有的客户总是倾向于购买昂贵的解决方案,即使廉价的解决方案更好,因为提供昂贵解决方案的人可以花更多的钱来销售它们。

At Viaweb we were always up against this.

在 Viaweb,我们总是遇到这种情况。

We lost several high-end merchants to Web consulting firms who convinced them they'd be better off if

我们因网络咨询公司而失去了一些高端商人,这些公司说服他们,如果

they paid half a million dollars for a custom-made online store on their own server.

他们花费了五十万美元在自己的服务器上建立了一个定制的在线商店。

They were, as a rule, not better off, as more than one discovered when Christmas shopping season came around and loads rose on their server.

一般来说,他们的情况并没有变得更好,正如不止一个人在圣诞节购物季到来并且服务器负载上升时发现的那样。

Viaweb was a lot more sophisticated than what most of these merchants got, but we couldn't afford to tell them.

Viaweb 比大多数商家所得到的要复杂得多,但我们无法告诉他们。

At $300 a month, we couldn't afford to send a team of well-dressed and authoritative-sounding people to make presentations

每月 300 美元,我们无力派出一支衣着考究、听起来很权威的团队来进行演示

to customers.

给客户。

A large part of what big companies pay extra for is the cost of selling expensive things to them.

大公司额外支付的费用很大一部分是向他们销售昂贵产品的成本。

(If the Defense Department pays a thousand dollars for toilet seats, it's partly because it costs a lot to sell toilet seats for a thousand dollars.) And this is one reason intranet software will continue to thrive, even though it is probably a bad idea.

(如果国防部支付一千美元购买马桶座圈,部分原因是以一千美元的价格出售马桶座圈的成本很高。)这就是内联网软件将继续蓬勃发展的原因之一,尽管这可能是一个坏主意。

It's simply more expensive.

简直就是更贵了。

There is

有

nothing you can do about this conundrum, so the best plan is to go for the smaller customers first.

对于这个难题你无能为力,因此最好的计划是首先针对较小的客户。

The rest will come in time.

其余的会及时到来。

Son of Server Running software on the server is nothing new.

服务器之子 在服务器上运行软件并不是什么新鲜事。

In fact it's the old model: mainframe applications are all server-based.

事实上,这是旧模型:大型机应用程序都是基于服务器的。

If server-based software is such a good idea, why did it lose last time?

如果基于服务器的软件是个好主意,为什么上次它失败了?

Why did desktop computers eclipse mainframes?

为什么台式电脑的表现比大型机黯然失色?

At first desktop computers didn't look like much of a threat.

起初,台式电脑看起来并没有太大的威胁。

The

的

first users were all hackers-- or hobbyists, as they were called then.

第一批用户都是黑客——或者是业余爱好者,正如他们当时所说的那样。

They liked microcomputers because they were cheap.

他们喜欢微型计算机,因为它们很便宜。

For the first time, you could have your own computer.

您第一次可以拥有自己的计算机。

The phrase "personal computer" is part of the language now, but when it was first used it had a deliberately audacious sound, like the phrase "personal satellite" would today.

“个人计算机”一词现在已成为该语言的一部分,但当它第一次使用时,它的发音故意大胆,就像今天的“个人卫星”一词一样。

Why did desktop computers take over?

为什么台式电脑占据了主导地位?

I think it was because they

我想这是因为他们

had better software.

有更好的软件。

And I think the reason microcomputer software was better was that it could be written by small companies.

我认为微型计算机软件更好的原因是它可以由小公司编写。

I don't think many people realize how fragile and tentative startups are in the earliest stage.

我认为很多人都没有意识到初创公司在最初阶段是多么脆弱和试探。

Many startups begin almost by accident-- as a couple guys, either with day jobs or in school, writing a prototype of something that might, if it looks promising, turn into a company.

许多初创公司几乎都是偶然开始的——一对夫妇,无论是日常工作还是在学校,编写了一个原型,如果它看起来很有前途,可能会变成一家公司。

At this larval stage, any significant obstacle will stop

在这个幼虫阶段,任何重大障碍都会停止

the startup dead in its tracks.

这家初创公司陷入困境。

Writing mainframe software required too much commitment up front.

编写大型机软件需要预先投入太多的精力。

Development machines were expensive, and because the customers would be big companies, you'd need an impressive-looking sales force to sell it to them.

开发机器价格昂贵,而且由于客户都是大公司,因此您需要一支令人印象深刻的销售队伍才能将其出售给他们。

Starting a startup to write mainframe software would be a much more serious undertaking than just hacking something together on your Apple II in the evenings.

创办一家初创公司来编写大型机软件将是一项比晚上在 Apple II 上编写一些东西要严肃得多的任务。

And so you didn't get a lot of startups writing

所以你没有得到很多初创公司的写作

mainframe applications.

大型机应用程序。

The arrival of desktop computers inspired a lot of new software, because writing applications for them seemed an attainable goal to larval startups.

台式电脑的出现激发了许多新软件的诞生,因为为它们编写应用程序对于初创公司来说似乎是一个可以实现的目标。

Development was cheap, and the customers would be individual people that you could reach through computer stores or even by mail-order.

开发成本低廉,而且客户是个人,您可以通过计算机商店甚至通过邮购联系到他们。

The application that pushed desktop computers out into the mainstream was VisiCalc , the first spreadsheet.

将台式计算机推向主流的应用程序是 VisiCalc,它是第一个电子表格。

It was written by two guys

这是两个人写的

working in an attic, and yet did things no mainframe software could do.

在阁楼上工作,但却完成了大型机软件无法完成的事情。

[11] VisiCalc was such an advance, in its time, that people bought Apple IIs just to run it.

[11] VisiCalc 在当时是一个进步,人们购买 Apple II 只是为了运行它。

And this was the beginning of a trend: desktop computers won because startups wrote software for them.

这是一种趋势的开始:台式电脑获胜是因为初创公司为它们编写软件。

It looks as if server-based software will be good this time around, because startups will write it.

看来这次基于服务器的软件会很好,因为初创公司会编写它。

Computers are so cheap now that you can get started, as we did, using a desktop computer as a

现在计算机非常便宜,您可以像我们一样开始使用台式计算机作为

server.

服务器。

Inexpensive processors have eaten the workstation market (you rarely even hear the word now) and are most of the way through the server market; Yahoo's servers, which deal with loads as high as any on the Internet, all have the same inexpensive Intel processors that you have in your desktop machine.

廉价的处理器已经占领了工作站市场(你现在很少听到这个词了),并且大部分都占领了服务器市场;雅虎的服务器处理的负载与互联网上的任何服务器一样高,它们都配备了与台式机相同的廉价英特尔处理器。

And once you've written the software, all you need to sell it is a Web site.

一旦您编写了软件,销售它所需要的只是一个网站。

Nearly all our users came direct to our site through word of mouth and references

几乎我们所有的用户都是通过口碑和参考直接访问我们的网站

in the press.

在新闻界。

[12] Viaweb was a typical larval startup.

[12] Viaweb 是一家典型的幼虫初创公司。

We were terrified of starting a company, and for the first few months comforted ourselves by treating the whole thing as an experiment that we might call off at any moment.

我们对创办一家公司感到恐惧,在最初的几个月里,我们安慰自己,把整个事情当作一个我们随时可能取消的实验。

Fortunately, there were few obstacles except technical ones.

幸运的是,除了技术方面的障碍外,几乎没有什么障碍。

While we were writing the software, our Web server was the same desktop machine we used for development, connected to

当我们编写软件时,我们的 Web 服务器与我们用于开发的台式机相同,连接到

the outside world by a dialup line.

通过拨号线路与外界联系。

Our only expenses in that phase were food and rent.

那个阶段我们唯一的开支是食物和房租。

There is all the more reason for startups to write Web-based software now, because writing desktop software has become a lot less fun.

现在,初创公司更有理由编写基于 Web 的软件,因为编写桌面软件已经变得不再那么有趣。

If you want to write desktop software now you do it on Microsoft's terms, calling their APIs and working around their buggy OS.

如果你现在想编写桌面软件,你可以按照 Microsoft 的条款进行,调用他们的 API 并解决他们有缺陷的操作系统。

And if you manage to write something that takes off, you may find that

如果你设法写出一些成功的东西,你可能会发现

you were merely doing market research for Microsoft.

你只是在为微软做市场调查。

If a company wants to make a platform that startups will build on, they have to make it something that hackers themselves will want to use.

如果一家公司想要打造一个可供初创公司构建的平台,他们就必须将其打造为黑客自己想要使用的东西。

That means it has to be inexpensive and well-designed.

这意味着它必须价格便宜且设计精良。

The Mac was popular with hackers when it first came out, and a lot of them wrote software for it.

Mac 刚问世时就受到了黑客的欢迎,很多人都为它编写了软件。

[13] You see this less with Windows, because hackers don't use it.

[13] 在 Windows 中这种情况很少见,因为黑客不使用它。

The kind of people who are good at

什么样的人擅长

writing software tend to be running Linux or FreeBSD now.

现在编写软件往往运行Linux 或FreeBSD。

I don't think we would have started a startup to write desktop software, because desktop software has to run on Windows, and before we could write software for Windows we'd have to use it.

我不认为我们会启动一家编写桌面软件的初创公司,因为桌面软件必须在 Windows 上运行,而在我们为 Windows 编写软件之前,我们必须使用它。

The Web let us do an end-run around Windows, and deliver software running on Unix direct to users through the browser.

Web 让我们能够围绕 Windows 进行最终运行,并通过浏览器将在 Unix 上运行的软件直接交付给用户。

That is a liberating prospect, a lot like the arrival of PCs twenty-five years ago.

这是一个解放的前景,就像二十五年前个人电脑的出现一样。

Microsoft Back when desktop computers arrived, IBM was the giant that everyone was afraid of.

微软 早在台式电脑问世时,IBM 就是每个人都害怕的巨头。

It's hard to imagine now, but I remember the feeling very well.

现在很难想象,但我清楚地记得那种感觉。

Now the frightening giant is Microsoft, and I don't think they are as blind to the threat facing them as IBM was.

现在令人恐惧的巨人是微软,我不认为他们像 IBM 那样对自己面临的威胁视而不见。

After all, Microsoft deliberately built their business in IBM's blind spot.

毕竟,微软故意在IBM的盲点上建立自己的业务。

I mentioned earlier that my mother doesn't really need a desktop

我之前提到过我妈妈其实并不需要台式机

computer.

电脑。

Most users probably don't.

大多数用户可能不知道。

That's a problem for Microsoft, and they know it.

这对微软来说是一个问题,他们也知道这一点。

If applications run on remote servers, no one needs Windows.

如果应用程序在远程服务器上运行,则没有人需要 Windows。

What will Microsoft do?

微软会做什么?

Will they be able to use their control of the desktop to prevent, or constrain, this new generation of software?

他们是否能够利用对桌面的控制来阻止或限制新一代软件?

My guess is that Microsoft will develop some kind of server/desktop hybrid, where the operating system works together with servers they

我的猜测是,微软将开发某种服务器/桌面混合系统,其中操作系统与他们的服务器一起工作

control.

控制。

At a minimum, files will be centrally available for users who want that.

至少,文件将集中供有需要的用户使用。

I don't expect Microsoft to go all the way to the extreme of doing the computations on the server, with only a browser for a client, if they can avoid it.

我不希望微软走到极端,在服务器上进行计算,只为客户端提供浏览器,如果他们可以避免的话。

If you only need a browser for a client, you don't need Microsoft on the client, and if Microsoft doesn't control the client, they can't push users towards their server-based applications.

如果您只需要客户端的浏览器,则客户端上不需要微软,并且如果微软不控制客户端,他们就无法将用户推向基于服务器的应用程序。

I think Microsoft will have a hard time keeping the genie in the bottle.

我认为微软将很难将这个精灵关在瓶子里。

There will be too many different types of clients for them to control them all.

不同类型的客户太多,他们无法全部控制。

And if Microsoft's applications only work with some clients, competitors will be able to trump them by offering applications that work from any client.

如果微软的应用程序仅适用于某些客户端,那么竞争对手将能够通过提供适用于任何客户端的应用程序来击败它们。

[14] In a world of Web-based applications, there is no automatic place for Microsoft.

[14] 在基于网络的应用程序世界中,微软没有自动的地位。

They may succeed in making themselves a place, but

他们可能会成功地让自己有一席之地,但是

I don't think they'll dominate this new world as they did the world of desktop applications.

我不认为他们会像桌面应用程序世界那样主宰这个新世界。

It's not so much that a competitor will trip them up as that they will trip over themselves.

与其说是竞争对手绊倒了他们,不如说是他们自己绊倒了。

With the rise of Web-based software, they will be facing not just technical problems but their own wishful thinking.

随着基于网络的软件的兴起,他们面临的不仅仅是技术问题,还有他们自己的一厢情愿的想法。

What they need to do is cannibalize their existing business, and I can't see them facing that.

他们需要做的是蚕食他们现有的业务,我不认为他们会面临这个问题。

The same single-mindedness

同样的一心一意

that has brought them this far will now be working against them.

让他们走到这一步的因素现在将对他们不利。

IBM was in exactly the same situation, and they could not master it.

IBM的情况一模一样,他们也无法掌握。

IBM made a late and half-hearted entry into the microcomputer business because they were ambivalent about threatening their cash cow, mainframe computing.

IBM 进入微型计算机业务的时间较晚,而且半心半意,因为他们对威胁自己的摇钱树——大型机计算持矛盾态度。

Microsoft will likewise be hampered by wanting to save the desktop.

微软同样会因为想要拯救桌面而受到阻碍。

A cash cow can be a damned heavy monkey on your back.

摇钱树可能是你背上的一只该死的笨重猴子。

I'm not saying that no one will dominate server-based applications.

我并不是说没有人会主宰基于服务器的应用程序。

Someone probably will eventually.

最终可能会有人这么做。

But I think that there will be a good long period of cheerful chaos, just as there was in the early days of microcomputers.

但我认为将会有一段很长一段时间的愉快的混乱,就像微型计算机的早期那样。

That was a good time for startups.

那是初创公司的好时机。

Lots of small companies flourished, and did it by making cool things.

许多小公司蓬勃发展,并通过制造很酷的东西来实现。

Startups but More So The classic startup is fast and informal, with few people and little

初创企业,但更重要的是 经典的初创企业是快速且非正式的,人员很少,规模也很小。

money.

钱。

Those few people work very hard, and technology magnifies the effect of the decisions they make.

这少数人工作非常努力,而技术放大了他们所做决策的效果。

If they win, they win big.

如果他们赢了,他们就赢了。

In a startup writing Web-based applications, everything you associate with startups is taken to an extreme.

在一家编写基于 Web 的应用程序的初创公司中,与初创公司相关的一切都被发挥到了极致。

You can write and launch a product with even fewer people and even less money.

您可以用更少的人员和更少的资金来编写和推出产品。

You have to be even faster, and you can get away with being more informal.

你必须更快,而且你可以不拘礼节。

You can literally launch your product as three guys sitting in the

你可以像三个人坐在一起推出你的产品

living room of an apartment, and a server collocated at an ISP.

公寓的客厅,服务器位于 ISP 处。

We did.

我们做到了。

Over time the teams have gotten smaller, faster, and more informal.

随着时间的推移,团队变得更小、更快、更非正式。

In 1960, software development meant a roomful of men with horn rimmed glasses and narrow black neckties, industriously writing ten lines of code a day on IBM coding forms.

1960 年,软件开发意味着一屋子的男人戴着角框眼镜、系着黑色窄领带,每天在 IBM 编码表上勤奋地编写十行代码。

In 1980, it was a team of eight to ten people wearing jeans to the office and typing into vt100s.

1980 年,这是一个由 8 到 10 个人组成的团队,穿着牛仔裤到办公室,用 vt100 打字。

Now it's a couple of guys sitting in a living room

现在有几个人坐在客厅里

with laptops.

与笔记本电脑。

(And jeans turn out not to be the last word in informality.) Startups are stressful, and this, unfortunately, is also taken to an extreme with Web-based applications.

(事实证明,牛仔裤并不是非正式的最后一个词。)初创公司压力很大,不幸的是,这种情况在基于网络的应用程序中也被推向了极端。

Many software companies, especially at the beginning, have periods where the developers slept under their desks and so on.

很多软件公司,尤其是刚成立的时候,都会有开发人员睡在桌子底下等情况。

The alarming thing about Web-based software is that there is nothing to prevent this becoming the default.

基于网络的软件令人担忧的是,没有什么可以阻止它成为默认设置。

The stories about sleeping under desks

关于睡在桌子底下的故事

usually end: then at last we shipped it and we all went home and slept for a week.

通常结束:最后我们发货了,我们都回家睡了一个星期。

Web-based software never ships.

基于网络的软件永远不会发布。

You can work 16-hour days for as long as you want to.

您可以每天工作 16 小时,想工作多久就多久。

And because you can, and your competitors can, you tend to be forced to.

因为你可以,你的竞争对手也可以,所以你往往被迫这样做。

You can, so you must.

你可以,所以你必须。

It's Parkinson's Law running in reverse.

这是帕金森定律的逆向运行。

The worst thing is not the hours but the responsibility.

最糟糕的不是时间,而是责任。

Programmers and system administrators traditionally each have their own separate

传统上,程序员和系统管理员都有自己独立的职责

worries.

担心。

Programmers have to worry about bugs, and system administrators have to worry about infrastructure.

程序员必须担心错误,系统管理员必须担心基础设施。

Programmers may spend a long day up to their elbows in source code, but at some point they get to go home and forget about it.

程序员可能会在源代码中花费一整天的时间,但在某些时候他们可以回家并忘记它。

System administrators never quite leave the job behind, but when they do get paged at 4:00 AM, they don't usually have to do anything very complicated.

系统管理员永远不会完全放弃工作,但当他们在凌晨 4:00 接到寻呼时,他们通常不需要做任何非常复杂的事情。

With Web-based applications, these two kinds of stress get combined.

对于基于 Web 的应用程序,这两种压力会结合在一起。

The programmers become system administrators, but without the sharply defined limits that ordinarily make the job bearable.

程序员成为系统管理员,但没有严格定义的限制,而这些限制通常使这项工作可以忍受。

At Viaweb we spent the first six months just writing software.

在 Viaweb,前六个月我们只是编写软件。

We worked the usual long hours of an early startup.

我们在早期创业时通常工作很长时间。

In a desktop software company, this would have been the part where we were working hard, but it felt like a vacation compared to the next phase, when we took users onto our server.

在桌面软件公司中,这本来是我们努力工作的部分,但与我们将用户带到我们的服务器的下一阶段相比,这感觉就像一个假期。

The second biggest

第二大

benefit of selling Viaweb to Yahoo (after the money) was to be able to dump ultimate responsibility for the whole thing onto the shoulders of a big company.

将 Viaweb 卖给雅虎(在赚到钱之后)的好处是能够将整个事情的最终责任推到一家大公司的肩上。

Desktop software forces users to become system administrators.

桌面软件迫使用户成为系统管理员。

Web-based software forces programmers to.

基于网络的软件迫使程序员这样做。

There is less stress in total, but more for the programmers.

总体上压力较小,但程序员的压力却更大。

That's not necessarily bad news.

这不一定是坏消息。

If you're a startup competing with a big company, it's good

如果你是一家与大公司竞争的初创公司,那很好

news.

新闻。

[15] Web-based applications offer a straightforward way to outwork your competitors.

[15] 基于网络的应用程序提供了一种超越竞争对手的简单方法。

No startup asks for more.

没有一家初创公司会要求更多。

Just Good Enough One thing that might deter you from writing Web-based applications is the lameness of Web pages as a UI.

足够好 可能阻止您编写基于 Web 的应用程序的一件事是 Web 页面作为 UI 的蹩脚。

That is a problem, I admit.

我承认这是一个问题。

There were a few things we would have really liked to add to HTML and HTTP.

我们确实希望将一些内容添加到 HTML 和 HTTP 中。

What matters, though, is that Web pages are just good enough.

但重要的是网页已经足够好了。

There is a parallel here with the first microcomputers.

这与第一台微型计算机有相似之处。

The processors in those machines weren't actually intended to be the CPUs of computers.

这些机器中的处理器实际上并不是计算机的 CPU。

They were designed to be used in things like traffic lights.

它们被设计用于交通灯等用途。

But guys like Ed Roberts, who designed the Altair , realized that they were just good enough.

但像 Altair 的设计者埃德·罗伯茨 (Ed Roberts) 这样的人意识到,它们已经足够好了。

You could combine one of these chips with some memory (256 bytes in the first Altair), and front panel switches, and you'd have a working computer.

您可以将其中一个芯片与一些内存(第一个 Altair 中为 256 字节)和前面板开关结合起来,您就拥有了一台可以工作的计算机。

Being

存在

able to have your own computer was so exciting that there were plenty of people who wanted to buy them, however limited.

能够拥有自己的计算机是如此令人兴奋,以至于有很多人想要购买它们,无论数量多么有限。

Web pages weren't designed to be a UI for applications, but they're just good enough.

网页并不是为应用程序设计的 UI,但它们已经足够好了。

And for a significant number of users, software that you can use from any browser will be enough of a win in itself to outweigh any awkwardness in the UI.

对于大量用户来说,可以在任何浏览器中使用的软件本身就足以胜过用户界面中的任何尴尬。

Maybe you can't write the best-looking spreadsheet using HTML, but you can write a spreadsheet

也许您无法使用 HTML 编写最好看的电子表格,但您可以编写电子表格

that several people can use simultaneously from different locations without special client software, or that can incorporate live data feeds, or that can page you when certain conditions are triggered.

几个人可以在不同的位置同时使用,无需特殊的客户端软件,或者可以包含实时数据源,或者可以在触发某些条件时给您寻呼。

More importantly, you can write new kinds of applications that don't even have names yet.

更重要的是,您可以编写甚至还没有名称的新型应用程序。

VisiCalc was not merely a microcomputer version of a mainframe application, after all-- it was a new type of application.

毕竟,VisiCalc 不仅仅是大型机应用程序的微型计算机版本,它是一种新型应用程序。

Of course, server-based applications don't have to be Web-based.

当然,基于服务器的应用程序不一定是基于 Web 的。

You could have some other kind of client.

你可能有其他类型的客户。

But I'm pretty sure that's a bad idea.

但我很确定这是一个坏主意。

It would be very convenient if you could assume that everyone would install your client-- so convenient that you could easily convince yourself that they all would-- but if they don't, you're hosed.

如果您可以假设每个人都会安装您的客户端,那将非常方便 - 如此方便,您可以轻松地说服自己他们都会安装 - 但如果他们不这样做,您就完蛋了。

Because Web-based software assumes nothing about the client, it will work anywhere the Web works.

由于基于 Web 的软件对客户端没有任何假设,因此它可以在 Web 运行的任何地方运行。

That's a

那是一个

big advantage already, and the advantage will grow as new Web devices proliferate.

优势已经很大,并且随着新的网络设备的激增,这种优势将会变得更大。

Users will like you because your software just works, and your life will be easier because you won't have to tweak it for every new client.

用户会喜欢你,因为你的软件可以正常工作,你的生活也会更轻松,因为你不必为每个新客户调整它。

<!-- I would not even use Javascript, if I were you.

<!-- 如果我是你,我什至不会使用 Javascript。

Viaweb didn't.

Viaweb 没有。

--> [16] I feel like I've watched the evolution of the Web as closely as anyone, and I can't predict what's going to happen with clients.

--> [16] 我觉得我和任何人一样密切关注着网络的演变,但我无法预测客户会发生什么。

Convergence is probably coming, but where?

融合可能即将到来,但在哪里?

I can't pick a winner.

我无法选出获胜者。

One thing I can predict is conflict between AOL and Microsoft.

我可以预测的一件事是 AOL 和 Microsoft 之间的冲突。

Whatever Microsoft's .NET turns out to be, it will probably involve connecting the desktop to servers.

无论 Microsoft 的 .NET 最终是什么,它都可能涉及将桌面连接到服务器。

Unless AOL fights back, they will either be pushed aside or turned into a pipe between Microsoft client and server software.

除非美国在线反击,否则它们要么被推到一边,要么变成微软客户端和服务器软件之间的管道。

If Microsoft and AOL get into a client war, the only thing sure to work on both will be browsing the Web,

如果微软和美国在线陷入客户端战争,唯一能保证双方都有效的就是浏览网页,

meaning Web-based applications will be the only kind that work everywhere.

这意味着基于 Web 的应用程序将是唯一一种可以在任何地方使用的应用程序。

How will it all play out?

一切将如何展开?

I don't know.

我不知道。

And you don't have to know if you bet on Web-based applications.

而且您不必知道您是否押注于基于 Web 的应用程序。

No one can break that without breaking browsing.

没有人可以在不中断浏览的情况下打破这一点。

The Web may not be the only way to deliver software, but it's one that works now and will continue to work for a long time.

Web 可能不是交付软件的唯一方式,但它是一种现在有效并且将继续长期有效的方式。

Web-based applications are cheap to develop, and easy for even the smallest startup to deliver.

基于 Web 的应用程序开发成本低廉,即使是最小的初创公司也可以轻松交付。

They're a lot

他们很多

of work, and of a particularly stressful kind, but that only makes the odds better for startups.

工作压力特别大,但这只会让初创公司的胜算更大。

Why Not?

为什么不呢?

E.

E.

B.

B.

White was amused to learn from a farmer friend that many electrified fences don't have any current running through them.

怀特从一位农民朋友那里得知,许多带电围栏没有任何电流通过,这让怀特感到很有趣。

The cows apparently learn to stay away from them, and after that you don't need the current.

奶牛显然学会了远离它们,之后就不再需要水流了。

"Rise up, cows!" he wrote, "Take your liberty while despots snore!" If you're a hacker who has thought of one day starting a startup,

“起来吧,牛们!”他写道:“在暴君打鼾的时候,自由行动吧!”如果你是一名黑客,想过有一天创办一家初创公司,

there are probably two things keeping you from doing it.

可能有两件事阻止你这样做。

One is that you don't know anything about business.

一是你对商业一无所知。

The other is that you're afraid of competition.

另一个是你害怕竞争。

Neither of these fences have any current in them.

这些栅栏内都没有任何电流。

There are only two things you have to know about business: build something users love, and make more than you spend.

关于商业,你只需要了解两件事:打造用户喜欢的东西,赚得比你花的多。

If you get these two right, you'll be ahead of most startups.

如果你做对了这两点,你将领先于大多数初创公司。

You can figure

你可以算出

out the rest as you go.

剩下的随你走。

You may not at first make more than you spend, but as long as the gap is closing fast enough you'll be ok.

一开始你赚的可能不会比花的多,但只要差距足够快地缩小,你就可以了。

If you start out underfunded, it will at least encourage a habit of frugality.

如果你一开始资金不足,它至少会鼓励你养成节俭的习惯。

The less you spend, the easier it is to make more than you spend.

你花的越少,就越容易赚到比花的多的钱。

Fortunately, it can be very cheap to launch a Web-based application.

幸运的是,启动基于 Web 的应用程序的成本非常低。

We launched on under $10,000, and it would be even cheaper today.

我们的上市价格不到 10,000 美元,今天甚至会更便宜。

We had to

我们不得不

spend thousands on a server, and thousands more to get SSL.

花费数千美元购买服务器,并花费数千美元购买 SSL。

(The only company selling SSL software at the time was Netscape.) Now you can rent a much more powerful server, with SSL included, for less than we paid for bandwidth alone.

(当时唯一销售 SSL 软件的公司是 Netscape。)现在您可以租用功能更强大的服务器,其中包括 SSL,价格比我们单独支付的带宽费用要低。

You could launch a Web-based application now for less than the cost of a fancy office chair.

您现在就可以启动基于 Web 的应用程序,而花费的成本还低于一张精美办公椅的成本。

As for building something users love, here are some general tips.

至于构建用户喜欢的东西,这里有一些一般性提示。

Start by making something clean and simple that you would want to

首先制作一些您想要的干净简单的东西

use yourself.

用你自己。

Get a version 1.0 out fast, then continue to improve the software, listening closely to the users as you do.

快速发布 1.0 版本,然后继续改进软件,密切倾听用户的意见。

The customer is always right, but different customers are right about different things; the least sophisticated users show you what you need to simplify and clarify, and the most sophisticated tell you what features you need to add.

顾客永远是对的,但不同的顾客在不同的事情上是对的;最不成熟的用户会向您展示需要简化和澄清的内容,而最复杂的用户则会告诉您需要添加哪些功能。

The best thing software can be is easy, but the way to do this is to get the defaults right, not to limit

软件最好的事情就是简单,但做到这一点的方法是获得正确的默认值,而不是限制

users' choices.

用户的选择。

Don't get complacent if your competitors' software is lame; the standard to compare your software to is what it could be, not what your current competitors happen to have.

如果竞争对手的软件很蹩脚,也不要沾沾自喜;比较你的软件的标准是它可能是什么,而不是你当前的竞争对手碰巧拥有什么。

Use your software yourself, all the time.

始终自行使用您的软件。

Viaweb was supposed to be an online store builder, but we used it to make our own site too.

Viaweb 本来应该是一个在线商店构建器,但我们也用它来制作我们自己的网站。

Don't listen to marketing people or designers or product managers just because of their job titles.

不要仅仅因为他们的职位而听从营销人员、设计师或产品经理的意见。

If they have good ideas, use

如果他们有好主意,请使用

them, but it's up to you to decide; software has to be designed by hackers who understand design, not designers who know a little about software.

他们,但由你决定;软件必须由懂设计的黑客来设计,而不是对软件略知一二的设计师。

If you can't design software as well as implement it, don't start a startup.

如果你不能设计软件并实现它,就不要开始创业。

Now let's talk about competition.

现在我们来谈谈竞争。

What you're afraid of is not presumably groups of hackers like you, but actual companies, with offices and business plans and salesmen and so on, right?

你害怕的大概不是像你这样的黑客团体,而是真正的公司,有办公室、商业计划和推销员等等,对吧?

Well,

嗯,

they are more afraid of you than you are of them, and they're right.

他们害怕你胜过你害怕他们,他们是对的。

It's a lot easier for a couple of hackers to figure out how to rent office space or hire sales people than it is for a company of any size to get software written.

对于几个黑客来说,弄清楚如何租用办公空间或雇用销售人员比任何规模的公司编写软件要容易得多。

I've been on both sides, and I know.

两边我都经历过,我知道。

When Viaweb was bought by Yahoo, I suddenly found myself working for a big company, and it was like trying to run through waist-deep

当Viaweb被雅虎收购时,我突然发现自己在一家大公司工作,这就像试图穿过齐腰深的地方

water.

水。

I don't mean to disparage Yahoo.

我无意贬低雅虎。

They had some good hackers, and the top management were real butt-kickers.

他们有一些优秀的黑客,高层管理人员也是真正的能干者。

For a big company, they were exceptional.

对于一家大公司来说,他们是例外的。

But they were still only about a tenth as productive as a small startup.

但他们的生产力仍然只有小型初创公司的十分之一左右。

No big company can do much better than that.

没有哪家大公司能做得比这更好。

What's scary about Microsoft is that a company so big can develop software at all.

微软的可怕之处在于,这么大的公司竟然能开发软件。

They're like a mountain that can walk.

他们就像一座可以行走的山。

Don't be intimidated.

不要被吓倒。

You can do as much that Microsoft can't as

Microsoft 做不到的事情你都能做

they can do that you can't.

他们可以做你做不到的事。

And no one can stop you.

没有人可以阻止你。

You don't have to ask anyone's permission to develop Web-based applications.

您无需征得任何人的许可即可开发基于 Web 的应用程序。

You don't have to do licensing deals, or get shelf space in retail stores, or grovel to have your application bundled with the OS.

您不必进行许可交易,或在零售店获得货架空间,或卑躬屈膝地将您的应用程序与操作系统捆绑在一起。

You can deliver software right to the browser, and no one can get between you and potential users without preventing them from browsing the Web.

您可以直接向浏览器交付软件,没有人可以在不阻止潜在用户浏览 Web 的情况下介入您和潜在用户。

You may not believe it, but I promise you, Microsoft is scared of you.

你可能不相信,但我向你保证,微软害怕你。

The complacent middle managers may not be, but Bill is, because he was you once, back in 1975, the last time a new way of delivering software appeared.

自满的中层管理人员可能不会,但比尔却是,因为他曾经是你,早在 1975 年,最后一次出现了新的软件交付方式。

Notes [1] Realizing that much of the money is in the services, companies building lightweight clients have usually tried to combine the hardware with an online service .

注释 [1] 意识到大部分资金都在服务中,构建轻量级客户端的公司通常尝试将硬件与在线服务结合起来。

This approach has not worked

这个方法没有起到作用

well, partly because you need two different kinds of companies to build consumer electronics and to run an online service, and partly because users hate the idea.

部分原因是你需要两种不同类型的公司来制造消费电子产品并运营在线服务,部分原因是用户讨厌这个想法。

Giving away the razor and making money on the blades may work for Gillette, but a razor is much smaller commitment than a Web terminal.

赠送剃须刀并通过刀片赚钱可能对吉列有用,但剃须刀的投入比网络终端要小得多。

Cell phone handset makers are satisfied to sell hardware without trying to capture the service revenue as well.

手机制造商满足于销售硬件,而不试图获取服务收入。

That should probably be the model for Internet

这应该就是互联网的模式

clients too.

客户也是如此。

If someone just sold a nice-looking little box with a Web browser that you could use to connect through any ISP, every technophobe in the country would buy one.

如果有人刚刚出售了一个带有网络浏览器的漂亮小盒子,可以用来通过任何 ISP 连接,那么该国的每个技术恐惧者都会购买一个。

[2] Security always depends more on not screwing up than any design decision, but the nature of server-based software will make developers pay more attention to not screwing up.

[2] 安全性始终比任何设计决策更依赖于不搞砸,但基于服务器的软件的本质将使开发人员更加关注不搞砸。

Compromising a server could cause such damage that ASPs (that want to stay in business) are

破坏服务器可能会造成 ASP(想要继续营业)所遭受的损害

likely to be careful about security.

可能会注意安全。

[3] In 1995, when we started Viaweb, Java applets were supposed to be the technology everyone was going to use to develop server-based applications.

[3] 1995 年,当我们创办 Viaweb 时,Java applet 被认为是每个人都将用来开发基于服务器的应用程序的技术。

Applets seemed to us an old-fashioned idea.

小程序对我们来说似乎是一个老式的想法。

Download programs to run on the client?

下载程序在客户端运行?

Simpler just to go all the way and run the programs on the server.

更简单的是直接在服务器上运行程序。

We wasted little time on applets, but countless other startups must have been lured into

我们在小程序上浪费了很少的时间,但一定有无数其他初创公司被吸引进来

this tar pit.

这个焦油坑。

Few can have escaped alive, or Microsoft could not have gotten away with dropping Java in the most recent version of Explorer.

很少有人能活着逃脱,否则微软也无法逃脱在最新版本的 Explorer 中放弃 Java 的惩罚。

[4] This point is due to Trevor Blackwell, who adds "the cost of writing software goes up more than linearly with its size.

[4] 这一点是由特雷弗·布莱克威尔(Trevor Blackwell)提出的,他补充道“编写软件的成本与其大小呈线性增长。

Perhaps this is mainly due to fixing old bugs, and the cost can be more linear if all bugs are found quickly." [5] The hardest kind of bug to find may be a variant of compound

也许这主要是由于修复了旧的错误,如果快速发现所有错误,成本可以更加线性。” [5] 最难发现的错误可能是复合的变体

bug where one bug happens to compensate for another.

一个 bug 恰好弥补了另一个 bug。

When you fix one bug, the other becomes visible.

当您修复一个错误时,另一个错误就会变得可见。

But it will seem as if the fix is at fault, since that was the last thing you changed.

但看起来修复似乎有问题,因为那是您最后更改的内容。

[6] Within Viaweb we once had a contest to describe the worst thing about our software.

[6] 在 Viaweb 内部,我们曾经举办过一场竞赛,描述我们软件中最糟糕的事情。

Two customer support people tied for first prize with entries I still shiver to recall.

两名客户支持人员并列一等奖,我至今回想起这些参赛作品仍不寒而栗。

We fixed both problems immediately.

我们立即解决了这两个问题。

[7] Robert Morris wrote the ordering system, which shoppers used to place orders.

[7] 罗伯特·莫里斯(Robert Morris)编写了订购系统,购物者用它来下订单。

Trevor Blackwell wrote the image generator and the manager, which merchants used to retrieve orders, view statistics, and configure domain names etc. I wrote the editor, which merchants used to build their sites.

Trevor Blackwell 编写了图像生成器和管理器,商家用它们来检索订单、查看统计数据和配置域名等。我编写了编辑器,商家用它们来构建网站。

The ordering system and image generator were written in C and C++, the manager mostly in Perl, and the editor

订购系统和图像生成器是用 C 和 C++ 编写的,管理器主要是用 Perl 编写的,编辑器是用 C 和 C++ 编写的

in Lisp .

在 Lisp 中。

[8] Price discrimination is so pervasive (how often have you heard a retailer claim that their buying power meant lower prices for you?) that I was surprised to find it was outlawed in the U.S. by the Robinson-Patman Act of 1936.

[8] 价格歧视如此普遍(您是否经常听到零售商声称他们的购买力对您来说意味着更低的价格?),以至于我惊讶地发现它在美国被 1936 年的《罗宾逊-帕特曼法案》取缔。

This law does not appear to be vigorously enforced.

这条法律似乎没有得到强有力的执行。

[9] In No Logo, Naomi Klein says that clothing brands favored by "urban youth" do not try too hard to prevent shoplifting because

[9] 在《No Logo》一书中,Naomi Klein 表示,“都市青年”青睐的服装品牌不会太努力地防止入店行窃,因为

in their target market the shoplifters are also the fashion leaders.

在他们的目标市场中,商店扒手也是时尚的领导者。

[10] Companies often wonder what to outsource and what not to.

[10] 公司常常想知道什么该外包、什么不该外包。

One possible answer: outsource any job that's not directly exposed to competitive pressure, because outsourcing it will thereby expose it to competitive pressure.

一个可能的答案是:外包任何不直接面临竞争压力的工作,因为外包会使其面临竞争压力。

[11] The two guys were Dan Bricklin and Bob Frankston.

[11]这两个人是丹·布里克林和鲍勃·弗兰克斯顿。

Dan wrote a prototype in Basic in a couple days, then over the course of the

Dan 在几天内用 Basic 编写了一个原型,然后在整个过程中

next year they worked together (mostly at night) to make a more powerful version written in 6502 machine language.

第二年,他们一起工作(主要是在晚上)制作了一个用 6502 机器语言编写的更强大的版本。

Dan was at Harvard Business School at the time and Bob nominally had a day job writing software.

丹当时在哈佛商学院,鲍勃名义上的日常工作是编写软件。

"There was no great risk in doing a business," Bob wrote, "If it failed it failed.

“做生意并没有太大的风险,”鲍勃写道,“如果失败了,那就失败了。

No big deal." [12] It's not quite as easy as I make it sound.

没什么大不了的。” [12] 这并不像我听起来那么容易。

It took a painfully long time for word of mouth to get going, and we did not start to

我们花了很长时间才开始口碑相传,但我们并没有开始这样做。

get a lot of press coverage until we hired a PR firm (admittedly the best in the business) for $16,000 per month.

得到了大量的媒体报道,直到我们以每月 16,000 美元的价格聘请了一家公关公司(无可否认是业内最好的)。

However, it was true that the only significant channel was our own Web site.

然而,唯一重要的渠道确实是我们自己的网站。

[13] If the Mac was so great, why did it lose?

[13] 如果 Mac 如此出色,为什么它会失败?

Cost, again.

成本,又来了。

Microsoft concentrated on the software business, and unleashed a swarm of cheap component suppliers on Apple hardware.

微软专注于软件业务,并在苹果硬件上释放了大批廉价零部件供应商。

It did not help, either, that suits took over during a critical period.

诉讼在关键时期占据上风也无济于事。

[14] One thing that would help Web-based applications, and help keep the next generation of software from being overshadowed by Microsoft, would be a good open-source browser.

[14] 一个好的开源浏览器将有助于基于网络的应用程序,并有助于防止下一代软件被微软所掩盖。

Mozilla is open-source but seems to have suffered from having been corporate software for so long.

Mozilla 是开源的,但似乎因长期以来一直是企业软件而受到困扰。

A small, fast browser that was actively maintained would be a great thing in itself, and would probably also encourage companies to build little Web appliances.

一个小型、快速且得到积极维护的浏览器本身就是一件伟大的事情,并且可能还会鼓励公司构建小型网络设备。

Among other things, a proper open-source browser would cause HTTP and HTML to continue to evolve (as e.g. Perl has).

除此之外,一个合适的开源浏览器将导致 HTTP 和 HTML 继续发展(例如 Perl 就是如此)。

It would help Web-based applications greatly to be able to distinguish between selecting a link and following it; all you'd need to do this would be a trivial enhancement of HTTP, to allow multiple urls in a request.

能够区分选择链接和关注链接将极大地帮助基于 Web 的应用程序;您所需要做的就是对 HTTP 进行简单的增强,以允许请求中存在多个 url。

Cascading menus would also be good.

级联菜单也不错。

If you want to change the world, write a new Mosaic.

如果你想改变世界,就写一个新的马赛克。

Think it's

认为是

too late?

太晚了?

In 1998 a lot of people thought it was too late to launch a new search engine, but Google proved them wrong.

1998 年,很多人认为推出新的搜索引擎为时已晚,但谷歌证明他们错了。

There is always room for something new if the current options suck enough.

如果当前的选择足够糟糕,那么总有新事物的空间。

Make sure it works on all the free OSes first-- new things start with their users.

首先确保它适用于所有免费操作系统——新事物从用户开始。

[15] Trevor Blackwell, who probably knows more about this from personal experience than anyone, writes: "I would go farther in saying that because server-based software

[15] 特雷弗·布莱克韦尔(Trevor Blackwell)可能比任何人都更了解这一点,他写道:“我会更进一步地说,因为基于服务器的软件

is so hard on the programmers, it causes a fundamental economic shift away from large companies.

对程序员来说太难了,它导致了经济上的根本性转变,远离了大公司。

It requires the kind of intensity and dedication from programmers that they will only be willing to provide when it's their own company.

它需要程序员的热情和奉献精神,而只有在他们自己的公司里,他们才愿意提供这种精神和奉献精神。

Software companies can hire skilled people to work in a not-too-demanding environment, and can hire unskilled people to endure hardships, but they can't hire highly skilled people to bust their asses.

软件公司可以雇佣有技能的人在要求不太高的环境中工作,也可以雇佣没有技能的人吃苦,但不能雇佣高技能的人来拼命工作。

Since capital is no

既然资本没有

longer needed, big companies have little to bring to the table." [16] In the original version of this essay, I advised avoiding Javascript.

由于不再需要,大公司几乎没有什么可以拿出来的。” [16] 在本文的原始版本中,我建议避免使用 Javascript。

That was a good plan in 2001, but Javascript now works.

这在 2001 年是一个很好的计划,但 Javascript 现在可以工作了。

<!-- Most of the Javascript I see on the Web isn't necessary, and much of it breaks.

<!-- 我在 Web 上看到的大多数 Javascript 都是不必要的,而且其中很多都损坏了。

(My mental picture of a Javascript programmer is Wally from Dilbert, with a thought bubble over his head reading "It works on my computer.") Yahoo uses Javascript in a few places,

(我心目中的 Javascript 程序员是来自 Dilbert 的 Wally,他的头上有一个思想泡泡,上面写着“它可以在我的电脑上运行。”)雅虎在一些地方使用了 Javascript,

though not many.

虽然不多。

I once asked someone there how this worked out, and he said "they ended up learning a lot about different browser versions." Microsoft may start to embrace and extend Javascript, or even can it, like Java.

我曾经问那里的人这是如何解决的,他说“他们最终学到了很多关于不同浏览器版本的知识。”微软可能会开始拥抱并扩展 Javascript,甚至可以像 Java 一样。

And when you start to be able to browse actual Web pages on your cell phone or PDA (or toaster), who knows if they'll even support it?

当您开始能够在手机或 PDA(或烤面包机)上浏览实际网页时,谁知道他们是否会支持它?

--> Thanks to Sarah Harlin, Trevor Blackwell, Robert Morris, Eric Raymond, Ken Anderson,

--> 感谢莎拉·哈林、特雷弗·布莱克威尔、罗伯特·莫里斯、埃里克·雷蒙德、肯·安德森,

and Dan Giffin for reading drafts of this paper; to Dan Bricklin and Bob Frankston for information about VisiCalc; and again to Ken Anderson for inviting me to speak at BBN.

和 Dan Giffin 阅读了本文的草稿;向 Dan Bricklin 和 Bob Frankston 询问有关 VisiCalc 的信息;再次感谢 Ken Anderson 邀请我在 BBN 上演讲。

<img src="http://www.virtumundo.com/images/spacer.gif" height=15 width=1> You'll find this essay and 14 others in Hackers & Painters .

<img src="http://www.virtumundo.com/images/spacer.gif" height=15 width=1> 您可以在《黑客与画家》中找到这篇文章和其他 14 篇文章。

中文为机器翻译,仅供参考。