苹果的错误

Paul Graham 2009-11-01

苹果的错误

2009年11月

我认为苹果没有意识到App Store审批流程有多糟糕。或者说,我认为他们没有意识到这有多重要。

苹果运营App Store的方式损害了他们在程序员中的声誉,超过了他们做过的任何其他事情。他们在程序员中的声誉曾经很好。过去你听到的关于苹果最常见的抱怨是,他们的粉丝盲目崇拜他们。App Store改变了这一点。现在很多程序员开始把苹果视为邪恶。

苹果曾经与程序员之间的良好意愿有多少因为App Store而丧失了?三分之一?一半?而这还只是到目前为止。App Store是一个持续的因果报应泄露。

苹果是如何陷入这个混乱局面的?

他们的根本问题是他们不理解软件。

他们对待iPhone应用就像对待他们通过iTunes销售的音乐一样。苹果是渠道;他们拥有用户;如果你想接触用户,你就必须按照他们的条件来做。唱片公司勉强同意了。但这种模式不适用于软件。中介拥有用户是行不通的。软件业在1980年代初期就认识到这一点,当时像VisiCorp这样的公司表明,虽然”软件”和”出版商”这两个词很契合,但基本概念并不契合。软件不像音乐或书籍。对于第三方来说,作为开发者和用户之间的中介太复杂了。然而,这正是苹果通过App Store试图成为的:软件出版商。而且是一个特别越界的出版商,有着挑剔的品味和严格执行的内部风格。

如果软件出版在1980年行不通,那么在软件开发从少数大型发布演变为持续的小型发布流的今天,它就更行不通了。但苹果也不理解这一点。他们的产品开发模式来自硬件。他们工作直到认为产品完成,然后发布。对于硬件你必须这样做,但因为软件很容易改变,其设计可以从进化中受益。现在开发应用程序的标准方式是快速发布和迭代。这意味着每次发布新版本时都有漫长而随机的延迟是灾难性的。

显然,苹果的态度是开发者在向App Store提交新版本时应该更加小心。他们会这么说。但尽管他们很强大,却不足以扭转技术的演变。程序员使用快速发布和迭代不是出于懒惰。他们使用它是因为它能产生最好的结果。通过阻碍这个过程,苹果让他们做糟糕的工作,程序员讨厌这一点,就像苹果自己讨厌一样。

如果苹果在发现OS X中的严重错误时,不能立即发布软件更新,而是必须将代码提交给一个中介,这个中介将代码搁置一个月,然后因为它包含一个他们不喜欢的图标而拒绝它,苹果会喜欢吗?

通过破坏软件开发,苹果得到了与他们意图相反的结果:当前在App Store中可用的应用版本往往是旧的和有错误的。一个开发者告诉我:“由于他们的流程,App Store充满了半成品应用程序。我几乎每天都制作一个新版本发布给测试用户。App Store上的版本感觉老旧和糟糕。”

我相信很多开发者都有这种感觉:一种情绪是”我并不真正为App Store里的东西感到骄傲”,另一种情绪是”说真的,这是苹果的错。”

另一个人写道:“我认为他们认为审批流程通过确保质量来帮助用户。实际上,像我们这样的错误总是能通过,然后需要4-8周才能让这个错误修复得到批准,让用户认为iPhone应用有时就是无法工作。对苹果来说更糟糕的是,这些应用在其他有即时审批流程的平台上工作得很好。”

实际上,我认为苹果有第三个误解:所有关于App Store审批的抱怨都不是一个严重的问题。他们肯定听到开发者在抱怨。但合作伙伴和供应商总是在抱怨。如果他们不抱怨反而是个坏迹象;这意味着你对他们太宽松了。同时,iPhone的销售情况比以往任何时候都好。那么他们为什么需要修复任何东西呢?

他们在短期内能够虐待开发者,是因为他们制造了如此出色的硬件。几天前我刚买了一台新的27英寸iMac。它很棒。屏幕太亮了,磁盘出奇地响,但它如此美丽,让你无法让自己在意。

