程序员的怒吼

来源:豆瓣阅读 | 发布: | 发布时间:2016-06-25,星期六 | 阅读:1,359

Steve Yegge


亚马逊把所有事情都做错了,而谷歌把所有事情都做对了?


Steve Yegge,从业二十余年的资深程序员,Google 员工,Amazon 前员工,直言不讳的业界大牛,写过很多让人觉得不爽但又觉得「特别对」的文章。本书是 Steve Yegge的博客精选集,探讨了关于编程语言、代码哲学、Google 企业文化、面试经验等问题,犀利幽默又不失专业,非常值得参考。

程序员的怒吼

作者〔美〕Steve Yegge

译者陈邃常青

精彩摘录

吐槽谷歌平台

我在亚马逊工作过六年半,现在我在谷歌工作也有六年半了。说起这两家公司,我立刻就有一种感觉——这种感觉还与日俱增——那就是亚马逊把所有事情都做错了,而谷歌把所有事情都做对了。当然这是非常以偏盖全的概括,但却惊奇地准确。这是件很疯狂的事情。你可以拿一两百件不同的事情来比较亚马逊和谷歌,然后你会发现谷歌在所有事情上都胜一筹,除了大概其中的两三件以外,如果我没记错的话。在某个时间点,我甚至做了张比较用的表格,但法务部门不会让我把它给别人看的。不过招聘部门都很喜欢那张表格。

我就给你举一个简单的例子给你尝尝其中的味道:亚马逊的招聘流程从本质上是有缺陷的,缺陷就是每个团队负责自己团队内部人员的招聘,因此每个团队的招聘标准也不尽相同。他们曾做出诸多努力来统一这些不同的标准,但也没有成功。亚马逊的运行维护是一团糟,他们没有真正意义上的可靠性工程师(Site Reliability Engineers),于是软件工程师就不得不什么都做(SDE= Someone do Everything),自然就没有什么时间进行编码。不过,这种情况也会随着团队而不同,所以你具体的命运如何还是得看你抽到哪个组。他们对慈善、帮扶穷困群体或为社区作贡献之类的事情不屑一顾,从来不提及那种事情,大概除了讲笑话的时候。办公区域就是一片脏兮兮的格子间,一个子儿也没花在装修和公共会议区上,油污遍布,没有一毛钱花在装饰或修缮公共会议区域。亚马逊的工资和补贴待遇很差,最近由于谷歌和脸书的竞争压力有所好转,但还是完全没有谷歌这样的福利和额外奖赏——他们只是尽力发足工作合约上的那个数字就完事了。亚马逊的代码库是一团灾难,全然没有任何的工程标准,除了某些团队会自己实行一个标准以外。(作者注:我听说亚马逊最近好像在这个方面改善了一些。对他们来说没什么了不起的。)

公平地说,亚马逊的确有一套很好的带版本控制的函数库系统,这是我们谷歌也应该模仿学习的。他们还有一套完善的发布/订阅系统,这也是我们没有的东西。但除此以外,他们基本上只有一堆残破的工具,从状态机中读取、写入状态,然后存入关系型数据库中。那些工具,即使免费赠送,其中的大多数我们都不会要。

我认为翻遍了亚马逊,你只能找到三件事情他们比谷歌做得好的。发布/订阅系统和函数库系统这两个东西就占了这唯三样东西中的两件。(作者注:我现在认为谷歌的发布/订阅系统已经比亚马逊的更好了。但亚马逊在玩转函数库之类的组件上还是更胜一筹。)

我猜你可以争论说,亚马逊对于早早发布产品然后拼命迭代的做法的偏好,也是他们做得不错的地方,不过你也可以争论说这是不好的地方。他们将早早发布产品凌驾一切之上,包括留存率、工程纪律和一些其它长久看来更为重要的东西。所以即使亚马逊在短期内能在市场上得到一些竞争优势,这个做法却留下了许多别的后患,使得这样早发布的做法并不像扣篮那样干净漂亮。

可是仍然有一件事情,是亚马逊做得真的很好的,它好到足以平衡所有他们的在政治上、理念上和技术上弄砸了的地方。

