JoelOnSoftware

Joel on Software

Don't Let Architecture Astronauts Scare You

别让航天架构师吓倒你

by Joel Spolsky Saturday, April 21, 2001

When great thinkers think about problems, they start to see patterns. They look at the problem of people sending each other word-processor files, and then they look at the problem of people sending each other spreadsheets, and they realize that there's a general pattern: sending files. That's one level of abstraction already. Then they go up one more level: people send files, but web browsers also "send" requests for web pages. And when you think about it, calling a method on an object is like sending a message to an object! It's the same thing again! Those are all sending operations, so our clever thinker invents a new, higher, broader abstraction called messaging, but now it's getting really vague and nobody really knows what they're talking about any more. Blah.

当伟大的思想家思考问题的时候,他们会看到模式。 他们看到人们互相发送字处理文档, 然后他们看到人们互相发送电子表单, 他们意识到了这里面包含着一种通用的模式:发送文件。 这已经是一个层次的抽象了。 然后他们会更进一层: 人们发送文件, 但是浏览器也“发送”请求以获得网页。 你想一想, 调用一个对象的方法的时候就像向对象发送一个消息一样! 这不就是同一件事情么! 这些都是发送操作, 因此我们的聪明的思想家发明了一种新的,更高层次的,更广义的抽象,叫做“消息”, 但同时这种概念变得如此模糊以至于没有人知道他们在讨论什么了。哈。

When you go too far up, abstraction-wise, you run out of oxygen. Sometimes smart thinkers just don't know when to stop, and they create these absurd, all-encompassing, high-level pictures of the universe that are all good and fine, but don't actually mean anything at all.

当你在抽象的层面走的太远的时候,你就会缺氧。 有的时候那些聪明的思想家实在不知道什么时候停下来, 他们创建了这些不可理喻的,包容一切的,高层次的宇宙图像;虽然很好很强大,但实际上什么意思也没有。

These are the people I call Architecture Astronauts. It's very hard to get them to write code or design programs, because they won't stop thinking about Architecture. They're astronauts because they are above the oxygen level, I don't know how they're breathing. They tend to work for really big companies that can afford to have lots of unproductive people with really advanced degrees that don't contribute to the bottom line.

我通常把这些人叫做航天架构师。 很难让他们来写代码或设计程序, 因为他们永远不能停止思考架构。 之所以叫他们航天员是因为他们在氧气层的上面, 我不知道他们呼吸的是什么。 他们通常应该为那些大公司工作,只有这些公司才能承担的起这些效率不高但是学历很高,通常不会贡献底层代码的人。

A recent example illustrates this. Your typical architecture astronaut will take a fact like "Napster is a peer-to-peer service for downloading music" and ignore everything but the architecture, thinking it's interesting because it's peer to peer, completely missing the point that it's interesting because you can type the name of a song and listen to itright away.

最近的一个例子能证明这一点。 你最常见的航天架构师会把这样的一个事实“Napster是一个点对点的音乐下载服务”抽去所有东西只剩下架构, 认为它很有趣因为它是点对点的, 而完全不能体会到这个东西之所以很有趣是因为你能输入一首歌的名字并且马上听到。

All they'll talk about is peer-to-peer this, that, and the other thing. Suddenly you have peer-to-peer conferences, peer-to-peer venture capital funds, and even peer-to-peer backlash with the imbecile business journalists dripping with glee as they copy each other's stories: "Peer To Peer: Dead!"

所有他们讨论的点对点的 这儿,那儿,其他东西。 突然你发现就有了点对点会议, 点对点的风险投资, 甚至是低能的商业记者高兴的冒着汗,互相抄袭,搞出来的热点新闻 “点对点:穷途末路”

The Architecture Astronauts will say things like: "Can you imagine a program like Napster where you can downloadanything, not just songs?" Then they'll build applications like Groove that they think are more general than Napster, but which seem to have neglected that wee little feature that lets you type the name of a song and then listen to it -- the feature we wanted in the first place. Talk about missing the point. If Napsterwasn't peer-to-peer but it did let you type the name of a song and then listen to it, it would have been just as popular.

航天架构师会这样说:“你能想象你能下载任何东西而不仅仅是歌的Napster服务么?” 然后他们就创建了像Groove这样的他们自认为比Napster更通用的应用程序, 但是他们似乎忽略那个极小的特性 就是“你能输入一首歌的名字 并切马上开始听” 而这正是我们先开始想要的。 他们讨论的完全脱离了重点。 如果Napster不是用点对点架构的,但是他还是可以让你输入名字并马上开始听歌,那么它一样还是会受欢迎。

Another common thing Architecture Astronauts like to do is invent some new architecture and claim it solves something. Java, XML, Soap, XmlRpc, Hailstorm, .NET, Jini, oh lord I can't keep up. And that's just in the last 12 months!

另一件航天架构师都喜欢做的事情就是发明一些新的架构然后声称它解决了某个问题。 Java,XML,Soap,XmlRpc,Hailstorm,.NET,Jini,天,我说不下去了。 而且这些都仅仅才花12个月而已!

