JoelOnSoftware

Joel on Software

Strategy Letter IV: Bloatware and the 80/20 Myth

战略来信四:膨胀软件和神秘的80/20原则

by Joel Spolsky Friday, March 23, 2001


Version 5.0 of Microsoft's flagship spreadsheet program Excel came out in 1993. It was positively huge: it required a whole 15 megabytesof hard drive space. In those days we could still remember our first 20MB PC hard drives (around 1985) and so 15MB sure seemed like a lot.

1993年微软的旗舰电子表单程序Excel5.0发布的时候,绝对是个大家伙。它需要占整整十五兆的硬盘空间。在那个年代,我仍然记得我的第一台电脑(那大概是在1985年左右),总共只有二十兆的硬盘。所以十五兆空间确实还是很大的一个数字。

By the time Excel 2000 came out, it required a whopping 146MB ... almost a tenfold increase! Dang those sloppy Microsoft programmers, right?

到Excel2000出来的时候,需要整整146兆硬盘空间。几乎整整增长了十倍。这些该死的微软烂程序员!不是吗?

Wrong.

错了。

I'll bet you think I'm going to write one of those boring articles you see all over the net bemoaning "bloatware". Whine whine whine, this stuff is so bloated, oh woe is me, edlin and vi are so much better than Word and Emacs because they are svelte, etc.

我打赌你肯定觉得我又会写那种无聊的因特网上随处可见的抱怨膨胀软件的水文。永远就是抱怨抱怨抱怨!这都这玩意儿太膨胀了。对我来说edlin和vi要比word和emacs要好多了,因为比起来她们苗条多了。等等。

Ha ha! I tricked you! I'm not going to write that article again, because it's not true.

哈哈,被我耍到了吧?我不会再写这种文章了。因为那种文章说错了。

In 1993, given the cost of hard drives in those days, Microsoft Excel 5.0 took up about $36 worth of hard drive space.

在1993年,考虑到那个时代的硬盘价格,微软Excel5.0占用的磁盘空间花费了大约36美元。

In 2000, given the cost of hard drives in 2000, Microsoft Excel 2000 takes up about $1.03 in hard drive space.

到2000年.考虑到2000年时硬盘的价格,微软Excel 2000所花费的磁盘空间大约1.03美元。

(These figures are adjusted for inflation and based on hard drive price data from here.)

(这些数字基于这个链接给出的硬盘价格,并且已经根据通胀指数调整过了。)

In real terms, it's almost like Excel is actually getting smaller!

所以从真正意义上来讲,几乎可以说Excel实际上缩小了。

What is bloatware, exactly? The Jargon File snidely defines it as "software that provides minimal functionality while requiring a disproportionate amount of diskspace and memory. Especially used for application and OS upgrades. This term is very common in the Windows/NT world. So is its cause."

那么确切来讲到底什么是膨胀软件呢?这篇术语文件恶意的将其定义为:膨胀软件就是那种提供很小的功能,但是却需求不成比例的磁盘空间和内存空间的软件,占用大量空间这种情况通常发生在程序或者操作系统升级的时候,这个术语在windowNT世界很常见,Windows基本上就是它产生的原因。

I guess those guys just hate Windows. I haven't run out of memory in more than a decade, ever since virtual memory appeared in Windows 386 (1989). And hard drive space is down to $0.0071 per megabyte and still plummeting like a sheep learning to fly by jumping out of a tree.

我想这些人就是讨厌windows。自从1989年,虚拟内存在window386操作系统上出现之后,我几乎有十几年没有遇到过超出内存的情况了。并且,硬盘空间的价格已经降到了约每兆存储空间0.007美元。并且仍然像一头刚刚学的飞于是跳下一棵树的羊那样在急速下跌。

Maybe Linus Åkerlund can explain it. On his web page, he writes, "The big disadvantage of using these bloated programs is that you have to load this very large program, even if you just want to accomplish one tiny little thing. It eats up all your memory... you're not using your system in an efficient way. You make the system seem more inefficient than it really is, and this is totally unnecessary."