JeffBezos在“微观管理”这一点上可谓“臭名昭著”。他管得事无巨细,甚至细到亚马逊零售网站上的每一个象素点。他把Larry Tesler招进了亚马逊——此君是苹果公司的首席科学家,甚至可能是世界上最有名和最受尊敬的人机交互专家——却无视Larry所说的一切长达三年,直到Larry最终——明智地——离开了亚马逊。Larry本来可以进行大规模的网站可用性研究,揭示这个毫无悬念的事实——没人能明白这该死的网站的设计思路,但Bezos就是不肯将那些象素点从怀抱中放出去,那些成百上千万的、充满了语义内涵的象素点们。因为那些象素点对Bezos来说就像他的亲生孩子一样,所以它们得以留在了亚马逊这个温暖的大家庭里,而Larry就被逐出家门了。

顺便说句,微观管理可不是亚马逊做得比我们谷歌好的地方。我的意思是,他们确实能把微观管理做得淋漓尽致,但我并不认为这是一个长处或优势。我说这些只是要交代给你一些背景知识,让你更容易理解到底发生了什么。我们在讨论这样一个人:此人曾经在诸多公众场合严肃地说,在亚马逊工作的人应该给他付钱。当人们与他意见相左时,他会给别人发出印有自己名字的黄色便笺,提醒他们“是谁在运作这家公司”。这个人平时简直就是……好吧,史蒂夫・乔布斯,我猜。除了没有乔帮主那样对时尚和设计的敏锐感而已。别搞错了我的意思,Bezos是个超级聪明的人,他轻易就能让一般的控制狂变得像嗑了药的嘻皮士。

然后有一天,Jeff Bezo颁布了一条命令。他总是在宣布命令,总是把人们弄得像木槌敲击而惊吓的蚂蚁一样四下逃窜。可是这一次——我记得大概是在2002年,可能有一年的误差——他颁布的这条命令如此大咧咧地立在那里,如此巨大、笨重得令人瞪眼,以至于跟他其它的命令相比起来都只像同事之间自发的奖励一样小巫见大巫。

他的大命令大概可以总结为以下几条:

1. 所有的小组从今以后都要把他们的数据和功能用服务接口展现出来。

2. 小组之间必须通过这些接口彼此通信。

3. 除此之外,其它所有的跨进程通信方式都不允许:不能直接链接别的资源,不能直接读取另一个小组的数据存储,不能用共享内存模型,不能设置后门或木马什么的。唯一允许的通信方式就是在网络上调用服务接口。

4. 服务接口用什么技术都无所谓。HTTP也好,Corba也好,发布/订阅系统也好,自订协议也好——都无所谓。Bezos不关心这些。

5. 所有的服务接口,无一例外,都需要从头设计成能够外部化。也就是说,每个小组都需要规划并设计他们的接口,使得这些接口能被外面世界的开发者所用。无一例外。

6. 任何不遵守这些规定的人都会被炒鱿鱼。

7. 谢谢大家,祝你们拥有愉快的一天!

哈哈!你们这150名前亚马逊员工显然会立刻发现第七条是我扔进去的一则小笑话,因为Bezos显然不会关心你一天过得如何。

而第六条,就是相当实在的一条。所以人们就去工作了。Bezos安排了几只首席看门狗来监管大家的工作并确保进度,又安排超级首席看门狗熊Rick Dalzell作为他们的领导。Rick曾是陆军游骑兵,毕业于西点军校,曾当过拳击手,在沃尔玛担任过首席刑讯官/首席信息官,是个十足的笑面虎,常把“强固的接口”一词挂在嘴上。Rick自身就是一个会走路的、会说话的强固的接口,所以,自然不用多说,大家都马不停蹄地超了很多进度,而且确保Rick看见了他们的进度。

本文节选自豆瓣阅读同文馆作品《程序员的怒吼》


程序员的怒吼

作者〔美〕Steve Yegge

译者陈邃 常青



0

 

版权声明

文章编辑: ( 点击名字查看他发布的更多文章 )
文章标题:程序员的怒吼
文章链接:http://ccdigs.com/82665.html

分类: IT观察, 图书评论, 新闻视线.
标签: , , ,

发表评论