I'm not saying there's anything wrong with these architectures... by no means. They are quite good architectures. What bugs me is the stupendous amount of millennial hype that surrounds them. Remember the Microsoft Dot Net white paper?

我并不是说这些架构有什么不好…相反。他们都是很好的架构。 让我感到厌烦的是千年不停反反复复的强调着这些东西。 记得微软.NET白皮书么?

The next generation of the Windows desktop platform, Windows.NET supports productivity, creativity, management, entertainment and much more, and is designed to put users in control of their digital lives.

下一代微软桌面平台,Windows.NET 支持效率,创意,管理,娱乐以及其他, 并且致力于让用户控制他们自己的电子生命。

That was about 9 months ago. Last month, we got Microsoft Hailstorm.That white paper says:

这是9个月前。 上个月,我们拿到了微软的HailStorm。那本白皮书上说:

People are not in control of the technology that surrounds them....HailStorm makes the technology in your life work together on your behalf and under your control.

人们并没有能控制他们周围的科技… HailStorm让你工作,生活中的技术变得为你所有,为你所享。

Oh, good, so now the high tech halogen light in my apartment will stop blinking randomly.

哦,好,所以那么我公寓力的那些高科技大灯就不会随机乱闪了么。

Microsoft is not alone. Here's a quote from a Sun Jini whitepaper:

These three facts (you are the new sys admin, computers are nowhere, the one computer is everywhere) should combine to improve the world of using computers as computers -- by making the boundaries of computers disappear, by making the computer be everywhere, and by making the details of working with the computer as simple as putting a DVD into your home theater system.

微软不是唯一的一个。 这段摘自Sun的Jini白皮书:

这三点( 你将成为新一代系统管理员, 电脑不是到处存在, 但这台电脑将无处不在) 组合起来改善这个用电脑当电脑的世界 – 通过让电脑的边界消失, 通过让电脑到处可以获得, 通过让用电脑变的像往你的家庭影院里放DVD一样简单。

And don't even remind me of the fertilizer George Gilder spread about Java:

A fundamental break in the history of technology...

更别提 GeorgeGilder为了宣传Java写的了:

技术历史上根本性的变革…

That's one sure tip-off to the fact that you're being assaulted by an Architecture Astronaut: the incredible amount of bombast; the heroic, utopian grandiloquence; the boastfulness; the complete lack of reality. And people buy it! The business press goes wild!

有一点可以证明你却信无疑的被航天架构师骚扰到了: 无法想象的炸弹式轰炸; 英雄,乌托邦式浮华; 夸大; 完全缺乏事实。 然后人们却相信他! 商业媒体简直疯了!

Why the hell are people so impressed by boring architectures that often amount to nothing more than a new format on the wire for RPC, or a new virtual machine? These things might be good architectures, they will certainly benefit the developers that use them, but they arenot, I repeat, not, a good substitute for the messiah riding his white ass into Jerusalem, or world peace. No, Microsoft, computers are notsuddenly going to start reading our minds and doing what we want automatically just because everyone in the world has to have a Passport account. No, Sun, we're not going to be able to analyze our corporate sales data "as simply as putting a DVD into your home theatre system."

到底为什么人们会被那些无聊的架构所震撼到? 那些不过是没用的新RPC编码格式, 亦或是一种新的虚拟机? 这些东西可能是好的架构, 他们当然会给使用的开发者带来好处, 但是他们不是, 我要强调, 他们不能代替弥赛亚骑着到耶路撒冷的白马, 或者是世界和平。 不,微软, 电脑不会突然开始阅读我们的思想然后自动的帮我们完成我们想要的事情 仅仅因为世界上每个人都有了一个Passport帐号。 不,SUN, 我们没办法像把DVD放进家庭影院那样来分析企业营销数据。

Remember that the architecture people are solving problems that they think they can solve, not problems which are useful to solve. Soap + WSDL may be the Hot New Thing, but it doesn't really let you do anything you couldn't do before using other technologies -- if you had a reason to. All that Distributed Services Nirvana the architecture astronauts are blathering about was promised to us in the past, if we used DCOM, or JavaBeans, or OSF DCE, or CORBA.

记住,架构师解决的是他们觉得他们能够解决的问题, 并不是有用的要解决的问题。 SOAP+WSDL也许是新的热点, 但它们并不能阻止你们使用其他技术去实现一样的东西 – 如果你想要的话。 所有那些航天架构师吹嘘给我们的分布式服务天堂在过去也有, 如果我们用过DCOM, JavaBeans或者是OSF DCE或者是CORBA.

It's nice that we can use XML now for the format on the wire. Whoopee. But that's about as interesting to me as learning that my supermarket uses trucks to get things from the warehouse. Yawn.Mangos, that's interesting. Tell me something new that I can do that I couldn't do before, O Astronauts, or stay up there in space and don't waste any more of my time.

我们现在能在编码上用上XML很好。唬,不过这也就跟我知道了超市用卡车从仓库在东西一样有趣罢了。 打哈欠。那很有趣。 告诉我一些我用过去的东西无法实现的新东西, 哦, 航天员们你们就停在太空中吧,不要来浪费我时间了。