也许Linus Åkerlund能解释这种现象,在他的网页上他写道:使用膨胀程序最大问题就在于:你必须把这个巨大的程序装入到你的内存。哪怕你只是要用这个程序来完成很小的一件事情也会消耗掉你所有的内存。你没有办法很有效地使用系统资源。你的系统看起来比实际上更无效率科研,而这完全是不必要的。

Ohhh. It eats up all your memory. I see. Actually, well, no, it doesn't. Ever since Windows 1.0, in 1987, the operating system only loads pages as they are used. If you have a 15MB executable and you only use code that spans 2MB worth of pages, you will only ever load 2MBfrom disk to RAM. In fact if you have a modern version of Windows, the OS will automatically rearrange those pages on the hard drive so that they're consecutive, which makes the program start even faster next time.

哦。程序吃掉了你所有的内存。我明白了。实际上不是,从windows1.0开始以来就不是这种情况了,1987年开始windows1.0就只会将实际上用到的内存页面装入内存,如果你的执行文件有十五兆那么大,而你实际上只会用到两兆那么大的内存页面,因此你只会从磁盘里读出两兆磁盘页面并装入内存。实际上如果你有一个现代版本的windows操作系统的话,那么操作系统会自动地重新安排那些磁盘上的页面,让他们变成连续的页面。这样程序下次启动的时候就变得更快。

And I don't think anyone will deny that on today's overpowered, under-priced computers, loading a huge program is still faster than loading a small program was even 5 years ago. So what's the problem?

我觉得如今所有的人都不会否认:现在过于强大的但是超便宜的计算机,哪怕装入一个巨大的程序仍然比五年前装载一个很小的程序要快得多。那么问题到底是什么呢?