所以我买了它,但这次是带着疑虑买的。我感觉就像购买一个人权记录不佳的国家制造的东西时的感觉。这是新的。过去我从苹果买东西时是一种纯粹的快乐。哦,天啊!他们制造了这么棒的东西。这次感觉像是浮士德式的交易。他们制造了这么棒的东西,但他们却是如此混蛋。我真的想支持这家公司吗?

苹果应该关心像我这样的人的想法吗?

如果他们疏远了一小部分用户,这有什么区别?

有几个原因他们应该关心。一个是这些用户是他们想要作为员工的人。如果你的公司看起来邪恶,最好的程序员不会为你工作。从90年代开始,这对微软伤害很大。程序员开始为在那里工作感到尴尬。感觉像是出卖自己。当微软的人和其他程序员交谈并提到他们工作的地方时,有很多关于”投靠黑暗面”的自嘲笑话。

但对微软来说真正的问题不是他们雇用的人的尴尬。而是他们从未得到的人。你知道谁得到了他们吗?谷歌和苹果。如果微软是帝国,他们就是反抗军联盟。谷歌和苹果今天比微软做得好得多,很大程度上是因为他们得到了更多最好的人才。

为什么程序员对雇主的道德如此挑剔?部分原因是他们有能力挑剔。最好的程序员可以在任何他们想的地方工作。他们不必为他们有疑虑的公司工作。

但我认为程序员挑剔的另一个原因是邪恶滋生愚蠢。一个通过行使权力获胜的组织开始失去通过做更好的工作获胜的能力。对于一个聪明人来说,在一个最好的想法不是获胜的想法的地方工作并不有趣。我认为谷歌如此热衷于”不作恶”的原因,与其说是为了给外界留下印象,不如说是为了预防自己变得傲慢。

迄今为止,这对谷歌有效。他们变得更加官僚化,但除此之外,他们似乎坚持了原来的原则。苹果似乎不太如此。当你现在看著名的1984年广告时,更容易想象苹果是屏幕上的独裁者,而不是拿着锤子的女人。事实上,如果你阅读独裁者的演讲,它听起来与App Store的预言惊人地相似:“我们已经战胜了无原则的事实传播。我们已经在历史上第一次创造了一个纯粹思想的花园,每个工人都可以在那里不受矛盾和混乱真理的害虫侵扰而安全地绽放。”

苹果应该关心程序员对他们的看法的另一个原因是,当你销售一个平台时,开发者决定你的成败。如果说有谁应该知道这一点,那应该是苹果。VisiCalc成就了Apple II。

程序员为他们使用的平台构建应用程序。大多数应用程序——大多数创业公司,可能——都源自个人项目。苹果本身就是这样。苹果制造微型计算机是因为史蒂夫·沃兹尼亚克自己想要一个。他买不起小型计算机。微软同样开始为微型计算机制作解释器,因为比尔·盖茨和保罗·艾伦有兴趣使用它们。不构建创始人使用的东西的创业公司是罕见的。

有这么多iPhone应用的主要原因是这么多程序员有iPhone。他们可能从文章中知道黑莓有这样那样的市场份额。但实际上就好像RIM不存在一样。如果他们要构建什么东西,他们希望自己能够使用它,这意味着构建iPhone应用。

所以程序员继续开发iPhone应用,尽管苹果继续虐待他们。他们就像陷入虐待关系中的人。他们被iPhone如此吸引,无法离开。但他们在寻找出路。一个人写道:“虽然我确实很享受为iPhone开发,但他们在App Store上施加的控制并没有给我开发应用程序的动力。事实上,除非绝对必要,否则我不打算再制作任何iPhone应用程序。“

有什么能打破这个循环吗?

到目前为止我见过的设备都不能。Palm和RIM没有希望。唯一可信的竞争者是Android。但Android是个孤儿;谷歌并不真正关心它,不像苹果关心iPhone那样。苹果关心iPhone就像谷歌关心搜索一样。

手持设备的未来是由苹果锁定的吗?

这是一个令人担忧的前景。会有另一个像我们在1990年代那样的沉闷单一文化是件令人沮丧的事。1995年,为终端用户编写软件实际上等同于编写Windows应用程序。我们对这种前景的恐惧是推动我们开始构建Web应用程序的最大单一因素。

