在Google和亚马逊(译)
一个前亚马逊雇员和现谷歌员工的不小心泄密。
You were not supposed to be reading this post unless Steve Yegge, a current Google and ex Amazon employee made a midnight mistake on Google Plus. The post has been removed but left the billion dollar tech industry dazzled. Here is the complete post…
如果不是Steve Yegge,一个现谷歌员工和前亚马逊雇员在Google+上的一个三更 半夜的误操作,你本来不会读到这个贴子。原贴已经被删除但一整个数十亿美元 的业界都被震动了。以下是完整的原贴…[本来是要发给谷歌内部员工们的,脑 袋一晕换成公共账号发出去了。维基上称这是IT界的Jerry Maguire(好莱坞电影 甜心先生)时刻]
I was at Amazon for about six and a half years, and now I've been at Google for that long. One thing that struck me immediately about the two companies – an impression that has been reinforced almost daily – is that Amazon does everything wrong, and Google does everything right. Sure, it's a sweeping generalization, but a surprisingly accurate one. It's pretty crazy. There are probably a hundred or even two hundred different ways you can compare the two companies, and Google is superior in all but three of them, if I recall correctly. I actually did a spreadsheet at one point but Legal wouldn't let me show it to anyone, even though recruiting loved it.
我在亚马逊工作了大约六年半的时间,现在我在谷歌也已经差不多一样久了。关 于这两个公司从一开始就让我觉得不可思议的一件事情——一个几乎天天都在加强 的印象是——怎么亚马逊几乎每件事情都做错,而谷歌每件事情都做对。当然,这 是一个很泛泛的推论,但同时又神奇的是准确的。真的太疯狂了。你说不定有一 百种甚至两百种不同的方式去比较这俩公司,而谷歌在除了三种方式之外其余全 部的比较都胜出,如果我记得没错的话。我曾经有个时间真的做了一个[关于这些 对比]的表格,但法务部门不允许我把它秀给任何人看,虽然招聘部门非常喜欢 [这个表格]。
I mean, just to give you a very brief taste: Amazon's recruiting process is fundamentally flawed by having teams hire for themselves, so their hiring bar is incredibly inconsistent across teams, despite various efforts they've made to level it out. And their operations are a mess; they don't really have SREs and they make engineers pretty much do everything, which leaves almost no time for coding - though again this varies by group, so it's luck of the draw. They don't give a single shit about charity or helping the needy or community contributions or anything like that. Never comes up there, except maybe to laugh about it. Their facilities are dirt-smeared cube farms without a dime spent on decor or common meeting areas. Their pay and benefits suck, although much less so lately due to local competition from Google and Facebook. But they don't have any of our perks or extras – they just try to match the offer-letter numbers, and that's the end of it. Their code base is a disaster, with no engineering standards whatsoever except what individual teams choose to put in place.
我是说,为了让你大致了解一下[这个表格里的内容]:亚马逊的招聘流程是从根 本上有缺陷的,因为各个团队都负责招自己的人,从而团队之间的招人标准是让 人无法致信的良莠不齐,尽管他们已经各种努力的想让标准变得更加统一。此外 他们的运营一团糟;他们没有SRE[从维基和上下文看应该是网站可靠性工程 Site Reliability Engineering的缩写],他们几乎让[研发]工程师做所有的事情, 以致几乎没有时间coding了—虽然这也是各团队之间差异很大的,就像买彩票似的 要看运气)。又如他们根本不关心慈善或者帮助有需要的人士或者对社区的贡献 或者诸如此类。他们只把这些事情当做笑话。再如他们的办公室简直就是个脏兮 兮的工位农场,他们一分钱也不愿花在装修或者公共会议区上。他们的薪水和福 利烂透了,虽然最近因为谷歌和脸书的挖人竞争这些已经有所好转。但他们没有 任何我们有的各种额外津贴——他们只让工资单上的数字一致就到此为止了。他们 的代码base是一个灾难,没有任何工程标准,除了各个团队自己随便定的标准。
To be fair, they do have a nice versioned-library system that we really ought to emulate, and a nice publish-subscribe system that we also have no equivalent for. But for the most part they just have a bunch of crappy tools that read and write state machine information into relational databases. We wouldn't take most of it even if it were free.
说句公道话,他们的确有一个很好的版本管理起来的我们真的需要认真学习的库 系统,和一个我们一样没有对应系统的很好的publish-subscribe系统。但除此之 外大多数情况下他们只有一串能在关系数据库里读写状态机的土得掉渣的工具而 已了。这些东西即使白给我们也不见得要的。
I think the pubsub system and their library-shelf system were two out of the grand total of three things Amazon does better than google.
我认为这个pubsub系统和他们的库架{book-shelf:书架;library-shelf:库架}是 我所说的总共三样亚马逊做得比谷歌好的事情里的两样。
I guess you could make an argument that their bias for launching early and iterating like mad is also something they do well, but you can argue it either way. They prioritize launching early over everything else, including retention and engineering discipline and a bunch of other stuff that turns out to matter in the long run. So even though it's given them some competitive advantages in the marketplace, it's created enough other problems to make it something less than a slam-dunk.
我猜你可能会跟我争他们对于尽早发布和发疯一样的迭代是他们做得[比我们]好 的剩下的那件事,但你也可以持相反观点。他们把尽早发布放在其他一切之前, 包括留住客户和工程规范和其他一整串最终会体现出重要性来的事情。所以这点 虽然能给他们在市场上争得一点先机,但同时也给他们制造了足够多的其他麻烦, 所以并不是像灌篮一样。
But there's one thing they do really really well that pretty much makes up for ALL of their political, philosophical and technical screw-ups.
但有一件事他们做得真的真的非常好基本上能弥补他们所有的政治上的、哲学上 的和技术上的乱七八糟。
Jeff Bezos is an infamous micro-manager. He micro-manages every single pixel of Amazon's retail site. He hired Larry Tesler, Apple's Chief Scientist and probably the very most famous and respected human-computer interaction expert in the entire world, and then ignored every goddamn thing Larry said for three years until Larry finally – wisely – left the company. Larry would do these big usability studies and demonstrate beyond any shred of doubt that nobody can understand that frigging website, but Bezos just couldn't let go of those pixels, all those millions of semantics-packed pixels on the landing page. They were like millions of his own precious children. So they're all still there, and Larry is not.
Jeff Bezos是个臭名昭彰的微管理控。亚马逊零售网站上的每一个像素都是他微 管理的。他雇了Larry Tesler,苹果的首席科学家和整个世界上舍我其谁的最有 名的、最受尊重的人机交互专家,然后整整三年把Larry说的每件事情都见鬼的当 成放屁,直到Larry最终——明智的——离开了公司。Larry会做一连串很好的可用性 调研然后毫无疑议的向Bezos展示没人能整明白那个见鬼的网站,但Bezos就是不 肯放开那些像素,那几百万显示在首页上的意义不凡的像素。它们[这些像素]就 像他自己生的宝贝孩子一样。所以它们至今还在,而Larry走了。
Micro-managing isn't that third thing that Amazon does better than us, by the way. I mean, yeah, they micro-manage really well, but I wouldn't list it as a strength or anything. I'm just trying to set the context here, to help you understand what happened. We're talking about a guy who in all seriousness has said on many public occasions that people should be paying him to work at Amazon. He hands out little yellow stickies with his name on them, reminding people "who runs the company" when they disagree with him. The guy is a regular… well, Steve Jobs, I guess. Except without the fashion or design sense. Bezos is super smart; don't get me wrong. He just makes ordinary control freaks look like stoned hippies.
顺便说一句,微管理也不是亚马逊做得比我们好的第三件事。我是说,对,他们 真的微管理得非常棒,但我不会把这当成一个强项或任何[值得称道的]东西。我 只是在做一些肯景交待,帮助你理解接下来发生的事情。我们在聊的这个家伙很 多次在公开场合非常严肃的指出人们[有幸]能够到亚马逊工作应该付给他钱[而不 是反过来让他发工资!]。当人们与他意见相左时他随时会掏出一张黄色便笺递给 他们,上面还写着他的名字,以提醒他们“这公司是谁的谁说了算?”[小心,我猜 集满两张黄色便笺可以换一张红的!]。这家伙是一个一般性的…Steve Jobs, 我猜。除了他没有任何fashion和设计上的感觉。Bezos是非常聪明的,这一点不 要误读我。他只是让一般的控制狂看上去像吸了大麻的嘻皮士。
So one day Jeff Bezos issued a mandate. He's doing that all the time, of course, and people scramble like ants being pounded with a rubber mallet whenever it happens. But on one occasion – back around 2002 I think, plus or minus a year – he issued a mandate that was so out there, so huge and eye-bulgingly ponderous, that it made all of his other mandates look like unsolicited peer bonuses.
所以有一天Jeff Bezos发布了一项命令。当然,他天天干这个[发布命令],而每 次人们就会像被橡皮锤子震到的蚂蚁一样团团转。但是那一次,我想大概是2002 年前后一年左右,他发布的命令出格到人眼球都鼓出来,简直让他发布的其他命 令看起来像是在发奖金。
His Big Mandate went something along these lines:
他的伟大指示大概是这样的几条:
- All teams will henceforth expose their data and functionality
through service interfaces.
所有团队将从今往后通过服务接口暴露其数据和功能。
- Teams must communicate with each other through these interfaces.
各团队必须通过这些接口互相通讯。
- There will be no other form of interprocess communication allowed:
no direct linking, no direct reads of another team's data store, no
shared-memory model, no back-doors whatsoever. The only
communication allowed is via service interface calls over the
network.
除此之外其他任何进程间通讯都被禁止:不许直接链接,不许直接读取其他团 队的数据仓储,不许使用共享内存,不许任何的后门。唯一能用的通讯方式就 是通过网络使用这些服务接口。
- It doesn't matter what technology they use. HTTP, Corba, Pubsub,
custom protocols – doesn't matter. Bezos doesn't care.
各团队可以随便使用任何技术。Http,Corba,Pubsub,自定义协议——不管。 Bezos不关心。
- All service interfaces, without exception, must be designed from
the ground up to be externalizable. That is to say, the team must
plan and design to be able to expose the interface to developers in
the outside world. No exceptions.
所有服务接口,无一例外,必须自底向上设计成可开放的。也就是说,各团队 必须准备有一天把这些接口开放给外部开发者。没有例外。
- Anyone who doesn't do this will be fired.
不这样做就滚蛋。
- Thank you; have a nice day!
谢谢大家,祝大家愉快。
Ha, ha! You 150-odd ex-Amazon folks here will of course realize immediately that #7 was a little joke I threw in, because Bezos most definitely does not give a shit about your day.
哈,哈!你们这些150多个前亚马逊员工[应该是谷歌内部的有150多个,因为这个 贴子是写给内部的]当然马上会意识到第7条是我扔进去的一个无伤大雅的玩笑, 因为你们过得愉不愉快这个问题对Bezos并不比一砣屎能引起他更多关注。
#6, however, was quite real, so people went to work. Bezos assigned a couple of Chief Bulldogs to oversee the effort and ensure forward progress, headed up by Uber-Chief Bear Bulldog Rick Dalzell. Rick is an ex-Armgy Ranger, West Point Academy graduate, ex-boxer, ex-Chief Torturer slash CIO at Wal*Mart, and is a big genial scary man who used the word "hardened interface" a lot. Rick was a walking, talking hardened interface himself, so needless to say, everyone made LOTS of forward progress and made sure Rick knew about it.
第6条,却是千真万确不开玩笑的,所以大家都开工干活。Bezos放出由总钻风 Rick Dalzell领头的几条斗牛犬专门来监督大家有没有努力干活并取得进展。 Rick是部队出身,西点军校毕业,打过拳击,前沃尔玛首席用刑官和CIO,一个很 吓人的老是说什么“硬接口”的人。Rick自己就是一个会走路会说话的硬接口,所 以不用说,每个人都取得了很多进展并确保Rick知道[这些进展]。
Over the next couple of years, Amazon transformed internally into a service-oriented architecture. They learned a tremendous amount while effecting this transformation. There was lots of existing documentation and lore about SOAs, but at Amazon's vast scale it was about as useful as telling Indiana Jones to look both ways before crossing the street. Amazon's dev staff made a lot of discoveries along the way. A teeny tiny sampling of these discoveries included:
接下来的这几年,亚马逊内部变异成了一个面向服务的架构(SOA)。他们在取得 这个变化的过程中学到了很多很多。关于SOA市面上有很多文档和智慧,但这些跟 亚马逊的深度比起来其有用程度就像去告诉Indiana Jones[夺宝奇兵主角]过马路 要两边看车。[这个变化过程中]亚马逊的开发人员一路上取得了无数发现。管中 窥豹一下:
- pager escalation gets way harder, because a ticket might bounce through 20 service calls before the real owner is identified. If each bounce goes through a team with a 15-minute response time, it can be hours before the right team finally finds out, unless you build a lot of scaffolding and metrics and reporting.
- pager escalation[不知何指,应该是与紧急响应相关]变得更更更难,因为一 个ticket可能会在20个服务调用中来回跳跃直到最后的owner被找到。如果每个 团队的服务需要15分钟的响应时间,最后正确的团队发现的时候可能已经过了 好几个小时,除非你搭建很多很多的框架、测试点和报表。
- every single one of your peer teams suddenly becomes a potential DOS attacker. Nobody can make any real forward progress until very serious quotas and throttling are put in place in every single service.
- 你的每个兄弟团队都变成了一个潜在的拒绝服务攻击者。没有人能真正往前走, 除非每个团队都能保证足够的quotas和throttling。
- monitoring and QA are the same thing. You'd never think so until you try doing a big SOA. But when your service says "oh yes, I'm fine", it may well be the case that the only thing still functioning in the server is the little component that knows how to say "I'm fine, roger roger, over and out" in a cheery droid voice. In order to tell whether the service is actually responding, you have to make individual calls. The problem continues recursively until your monitoring is doing comprehensive semantics checking of your entire range of services and data, at which point it's indistinguishable from automated QA. So they're a continuum.
- 监测和QA是一回事。在你尝试做一个大SOA之前你绝不会这样认为。但是如果你 的服务告诉你“哦没错,我还活着”,很可能你的服务器上唯一还活着的就是这 个知道用开心的机械的声音说“土豆土豆,我是地瓜,我还活着,over”的小模 块了。为了知道这个服务是不是真的还能响应,你必须一个一个的去调用。递 归推演下去你的运营监测就变成了给你的整个服务和数据做全面的语义检查, 到这个点上这和自动QA测试无法区分了。所以它们是一个连续的区间。
- if you have hundreds of services, and your code MUST communicate with other groups' code via these services, then you won't be able to find any of them without a service-discovery mechanism. And you can't have that without a service registration mechanism, which itself is another service. So Amazon has a universal service registry where you can find out reflectively (programmatically) about every service, what its APIs are, and also whether it is currently up, and where.
- 如果你有几百个服务,并且你的代码必须和其他组的代码通过这些服务通讯, 那如果没有一个服务发现机制的话你一个服务也找不到。而这又必须要求有一 个服务注册机制,这本身是又一个服务。所以亚马逊有一个全局的服务注册表 在其中你可以自省的(通过程序)找到每一个服务,它们的接口是什么样的, 是不是还活着,跑在哪里。
- debugging problems with someone else's code gets a LOT harder, and is basically impossible unless there is a universal standard way to run every service in a debuggable sandbox.
- 调试别人的代码变得更更更难,除非有一个全局的标准的方法可以在一个可调 试的sandbox里跑每一个服务,否则基本就是不可能了。
That's just a very small sample. There are dozens, maybe hundreds of individual learnings like these that Amazon had to discover organically. There were a lot of wacky ones around externalizing services, but not as many as you might think. Organizing into services taught teams not to trust each other in most of the same ways they're not supposed to trust external developers.
这只是一个很小的样本。还有几十个,或者几百个这样的发现亚马逊必须一股脑 的学到。要对外开放接口这一需求也有相关的很多很鬼扯的知识,但可能没有你 以为的那么多。[因为]组织成服务的形式本身已经给了各团队足够的教训:就像 不能相信外部的开发者一样,也不能相信你的各兄弟团队。
This effort was still underway when I left to join Google in mid-2005, but it was pretty far advanced. From the time Bezos issued his edict through the time I left, Amazon had transformed culturally into a company that thinks about everything in a services-first fashion. It is now fundamental to how they approach all designs, including internal designs for stuff that might never see the light of day externally.
这个努力一直到我2005年中离开[亚马逊]加入谷歌时还在继续,但已经取得了长 足的进展。从Bezos发布他的神喻到我离开,亚马逊已经从公司文化上变成了任何 事情都服务为先。这对他们做所有的设计甚至那种永远不会见光的内部设计都已 经是根深蒂固了。
At this point they don't even do it out of fear of being fired. I mean, they're still afraid of that; it's pretty much part of daily life there, working for the Dread Pirate Bezos and all. But they do services because they've come to understand that it's the Right Thing. There are without question pros and cons to the SOA approach, and some of the cons are pretty long. But overall it's the right thing because SOA-driven design enables Platforms.
到了这一步他们甚至不是因为怕被解雇而这样做了。我是说,他们还是怕被解雇 的;这在那个鬼地方是每天生活的基调,给“可怕的海盗头子Bezos”干活就是这样 [提心吊胆]。但是他们已经体会到它[做服务这件事]是 正确的事 。毫无疑问 SOA方案有优点有缺点,并且有些缺点一言难尽。但总体来说它是正确的事因为 SOA驱动的设计使能了 平台 。
That's what Bezos was up to with his edict, of course. He didn't (and doesn't) care even a tiny bit about the well-being of the teams, nor about what technologies they use, nor in fact any detail whatsoever about how they go about their business unless they happen to be screwing up. But Bezos realized long before the vast majority of Amazonians that Amazon needs to be a platform.
这,当然,就是Bezos在他的神喻中的没说出口的东西。他过去不现在也一点点都 不关心团队死活,或者他们用什么技术,或者事实上除非他们捅篓子了他根本不 关心他们如何开展工作的任何细节。但Bezos远比大多数亚马逊人更早的认识到了 这一点:亚马逊需要成为一个平台。
You wouldn't really think that an online bookstore needs to be an extensible, programmable platform. Would you?
你肯定不会去想一个网上书店需要变成一个可扩展可编程的平台。你会吗?
Well, the first big thing Bezos realized is that the infrastructure they'd built for selling and shipping books and sundry could be transformed an excellent repurposable computing platform. So now they have the Amazon Elastic Compute Cloud, and the Amazon Elastic MapReduce, and the Amazon Relational Database Service, and a whole passel' o' other services browsable at aws.amazon.com. These services host the backends for some pretty successful companies, reddit being my personal favorite of the bunch.
好,Bezos认识到的第一件大事儿是他们搭起来卖卖书和小玩意儿的基础设施建设 可以演化成一个极好的通用的{repurposable}计算平台。所以现在他们有亚马逊 云计算,Amazon Elastic MapReduce和亚马逊关系数据库服务和其他一大串可以 在 aws.amazon.com 上看到的服务。这些服务给一些相当成功的公司提供后端, 其中reddit是我个人最爱。
The other big realization he had was that he can't always build the right thing. I think Larry Tesler might have struck some kind of chord in Bezos when he said his mom couldn't use the goddamn website. It's not even super clear whose mom he was talking about, and doesn't really matter, because nobody's mom can use the goddamn website. In fact I myself find the website disturbingly daunting, and I worked there for over half a decade. I've just learned to kinda defocus my eyes and concentrate on the million or so pixels near the center of the page above the fold.
另一件他意识到的大发现是他并不能总是造出正确的东西。我认为Larry Tesler 告诉他他妈不会用这个见鬼的网站的时候可能触动了Bezos的某根弦。这里都不是 很清楚他说的是谁的妈,这也并不重要,因为谁的妈来了也不会用这见鬼的网站。 事实上我自己也发现这个网站让人害怕不安,而我在那里工作了不止半个 decade[10年为一decade]。我刚刚学会怎样让眼睛散光再聚焦到页面中间的那几 百万个像素上。
I'm not really sure how Bezos came to this realization – the insight that he can't build one product and have it be right for everyone. But it doesn't matter, because he gets it. There's actually a formal name for this phenomenon. It's called Accessibility, and it's the most important thing in the computing world.
我真的不知道Bezos是怎么达到意识到这点的——所谓众口难调这一真知灼见[嚓, 中国人都知道]。但是这不重要,因为他得到它了。这个现象有个正式的名词。叫 做Accessibility[翻成可用性是不行的,那是Usability,Accessibility一般是 说残疾人使用电脑的方式,但这里Steve Yegge扩展了它的意思,见下文],而这 是计算领域最重要的事。
The. Most. Important. Thing.
最最最最最最最最最最重要的事。
If you're sorta thinking, "huh? You mean like, blind and deaf people Accessibility?" then you're not alone, because I've come to understand that there are lots and LOTS of people just like you: people for whom this idea does not have the right Accessibility, so it hasn't been able to get through to you yet. It's not your fault for not understanding, any more than it would be your fault for being blind or deaf or motion-restricted or living with any other disability. When software – or idea-ware for that matter – fails to be accessible to anyone for any reason, it is the fault of the software or of the messaging of the idea. It is an Accessibility failure.
如果你在想,“嗯,你是说,对盲人和聋人所说的Accessibility吗?”的话,那你 并不孤单,因为我开始发现有很多很多像你一样的人:[Accessibility]这个 idea[本身]对你没有Accessibility,所以你还无法体会它。你无法体会这不是你 的错,就像[如果你]盲、聋、行动不便或其他任何残疾也都不是你的错。当软 件——或任何概念——因为任何原因无法让某个人access,这就是这个软件或者这个 概念的表达的错。这是一个Accessibility的失败。
Like anything else big and important in life, Accessibility has an evil twin who, jilted by the unbalanced affection displayed by their parents in their youth, has grown into an equally powerful Arch-Nemesis (yes, there's more than one nemesis to accessibility) named Security. And boy howdy are the two ever at odds.
就像所有生命中又大又重要的东西一样,Accessibility有一个邪恶双生——由于它 们的父母在它们幼时给了它们不平衡的爱,长成了一个同样强大的大复仇女神 (是,accessibility还有其他复仇女神)名叫Security。哎玛呀这俩一天打到晚 [这两者是此消彼长的,太强调security会让accessibility受损害,反之亦然。 比如微软的平台大行其道所以也更易被攻破]。
But I'll argue that Accessibility is actually more important than Security because dialing Accessibility to zero means you have no product at all, whereas dialing Security to zero can still get you a reasonably successful product such as the Playstation Network.
但我会争论Accessibility事实上是比Security更重要的因为把Accessibility拨 到0意味着你压根没产品了,而Security拨到0则你还可以有一个比较成功的产品, 比如Playstation Network[一个业界的security笑话]。
So yeah. In case you hadn't noticed, I could actually write a book on this topic. A fat one, filled with amusing anecdotes about ants and rubber mallets at companies I've worked at. But I will never get this little rant published, and you'll never get it read, unless I start to wrap up.
所以是的,如果你没有注意到,我事实上可以就这个话题写一本书。一本厚厚的 书,充斥着关于我工作过的公司里的蚂蚁和锤子的故事。但是[这样的话]我永远 也发不了这个贴子了,你也读不到它,[所以]除非我现在开始长话短说。
That one last thing that Google doesn't do well is Platforms. We don't understand platforms. We don't "get" platforms. Some of you do, but you are the minority. This has become painfully clear to me over the past six years. I was kind of hoping that competitive pressure from Microsoft and Amazon and more recently Facebook would make us wake up collectively and start doing universal services. Not in some sort of ad-hoc, half-assed way, but in more or less the same way Amazon did it: all at once, for real, no cheating, and treating it as our top priority from now on.
[跟亚马逊比]最后一件谷歌没有做好的事就是平台。我们不懂平台。我们不“得 到”平台。你们有些人懂,但你们是少数派。这事儿过去的六年多里我已经痛苦的 清楚了。我有点希望从微软和亚马逊以及最近脸书来的竞争压力会让我们整体觉 醒并开始布局服务。不是以一种东打一耙西放一枪的半个屁股的方式,而是或多 或少的以亚马逊的路子:一夜之间,真枪实弹,不自欺欺人,从现在就把它当成 我们的头等大事。
But no. No, it's like our tenth or eleventh priority. Or fifteenth, I don't know. It's pretty low. There are a few teams who treat the idea very seriously, but most teams either don't think about it all, ever, or only a small percentage of them think about it in a very small way.
但是没有。没有,这是我们的第10件或者第11件优先级。或者第15,我不知道。 反正挺低的。有些团队对这个idea相当重视,但大多数团队要么压根不考虑,从 不,要么只有很小一部分人以一种微不足道的方式考虑着这件事。
It's a big stretch even to get most teams to offer a stubby service to get programmatic access to their data and computations. Most of them think they're building products. And a stubby service is a pretty pathetic service. Go back and look at that partial list of learnings from Amazon, and tell me which ones Stubby gives you out of the box. As far as I'm concerned, it's none of them. Stubby's great, but it's like parts when you need a car.
即使只让大多数团队开始提供一个Stubby服务{可能是谷歌内部的一个临时解决方 案}来访问他们的数据和计算也是一个很大的困难。他们大都认为他们是在搞产品。 而一个Stubby服务是个[对他们]很没价值的服务。回去对比一下亚马逊学到的那 些知识列表,告诉我哪些你能从Stubby里学到。从我的角度来说一个也没有。 Stubby很不错,但它就像当你需要一辆汽车时却给了你一堆零件一样。
A product is useless without a platform, or more precisely and accurately, a platform-less product will always be replaced by an equivalent platform-ized product.
没有一个平台,一个产品一无用处,更准确的说,一个没有平台支撑的产品总是 会被一个等价的但平台化了的产品替代。
Google+ is a prime example of our complete failure to understand platforms from the very highest levels of executive leadership (hi Larry, Sergey, Eric, Vic, howdy howdy) down to the very lowest leaf workers (hey yo). We all don't get it. The Golden Rule of platforms is that you Eat Your Own Dogfood. The Google+ platform is a pathetic afterthought. We had no API at all at launch, and last I checked, we had one measly API call. One of the team members marched in and told me about it when they launched, and I asked: "So is it the Stalker API?" She got all glum and said "Yeah." I mean, I was joking, but no… the only API call we offer is to get someone's stream. So I guess the joke was on me.
Google+是个我们从最高层领导(…)到最底层工程师(…)没有人懂平台的悲 惨现状的很好的例子。我们全都没有得到它。平台的黄金法则是Eat Your Own Dogfood{应该是指跟外部开发者使用一样的接口,卖的是什么,自己就吃什么, 而不是自己吃人吃的,卖给别人狗吃的}。Google+平台是一个可悲的亡羊补牢之 作。我们在发布的时候连个API都没有,我最后一次看的时候,我们[只]有一个可 怜的API{也就是说根本不能称为一个平台}。他们发布的时候一个该团队成员走进 来告诉我这件事,我问道:“是那个Stalker API吗{应该指脸书的那个丰富到能让 人Stalk跟踪盯梢别人的API}?”她变得很不高兴,说“Yeah{应该是说反话,类似 于“你就扯蛋吧”}”。我是说, 我是在开玩笑的[问她这个问题],可是… 我们唯 一提供的API调用是取得某个人的状态流。所以我猜我是自取其辱/自找没趣{因为 揭了别人的伤疤}。
Microsoft has known about the Dogfood rule for at least twenty years. It's been part of their culture for a whole generation now. You don't eat People Food and give your developers Dog Food. Doing that is simply robbing your long-term platform value for short-term successes. Platforms are all about long-term thinking.
Microsoft知道狗粮法则至少已经20年了。这已成为他们的整代人的文化。你不能 自己吃人吃的,却给你的[外部]开发者狗吃的[而是应该跟他们一起吃狗粮]。这 样做简直就是以掠夺长期的平台价值为代价去换取短期的成功[杀鸡取卵]。平台 就是一切从长计较。
Google+ is a knee-jerk reaction, a study in short-term thinking, predicated on the incorrect notion that Facebook is successful because they built a great product. But that's not why they are successful. Facebook is successful because they built an entire constellation of products by allowing other people to do the work. So Facebook is different for everyone. Some people spend all their time on Mafia Wars. Some spend all their time on Farmville. There are hundreds or maybe thousands of different high-quality time sinks available, so there's something there for everyone.
Google+是一个膝盖反射[式的不受控的现象],一个短视的调研,基于一个错误的 观念,即脸书的成功是因为他们建了一个了不起的产品。但那才不是他们为什么 成功。脸书的成功是因为他们搭建了一整堆的产品以让其他人进来工作。所以脸 书对每个人都是不同的。有的人把他们所有时间都花在Mafia Wars游戏上。有的 所有时间都花在农场上。那儿有成百上千的消磨时间的地方,每个人都可以找到 他们想要的。
Our Google+ team took a look at the aftermarket and said: "Gosh, it looks like we need some games. Let's go contract someone to, um, write some games for us." Do you begin to see how incredibly wrong that thinking is now? The problem is that we are trying to predict what people want and deliver it for them.
我们的Google+团队看了一眼这个成形了的市场,然后说:“哇靠,看起来我们需 要一些游戏。让我们找些Contracter来,呃,给我们写些游戏出来。”你现在看出 来这个idea是多么的错误了吗?根本问题在于我们在尝试预测人们想要什么然后 把他们想要的做出来给他们。
You can't do that. Not really. Not reliably. There have been precious few people in the world, over the entire history of computing, who have been able to do it reliably. Steve Jobs was one of them. We don't have a Steve Jobs here. I'm sorry, but we don't.
那是不可能的。真的不行。不可靠的。世界上有极稀有的几人,在整个计算的历 史上,他们能可靠的做到这点{指准确预测并deliver}。Steve Jobs是其中的一个。 我们中间没有Steve Jobs。我很抱歉,但是我们没有。
Larry Tesler may have convinced Bezos that he was no Steve Jobs, but Bezos realized that he didn't need to be a Steve Jobs in order to provide everyone with the right products: interfaces and workflows that they liked and felt at ease with. He just needed to enable third-party developers to do it, and it would happen automatically.
Larry Tesler可能说服了Bezos他不是Steve Jobs[的料],但Bezos意识到他并不 需要成为一个Steve Jobs才能给每个人提供正确的产品:人们喜欢并且[用起来] 觉得轻松的接口和流程。他只需要使能其他的开发者来做这件事,它就会自动发 生了。
I apologize to those (many) of you for whom all this stuff I'm saying is incredibly obvious, because yeah. It's incredibly frigging obvious. Except we're not doing it. We don't get Platforms, and we don't get Accessibility. The two are basically the same thing, because platforms solve accessibility. A platform is accessibility.
我对你们中的那些(很多)这一切都太显而易见了的人说声抱歉,因为没错。这 事情再tmd清楚不过了。可惜的是我们却没有行动起来。我们没有得到平台,我们 没有得到Accessibility。这二者基本上是一件事情,因为平台解决 accessibility的问题。平台就是accessibility。
So yeah, Microsoft gets it. And you know as well as I do how surprising that is, because they don't "get" much of anything, really. But they understand platforms as a purely accidental outgrowth of having started life in the business of providing platforms. So they have thirty-plus years of learning in this space. And if you go to msdn.com, and spend some time browsing, and you've never seen it before, prepare to be amazed. Because it's staggeringly huge. They have thousands, and thousands, and THOUSANDS of API calls. They have a HUGE platform. Too big in fact, because they can't design for squat, but at least they're doing it.
所以是的,微软得到它了。而且你我都知道这是多么让人惊奇,因为他们基本上 什么事情都没“得到”太多,真的。但他们理解平台,作为一个纯粹的巧合他们的 业务以提供平台的形式开始。所以在这个领域他们有三十多年的时间去学习。如 果你访问msdn.com,在那上面花点时间浏览,并且如果你以前从没见过这个网站, 准备好被惊到吧。因为它太太…大了。他们有成千的、成千的和成千的API。他 们有一个巨巨巨大的平台。事实上太大了,因为他们根本不会设计什么玩意儿, 但是至少他们在做它。
Amazon gets it. Amazon's AWS (aws.amazon.com) is incredible. Just go look at it. Click around. It's embarrassing. We don't have any of that stuff.
亚马逊得到它了。亚马逊的AWS(aws.amazon.com)令人难以置信。去看一眼吧。到 处点点。让人尴尬。那上面的东西我们要啥没啥。
Apple gets it, obviously. They've made some fundamentally non-open choices, particularly around their mobile platform. But they understand accessibility and they understand the power of third-party development and they eat their dogfood. And you know what? They make pretty good dogfood. Their APIs are a hell of a lot cleaner than Microsoft's, and have been since time immemorial.
苹果得到它了,显然。他们做了一些从根本上不开放的[逆平台的]选择,尤其是 在他们的移动平台上。但是他们懂accessibility并且他们懂第三方开发的能量并 且他们[跟第三方一道]吃他们[自己]的狗粮。并且你知道不?他们生产的狗粮非 常不错。他们的API比微软的清楚太太太多,并且[这个比微软强的情况]从什么时 候起都记不清了。
Facebook gets it. That's what really worries me. That's what got me off my lazy butt to write this thing. I hate blogging. I hate… plussing, or whatever it's called when you do a massive rant in Google+ even though it's a terrible venue for it but you do it anyway because in the end you really do want Google to be successful. And I do! I mean, Facebook wants me there, and it'd be pretty easy to just go. But Google is home, so I'm insisting that we have this little family intervention, uncomfortable as it might be.
脸书得到它了。这是我担心的。这是为什么我这条懒虫提起精神来写你在读的这 个东西。我讨厌写博客。我讨厌…plussing{用Google+}, 或者不管叫什么当你 在Google+上长篇大论即使这是一个很烂的场所但你还是选择这样做因为最终你真 的还是希望Google能够成功。我真的!我是说,脸书也来挖过我,去[他们那儿] 真的太简单了。但Google是家,所以我坚持我们开这个家庭小会议,即使它可能 是那么让人不舒服。
After you've marveled at the platform offerings of Microsoft and Amazon, and Facebook I guess (I didn't look because I didn't want to gettoo depressed), head over to developers.google.com and browse a little. Pretty big difference, eh? It's like what your fifth-grade nephew might mock up if he were doing an assignment to demonstrate what a big powerful platform company might be building if all they had, resource-wise, was one fifth grader.
在你惊叹过亚马逊和微软的平台选项,还有包括脸书的(我没有查过脸书的,因 为我不想看太多伤心)之后,掉头去developers.google.com上浏览一下。很大的 不一样,对吧?就像是你五年级的侄子被分配做一个展示一个非常强大的平台公 司会做什么东西如果他们所有的资源只是一个五年级学生的话这么一个家庭作业 所做出来的涂鸦之作{句子太长了:-)}。
Please don't get me wrong here – I know for a fact that the dev-rel team has had to FIGHT to get even this much available externally. They're kicking ass as far as I'm concerned, because they DO get platforms, and they are struggling heroically to try to create one in an environment that is at best platform-apathetic, and at worst often openly hostile to the idea.
在这里不要误会我——我知道事实上dev-rel团队必须战斗以取得即使是这点点可以 对外开放的东西。在我看来他们真的很好很强大,因为他们真的真的得到了平台, 而且他们真的英雄一般的争取创造出一个平台,在一个最多能被说成对平台无感, 最差则是经常公开敌视平台概念的环境中。
I'm just frankly describing what developers.google.com looks like to an outsider. It looks childish. Where's the Maps APIs in there for Christ's sake? Some of the things in there are labs projects. And the APIs for everything I clicked were… they were paltry. They were obviously dog food. Not even good organic stuff. Compared to our internal APIs it's all snouts and horse hooves.
我曾对一个公司外的人坦率的描述过developers.google.com看上去像什么。它看 起来幼稚。基督在上,Maps的API在哪儿?里面有些东西是[还没准备好见人的]实 验室项目。我点击的任何API都是…微不足道的。他们显然都是[我们自己不吃 的]狗粮。甚至不是好的有机的狗粮。跟我们内部API比这些都是些猫鼻马蹄。
And also don't get me wrong about Google+. They're far from the only offenders. This is a cultural thing. What we have going on internally is basically a war, with the underdog minority Platformers fighting a more or less losing battle against the Mighty Funded Confident Producters.
并且也不要误会我关于Google+[的看法]。它们远不是唯一的案犯。这是一个文化 性的东西。我们内部正在上演的是一场战争,其中的落水狗少数派平台派在和资 金充沛自信爆棚的产品派打着一场或多或少节节败退的战争。
Any teams that have successfully internalized the notion that they should be externally programmable platforms from the ground up are underdogs – Maps and Docs come to mind, and I know GMail is making overtures in that direction. But it's hard for them to get funding for it because it's not part of our culture. Maestro's funding is a feeble thing compared to the gargantuan Microsoft Office programming platform: it's a fluffy rabbit versus a T-Rex. The Docs team knows they'll never be competitive with Office until they can match its scripting facilities, but they're not getting any resource love. I mean, I assume they're not, given that Apps Script only works in Spreadsheet right now, and it doesn't even have keyboard shortcuts as part of its API. That team looks pretty unloved to me.
任何在内部潜移默化了他们应该是一个实实在在从外部可以编程的平台的团队都 是落水狗——Maps和Docs马上跳入我脑中,并且我知道GMail也在往那个方向序写前 奏。但他们很难获得资金支持,因为这不是我们的公司文化。Maestro的资金和微 软Office编程平台的比起来弱死了:好比一只小毛兔和一只霸王龙。Docs团队知 道他们永远无法与Office平起平坐,除非他们能得到脚本机制,可是他们得不到 任何resource的爱。我是说,我假设他们没有,给定目前Apps脚本只能在 Spreadsheet里可用,并且它的API里连键盘快捷键都没有。那个团队在我看来真 的挺[像后娘养的一样]缺乏爱。
Ironically enough, Wave was a great platform, may they rest in peace. But making something a platform is not going to make you an instant success. A platform needs a killer app. Facebook – that is, the stock service they offer with walls and friends and such – is the killer app for the Facebook Platform. And it is a very serious mistake to conclude that the Facebook App could have been anywhere near as successful without the Facebook Platform.
够讽刺的是,Wave是一个了不起的平台,愿它安息。但做一个平台并不能让你一 夜成功。一个平台需要一个杀手级应用。脸书——他们通过墙和朋友之类提供的 stock服务{应是stalk——变态盯梢的笔误}——是脸书平台的杀手锏。此处得出没有 脸书平台脸书应用也能差不多成功的结论是非常严肃的错误。
You know how people are always saying Google is arrogant? I'm a Googler, so I get as irritated as you do when people say that. We're not arrogant, by and large. We're, like, 99% Arrogance-Free. I did start this post – if you'll reach back into distant memory – by describing Google as "doing everything right". We do mean well, and for the most part when people say we're arrogant it's because we didn't hire them, or they're unhappy with our policies, or something along those lines. They're inferring arrogance because it makes them feel better.
你知道人们怎么总是在说谷歌很目中无人吗?我是个谷歌人,所以我和你一样听 到这样的话会很度烂。我们基本上并没有目中无人。我们是,99%没有目中无人这 毛病的。我的确在这个贴子的开头——如果你追索回久远的记忆的话——把谷歌描述 成[一个]“所有事都做对的”[的公司]。我们的本意是好的,最大体上说人们说我 们目中无人的时候是因为我们没有雇用他们,要不就是他们不喜欢我们的政策, 或者这条线上的一些东西。他们推出目中无人的结论因为这让他们感觉好一点。
But when we take the stance that we know how to design the perfect product for everyone, and believe you me, I hear that a lot, then we're being fools. You can attribute it to arrogance, or naivete, or whatever – it doesn't matter in the end, because it's foolishness. There IS no perfect product for everyone.
但是当我们真的自以为我们知道如何设计出完美的产品给每个人,并且相信你我, 我经常听到这个,[的时候]我们就真的是些傻子。你可以归结为目中无人,或者 幼稚,或者随便怎么说——最终都不重要,因为这是愚蠢的行为。不存在对任何人 都完美的产品。
And so we wind up with a browser that doesn't let you set the default font size. Talk about an affront to Accessibility. I mean, as I get older I'm actually going blind. For real. I've been nearsighted all my life, and once you hit 40 years old you stop being able to see things up close. So font selection becomes this life-or-death thing: it can lock you out of the product completely. But the Chrome team is flat-out arrogant here: they want to build a zero-configuration product, and they're quite brazen about it, and Fuck You if you're blind or deaf or whatever. Hit Ctrl-+ on every single page visit for the rest of your life.
所以我们搞出一个不让你设默认字体大小的浏览器。说说对Accessibility的冒犯。 我是说,随着我年纪变大我真的开始瞎了。真的真的。我这一辈子都是近视眼, 而一旦你过了40岁近的东西你也变得看不到了{悲了个催的,这是老花了}。所以 字体选择变成了一件要死要活的事:它能把你完全锁在这个产品之外。但是 Chrome团队在这里表现得一览无余的目中无人:他们希望build一个零配置的产品, 并且他们真的厚颜无耻,并且操你大爷的如果你是瞎的或聋的或者别的什么毛病。 下半辈子你访问的每个网页都按Ctrl-+吧。
It's not just them. It's everyone. The problem is that we're a Product Company through and through. We built a successful product with broad appeal – our search, that is – and that wild success has biased us.
不仅仅是他们。是每个人。我们的问题是我们是一个彻头彻尾的产品公司。我们 造了一个人见人爱的产品——那就是,我们的搜索——这让我们彻底看不清自己。
Amazon was a product company too, so it took an out-of-band force to make Bezos understand the need for a platform. That force was their evaporating margins; he was cornered and had to think of a way out. But all he had was a bunch of engineers and all these computers… if only they could be monetized somehow… you can see how he arrived at AWS, in hindsight.
亚马逊也曾是一个产品公司,所以需要天外之力让Bezos懂得对一个平台的需要。 那个力就是他们不断蒸发的收益;他开始担心必须思考一条生路。但他手上唯有 的就是一帮工程师和那一大堆计算机…如果这些东西能怎么着变出钱来的话…从 这里往回看你就能看到他是怎么想到AWS这个点子的。
Microsoft started out as a platform, so they've just had lots of practice at it.
微软从开始就是平台,所以他们有一大把经验。
Facebook, though: they worry me. I'm no expert, but I'm pretty sure they started off as a Product and they rode that success pretty far. So I'm not sure exactly how they made the transition to a platform. It was a relatively long time ago, since they had to be a platform before (now very old) things like Mafia Wars could come along.
脸书,他们让我担心。我不是专家,但我很确定他们是以产品起家然后骑着这匹 成功之马走了很远。所以我不确定他们是怎么切换到平台上去的。这是相对很长 一段时间之前了,因为他们必须先成为一个平台(现在已经很老的)一些东西像 Mafia Wars才能发生。
Maybe they just looked at us and asked: "How can we beat Google? What are they missing?" The problem we face is pretty huge, because it will take a dramatic cultural change in order for us to start catching up. We don't do internal service-oriented platforms, and we just as equally don't do external ones. This means that the "not getting it" is endemic across the company: the PMs don't get it, the engineers don't get it, the product teams don't get it, nobody gets it. Even if individuals do, even if YOU do, it doesn't matter one bit unless we're treating it as an all-hands-on-deck emergency. We can't keep launching products and pretending we'll turn them into magical beautiful extensible platforms later. We've tried that and it's not working.
可能他们看着我们然后问:“我们怎样才能打败谷歌?谷歌缺什么?”我们面对的 这个问题是相对严峻的,因为我们需要一个巨大的文化改变才能迎头赶上。我们 没有内部的面向服务的平台,同样的我们也没有外部的这样的平台。这意味着“没 有得到它”这个毛病是全公司的:PM们没有得到它,工程师们没有得到它,产品团 队没有得到它,没有人得到了它。即使有个把人得到了,即使你得到了,这也什 么都不能改变除非我们能把它当成一个全军总动员的紧急状态。我们不能不停的 发布产品然后假装晚点儿我们会把它们奇迹般的变成美丽的可扩展的平台了。我 们试过了那条路行不通的。
The Golden Rule of Platforms, "Eat Your Own Dogfood", can be rephrased as "Start with a Platform, and Then Use it for Everything." You can't just bolt it on later. Certainly not easily at any rate – ask anyone who worked on platformizing MS Office. Or anyone who worked on platformizing Amazon. If you delay it, it'll be ten times as much work as just doing it correctly up front. You can't cheat. You can't have secret back doors for internal apps to get special priority access, not for ANY reason. You need to solve the hard problems up front.
平台黄金法则,“吃你自己的狗粮”,换个说法可以说成“以一个平台开始,然后处 处用它”。你不能晚点儿再说。当然这绝不容易——问问任何曾经干过把微软 Office平台化的人。或者任何干过把亚马逊平台化的人。如果你拖延,它会花比 你从一开始就平台化多十倍的工作。你不能作弊。你不能有秘密后门只给内部 app用以获取特殊权限,不论是什么理由。你需要从一开始就解决这个难题。
I'm not saying it's too late for us, but the longer we wait, the closer we get to being Too Late.
我不是说现在我们已经太晚了,但是我们等得越久,我们离“太晚了”变得越近。
I honestly don't know how to wrap this up. I've said pretty much everything I came here to say today. This post has been six years in the making. I'm sorry if I wasn't gentle enough, or if I misrepresented some product or team or person, or if we're actually doing LOTS of platform stuff and it just so happens that I and everyone I ever talk to has just never heard about it. I'm sorry.
我真的不知道怎么总结。我差不多说了我今天在这儿想说的一切。这个贴子我写 了六年了。我先道歉如果我表现得不够温宛或者我误读了某些产品或团队或人, 或者如果我们实际上在做着很多很多的平台而碰巧我和跟我聊过的每个人都从没 听说过这事的话。我抱歉。
But we've gotta start doing this right.
但是我们真的需要开始把这事儿做对了。
This post was followed by 2 consecutive posts to control the situation.
这个贴子后续有两个跟贴来试图控制情况。
- A message to the external-world folks
- Amazon War Story
亚马逊战争故事 {非常值得一读!}
P.S.: I never copied this post to put someone into problem. Rather my intention was to let the world of small developers know what the industry leaders are doing inside. It is a good learning for us, the small developers.
P.S.: 我转发这个贴子绝不是为了让谁陷入麻烦。我的用意是让小开发者的世界 能认识到业界领秀们内部在干啥。这对我们这些小开发者来说上了很好的一课。