RA Downes gives us a clue. It looks like he spent hours dissecting a small Microsoft utility, apparently enraged that it was a whole megabyte in size. (That's 3.15 cents of hard drive space at the time he wrote the article). In his opinion, the program should have been around 95% smaller. The joke is that the utility he dissected is something called RegClean, which you've probably never heard of. This is a program that goes through your Windows registry looking for things that aren't being used and deleting them. You have to be a little bit on the obsessive-compulsive side to care about cleaning up unused parts of your registry. So I'm starting to suspect that fretting about bloatware is more of a mental health problem than a software problem.

RA Downes给了我们一些线索。看起来他似乎花了几个小时解剖一个很小的微软工具程序。很显然他对这个程序占据了整整几个兆的磁盘空间感到很愤怒(当然他写这篇文章的时候每兆硬盘空间大概只花3.15美分左右)在他看来这个程序可以压缩95%左右,他解剖的这个工具是一个叫做注册表项清理程序。也许你从来没有听说过,这个程序会扫描你的操作系统注册表,寻找那些已经没有用的表项,并且删除这些表项。你可能得要有些偏执型的人格,才会想要去关心这种没有用过的注册表项之类的事情。所以我开始怀疑焦虑膨胀软件其实是一种精神问题而不是软件问题。

In fact there are lots of great reasons for bloatware. For one, if programmers don't have to worry about how large their code is, they can ship it sooner. And that means you get more features, and features make your life better (when you use them) and don't usually hurt (when you don't). If your software vendor stops, before shipping, and spends two months squeezing the code down to make it 50% smaller, the net benefit to you is going to be imperceptible. Maybe, just maybe, if you tend to keep your hard drive full, that's one more Duran Duran MP3 you can download. But the loss to you of waiting an extra two months for the new version is perceptible, and the loss to the software company that has to give up two months of sales is even worse.

实际上制作膨胀软件倒是有着很多合理的理由。举例子说:如果程序员们不需要担心他们的代码会变得多大,他们就可以发布得更快。这意味着你就能得到更多的特性,而这些特性(当你使用的时候)会让你的生活变得更加美好,不用的话当然也伤不到你。如果你的软件提供商在发布之前停下来,然后花上两个月把代码压缩到原来的50%,这样做给你带来的好处几乎没有办法察觉到。也许,当然只是也许,如果你倾向于把你的硬盘塞得更满一点的话,这种影响也许就是你多下载的一首DuranDuran mp3歌曲而已。但是你等待获取新的版本的额外两个月来所造成的损失却是能察觉到的。软件公司因为这两个月造成的损失会更糟。

A lot of software developers are seduced by the old "80/20" rule. Itseems to make a lot of sense: 80% of the people use 20% of the features. So you convince yourself that you only need to implement 20% of the features, and you can still sell 80% as many copies.

很多软件开发人员会被二八原则所迷惑。因为看起来很合理:80%的人只会用20%的功能。于是你说服自己只需要实现20%的功能就可以了,你仍然可以卖出80%的软件拷贝。

Unfortunately, it's never the same 20%. Everybody uses a different set of features. In the last 10 years I have probably heard of dozens of companies who, determined not to learn from each other, tried to release "lite" word processors that only implement 20% of the features. This story is as old as the PC. Most of the time, what happens is that they give their program to a journalist to review, and the journalist reviews it by writing their review using the new word processor, and then the journalist tries to find the "word count" feature which they need because most journalists have precise word count requirements, and it's not there, because it's in the "80% that nobody uses," and the journalist ends up writing a story that attempts to claim simultaneously that lite programs are good, bloat is bad, and I can't use this damn thing 'cause it won't count my words. If I had a dollar forevery time this has happened I would be very happy.

不幸的是,每个人使用的20%的特性是不可能相同的。在过去的十年里,我大概已经听到有一打公司,这些公司决定不去互相学习,而是要发布一种轻量级的字处理器。这种字处理器只实现20%的常用功能。这种故事大概跟pc的诞生一样老了,通常会发生的情况就是他们会把这个程序交给一个记者来审核。而记者审核这个软件的方式就是用这个新的字处理器软件来写一篇文章,然后这个记者会尝试去寻找字数统计这项功能(因为很多记者都需要精确的字数统计功能)然后发现这个新文字处理器没有这项功能,因为这项功能在80%没有人用的功能列表里面。这个记者最后会写一篇故事,一边尝试解释说轻量级的程序怎么怎么好,膨胀软件怎么怎么糟,一边说我不能用这个软件,因为这玩意儿没办法帮我统计字数。如果这种情况每发生一次,我就能收到一美元的话,我肯定乐疯了。

When you start marketing your "lite" product, and you tell people, "hey, it's lite, only 1MB," they tend to be very happy, then they ask you if it has their crucial feature, and it doesn't, so they don't buy your product.

当你开始构建自己的轻量级产品的时候,你会告诉人们:嘿,这个程序很轻量,只占用1兆磁盘空间。他们会很高兴,然后他们就会问你:是不是提供那些对他们来讲至关重要的功能,如果它不能提供那么他们就不会买你的产品。

Bottom line: if your strategy is "80/20", you're going to have trouble selling software. That's just reality. This strategy is as old as the software industry itself and it just doesn't pay; what's surprising is how many executives at fast companies think that it's going to work.

最终结果就是如果你的策略是二八原则,那么你想要卖出你的软件就很困难,这就是事实。这种策略几乎已经和软件行业自身一样老了,人们早就知道这种策略没办法奏效。但是令人吃惊的是有无数的快速初创公司执行总裁们总是会觉得这是能够奏效的策略。

Jamie Zawinski says it best, discussing the original version of Netscape that changed the world. "Convenient though it would be if it were true, Mozilla [Netscape 1.0] is not big because it's full of useless crap. Mozilla is big because your needs are big. Your needs are big because the Internet is big. There are lots of small, lean web browsers out there that, incidentally, do almost nothing useful. But being a shining jewel of perfection was not a goal when we wrote Mozilla."

Jamie Zawinski在讨论最初改变世界的网景浏览器的时候,说的最好:真的很方便。Mozilla1.0不是很大,因为它包含的都是没有用的东西。Mozilla变很大是因为你的需求很大,你的需求很大是因为因特网很大。如果你需要,外面还有一堆很小的轻量级的浏览器,但是这些玩意儿几乎啥都干不了。我们最初设计Mozilla的时候并没有打算把它做成一个闪闪发光的完美珠宝。