至少我们现在知道要打破苹果的锁定需要什么。你必须让iPhone离开程序员的手。如果程序员使用其他设备进行移动网络访问,他们会开始为该设备开发应用程序。

你如何制造一个比iPhone更受程序员喜爱的设备?你不可能制造出设计更好的设备。苹果在这方面没有留下空间。所以这个替代设备可能无法通过普遍吸引力获胜。它必须凭借对程序员特有的某种吸引力获胜。

吸引程序员的一种方式是通过软件。如果你能想出一个程序员必须有但在iPhone受限制世界中不可能的应用程序,你大概能让他们转换。

如果程序员开始使用手持设备作为开发机器,这肯定会发生——如果手持设备像笔记本电脑取代台式电脑一样取代笔记本电脑。你对开发机器需要的控制比苹果会让你对iPhone的控制更多。

有人能制造一个你可以像手机一样放在口袋里,但同时又能作为开发机器工作的设备吗?很难想象它会是什么样子。但我已经学到了永远不要对技术说永远。按现在的标准,一个能作为开发机器工作的手机大小的设备并不比按1995年的标准iPhone本身看起来更神奇。

我现在的开发机器是一台MacBook Air,我在办公室里用它连接外接显示器和键盘,旅行时单独使用。如果有半个大小的版本我会更喜欢。那仍然不足以像手机一样随身携带到处带着,但我们还在4倍左右的差距内。当然这个差距是可以弥合的。

事实上,让我们把它变成一个RFS(需求说明书)。寻人:拿锤子的女人。

注释

[1] 当谷歌采用”不作恶”时,他们还如此之小,以至于没有人会期望他们如此。

[2] 顺便说一句,1984年广告中的独裁者不是微软;是IBM。IBM在那些日子里看起来可怕得多,但他们比现在的苹果对开发者更友好。

[3] 他甚至买不起显示器。这就是为什么Apple I使用电视机作为显示器。

[4] 我交谈的几个人提到他们多么喜欢iPhone SDK。问题不是苹果的产品,而是他们的政策。幸运的是政策是软件;如果他们愿意,苹果可以立即改变它们。很方便,不是吗?

感谢Sam Altman、Trevor Blackwell、Ross Boucher、James Bracy、Gabor Cselle、Patrick Collison、Jason Freedman、John Gruber、Joe Hewitt、Jessica Livingston、Robert Morris、Teng Siong Ong、Nikhil Pandit、Savraj Singh和Jared Tame阅读本文草稿。

Apple’s Mistake

Want to start a startup? Get funded by Y Combinator. November 2009

I don’t think Apple realizes how badly the App Store approval process is broken. Or rather, I don’t think they realize how much it matters that it’s broken.

The way Apple runs the App Store has harmed their reputation with programmers more than anything else they’ve ever done. Their reputation with programmers used to be great. It used to be the most common complaint you heard about Apple was that their fans admired them too uncritically. The App Store has changed that. Now a lot of programmers have started to see Apple as evil.

How much of the goodwill Apple once had with programmers have they lost over the App Store? A third? Half? And that’s just so far. The App Store is an ongoing karma leak.

How did Apple get into this mess?

Their fundamental problem is that they don’t understand software.

They treat iPhone apps the way they treat the music they sell through iTunes. Apple is the channel; they own the user; if you want to reach users, you do it on their terms. The record labels agreed, reluctantly. But this model doesn’t work for software. It doesn’t work for an intermediary to own the user. The software business learned that in the early 1980s, when companies like VisiCorp showed that although the words “software” and “publisher” fit together, the underlying concepts don’t. Software isn’t like music or books. It’s too complicated for a third party to act as an intermediary between developer and user. And yet that’s what Apple is trying to be with the App Store: a software publisher. And a particularly overreaching one at that, with fussy tastes and a rigidly enforced house style.

If software publishing didn’t work in 1980, it works even less now that software development has evolved from a small number of big releases to a constant stream of small ones. But Apple doesn’t understand that either. Their model of product development derives from hardware. They work on something till they think it’s finished, then they release it. You have to do that with hardware, but because software is so easy to change, its design can benefit from evolution. The standard way to develop applications now is to launch fast and iterate. Which means it’s a disaster to have long, random delays each time you release a new version.

Apparently Apple’s attitude is that developers should be more careful when they submit a new version to the App Store. They would say that. But powerful as they are, they’re not powerful enough to turn back the evolution of technology. Programmers don’t use launch-fast-and-iterate out of laziness. They use it because it yields the best results. By obstructing that process, Apple is making them do bad work, and programmers hate that as much as Apple would.

How would Apple like it if when they discovered a serious bug in OS X, instead of releasing a software update immediately, they had to submit their code to an intermediary who sat on it for a month and then rejected it because it contained an icon they didn’t like?

By breaking software development, Apple gets the opposite of what they intended: the version of an app currently available in the App Store tends to be an old and buggy one. One developer told me: “As a result of their process, the App Store is full of half-baked applications. I make a new version almost every day that I release to beta users. The version on the App Store feels old and crappy.”

I’m sure that a lot of developers feel this way: One emotion is “I’m not really proud about what’s in the App Store”, and it’s combined with the emotion “Really, it’s Apple’s fault.”

Another wrote: “I believe that they think their approval process helps users by ensuring quality. In reality, bugs like ours get through all the time and then it can take 4-8 weeks to get that bug fix approved, leaving users to think that iPhone apps sometimes just don’t work. Worse for Apple, these apps work just fine on other platforms that have immediate approval processes.”

Actually I suppose Apple has a third misconception: that all the complaints about App Store approvals are not a serious problem. They must hear developers complaining. But partners and suppliers are always complaining. It would be a bad sign if they weren’t; it would mean you were being too easy on them. Meanwhile the iPhone is selling better than ever. So why do they need to fix anything?

They get away with maltreating developers, in the short term, because they make such great hardware. I just bought a new 27” iMac a couple days ago. It’s fabulous. The screen’s too shiny, and the disk is surprisingly loud, but it’s so beautiful that you can’t make yourself care.

So I bought it, but I bought it, for the first time, with misgivings. I felt the way I’d feel buying something made in a country with a bad human rights record. That was new. In the past when I bought things from Apple it was an unalloyed pleasure. Oh boy! They make such great stuff. This time it felt like a Faustian bargain. They make such great stuff, but they’re such assholes. Do I really want to support this company?

Should Apple care what people like me think?

What difference does it make if they alienate a small minority of their users?

There are a couple reasons they should care. One is that these users are the people they want as employees. If your company seems evil, the best programmers won’t work for you. That hurt Microsoft a lot starting in the 90s. Programmers started to feel sheepish about working there. It seemed like selling out. When people from Microsoft were talking to other programmers and they mentioned where they worked, there were a lot of self-deprecating jokes about having gone over to the dark side.

But the real problem for Microsoft wasn’t the embarrassment of the people they hired. It was the people they never got. And you know who got them? Google and Apple. If Microsoft was the Empire, they were the Rebel Alliance. And it’s largely because they got more of the best people that Google and Apple are doing so much better than Microsoft today.

Why are programmers so fussy about their employers’ morals? Partly because they can afford to be. The best programmers can work wherever they want. They don’t have to work for a company they have qualms about.

But the other reason programmers are fussy, I think, is that evil begets stupidity. An organization that wins by exercising power starts to lose the ability to win by doing better work. And it’s not fun for a smart person to work in a place where the best ideas aren’t the ones that win. I think the reason Google embraced “Don’t be evil” so eagerly was not so much to impress the outside world as to inoculate themselves against arrogance.

That has worked for Google so far. They’ve become more bureaucratic, but otherwise they seem to have held true to their original principles. With Apple that seems less the case. When you look at the famous 1984 ad now, it’s easier to imagine Apple as the dictator on the screen than the woman with the hammer. In fact, if you read the dictator’s speech it sounds uncannily like a prophecy of the App Store: “We have triumphed over the unprincipled dissemination of facts. We have created, for the first time in all history, a garden of pure ideology, where each worker may bloom secure from the pests of contradictory and confusing truths.”

The other reason Apple should care what programmers think of them is that when you sell a platform, developers make or break you. If anyone should know this, Apple should. VisiCalc made the Apple II.

And programmers build applications for the platforms they use. Most applications—most startups, probably—grow out of personal projects. Apple itself did. Apple made microcomputers because that’s what Steve Wozniak wanted for himself. He couldn’t have afforded a minicomputer. Microsoft likewise started out making interpreters for little microcomputers because Bill Gates and Paul Allen were interested in using them. It’s a rare startup that doesn’t build something the founders use.

The main reason there are so many iPhone apps is that so many programmers have iPhones. They may know, because they read it in an article, that Blackberry has such and such market share. But in practice it’s as if RIM didn’t exist. If they’re going to build something, they want to be able to use it themselves, and that means building an iPhone app.

So programmers continue to develop iPhone apps, even though Apple continues to maltreat them. They’re like someone stuck in an abusive relationship. They’re so attracted to the iPhone that they can’t leave. But they’re looking for a way out. One wrote: “While I did enjoy developing for the iPhone, the control they place on the App Store does not give me the drive to develop applications as I would like. In fact I don’t intend to make any more iPhone applications unless absolutely necessary.”

Can anything break this cycle?

No device I’ve seen so far could. Palm and RIM haven’t a hope. The only credible contender is Android. But Android is an orphan; Google doesn’t really care about it, not the way Apple cares about the iPhone. Apple cares about the iPhone the way Google cares about search.

Is the future of handheld devices one locked down by Apple?

It’s a worrying prospect. It would be a bummer to have another grim monoculture like we had in the 1990s. In 1995, writing software for end users was effectively identical with writing Windows applications. Our horror at that prospect was the single biggest thing that drove us to start building web apps.

At least we know now what it would take to break Apple’s lock. You’d have to get iPhones out of programmers’ hands. If programmers used some other device for mobile web access, they’d start to develop apps for that instead.

How could you make a device programmers liked better than the iPhone? It’s unlikely you could make something better designed. Apple leaves no room there. So this alternative device probably couldn’t win on general appeal. It would have to win by virtue of some appeal it had to programmers specifically.

One way to appeal to programmers is with software. If you could think of an application programmers had to have, but that would be impossible in the circumscribed world of the iPhone, you could presumably get them to switch.

That would definitely happen if programmers started to use handhelds as development machines—if handhelds displaced laptops the way laptops displaced desktops. You need more control of a development machine than Apple will let you have over an iPhone.

Could anyone make a device that you’d carry around in your pocket like a phone, and yet would also work as a development machine? It’s hard to imagine what it would look like. But I’ve learned never to say never about technology. A phone-sized device that would work as a development machine is no more miraculous by present standards than the iPhone itself would have seemed by the standards of 1995.

My current development machine is a MacBook Air, which I use with an external monitor and keyboard in my office, and by itself when traveling. If there was a version half the size I’d prefer it. That still wouldn’t be small enough to carry around everywhere like a phone, but we’re within a factor of 4 or so. Surely that gap is bridgeable.

In fact, let’s make it an RFS. Wanted: Woman with hammer.

Notes

[1] When Google adopted “Don’t be evil,” they were still so small that no one would have expected them to be, yet.

[2] The dictator in the 1984 ad isn’t Microsoft, incidentally; it’s IBM. IBM seemed a lot more frightening in those days, but they were friendlier to developers than Apple is now.

[3] He couldn’t even afford a monitor. That’s why the Apple I used a TV as a monitor.

[4] Several people I talked to mentioned how much they liked the iPhone SDK. The problem is not Apple’s products but their policies. Fortunately policies are software; Apple can change them instantly if they want to. Handy that, isn’t it?

Thanks to Sam Altman, Trevor Blackwell, Ross Boucher, James Bracy, Gabor Cselle, Patrick Collison, Jason Freedman, John Gruber, Joe Hewitt, Jessica Livingston, Robert Morris, Teng Siong Ong, Nikhil Pandit, Savraj Singh, and Jared Tame for reading drafts of this.