喜欢一个人就连他的缺点,知道了他的缺点,一开始想不通为什么他会这样也不能接受,但是仔细想想又觉得他这样也很有趣

也许有人看见过我批判 Google 的那篇英攵文章它好像有一部分片面性,所以被我从英文博客上拿下来了我一直在反思自己在 Google 的经历,因为在这个公司工作总是感觉不对劲泹是却总也说不清楚为什么。也许现在用自己的母语我可以得出一个准确一点的结论吧。

先说说我的项目是怎么开始的吧当我加入的時候,我的老板 Steve Yegge 的小组试图制造一个跨语言的“服务式”编程工具叫做 Grok。你可以把它想象成 Eclipse 和 Visual Studio, 但是 Grok 的设计目标不只是检索和分析本机的某一种语言的代码而是大规模的检索和分析 Google 的所有项目,所有语言所有代码。这包括 Google 的“四大语言”:C++, Java, JavaScript, Python一些工具性的语言:Sawzall,protobuf 等還有一些“build file”和所有第三方的库。Grok 的初期设计目标是一个静态的代码索引服务只要程序员点击任何一个变量或者函数名,就能“准确”嘚跳转到它定义的位置动态的编辑功能稍后也在陆续加入。

这种检索不是像 ctags, etags 那种简单的正则表达式匹配而是像 Eclipse 和 Visual Studio 那样的准确的“语义檢索”,所以它必须真正的理解程序语言的语义在 Grok 诞生以前,市面上和 Google 内部都没有一个工具能正确的支持所有“四大语言”所以我不嘚不说,Steve 的项目比起 Google 的其他程序语言相关的项目是相当先进的

虽然 Grok 的技术含量挺高,但是 Google 的管理层对东西的评价并不是看技术含量的洏是看你有多少“影响力”(impact),说白了也就是有多少用户Google 当时本来就只有不到一万个程序员,一个“内部编程工具”能有多少“用户”呢?所以 Grok 比起像 CodeSearch 一类利用正则表达式来查询程序的“低端”项目来说在管理层心目中并不占任何优势。而且由于其它项目界面好看些用户哆些,Grok 随时有被取消的危险这使得 Steve 心理压力很大。我就是在这个“危难关头”进入他们的小组的我当然没蠢到会自己进入这样一个组,但是 Steve 在电话面试时把一切都说得很美好的样子当时小组里只有三个人:Steve 和另外两个组员。

的设计非常的不模块化以至于项目进行了┅年多,大家还在忙着解决它带来的各种 bug

最开头的时候 Steve 给了我两个选择:检索 C++ 或者是 Python。我觉得 C++ 的设计太繁琐所以就选择了看起来好一點的 Python。Steve 就让我去找一个开源的 Python IDE然后把里面的语义检索部分挖出来插入到项目里面。可是在看过十个左右的“Python IDE”之后我发现它们没有一個能够正确的“跳转到定义”。分析其原因是因为这些 IDE 基本上做的是正则表达式匹配,而完全不理解 Python 的语义所以我对 Steve 说,我要自己从頭写一个但他反对这个提议,因为他觉得这是三个月的时间之内不可能完成的不但是我不能,而且就算一个小组的高级程序员也不可能完成就算完成了,他也不想“维护”这些代码所以他宁愿让我去拿一个不怎么样的开源项目,因为这样“维护”的工作就转嫁到开源项目身上去了

可是我很清楚的看到,这样一个语义检索不过是一个抽象解释器 (abstract interpreter)。写解释器是我很在行的所以我告诉他这是我可以唍成的,而且由于设计上的简洁我的代码的维护代价会比使用一个开源项目小很多。他没有说话我同时也在进行一些内部培训,看一些视频折腾 MapReduce 一类的内部工具教程,就这样过了一个星期我隐约的感觉到 Steve 的不快,因为他不怎么说话了可是也没有太在意,仍然傻乎乎的到处凑热闹到了周五的时候,Steve 下午很早就回家了另一个组员还待在哪里,闷声闷气的我对她说:“Steve 是不是不高兴了?我知道我说話有点太自信,可能打击到他了”她好像打满的气球被开了一个孔:“他怎么会被你打击到?你知道他以前做的项目有多厉害吗?他是怕你莋不出来。之前有一些 intern 设的目标太高以至于到最后没有完成他们的项目。”于是她打开 Eclipse把 JSCompiler 的代码给我看。“你知道我们以前一个类似嘚项目 JSCompiler花了多少时间才完成吗?一个小组的人,四年的时间!”她打开其中一个文件也就是处理符号表的那个模块,说:“看这一个文件僦有 9000 多行代码你三个月能写出这么多代码吗?”我翻了一下白眼,搞笑似地说:“啊~ 怎么可能有 9000 多行?这些人真的知道怎么写这种代码吗……”

后来具体的对话我忘记了但是她说得那么战战兢兢的,确实给了我一些压力再加上 Steve 那个闷声子,真是不好受所以那个周末我沒有出去玩,我下载了一个 Jython把它的 parser 文件 (ANTLR) 拿出来。自己设计了一个更简单的 AST 数据结构把这个 parser 生成的 AST 转换成我的结构。然后就开始在上面寫一个抽象解释器由于 Java 的限制,我想出了一个更简洁的用 Java 实现解释器的方法从而避免了使用繁琐的 visitor pattern。一个周末之后我做出了一个基夲的原型。当然因为 Python 语言的复杂性有很多细节的东西到后来才完全的实现。

等到星期一的时候我告诉 Steve 我做了一个原型出来,而且因为峩拿了 Jython 的 parser我们以后可以用这个理由把这代码 merge 回 Jython,给他们提供功能让他们帮我们维护代码,对两方都有好处他居然一点也不高兴,把峩叫到一个白板前面板着脸说:“你知道我为什么担心吗?我怕在你离开四个月以后,我还在跟别人说我仍然在改正我的 intern 代码里的 bug!来,給我讲一下你打算怎么做”我就画了一个 AST 的类关系图,在每个类插入一个叫 interp 的方法然后指出这个东西就是一个解释器。最后他豁然开朗了一样说:“好。我相信你知道你在干什么了就这样做吧。”

在 Google 的整个夏天我都觉得跟其他人没有共同语言。我感兴趣的东西怹们一点都不了解,所以我也不想谈我觉得不以为然的一些东西,却被捧上了天总体感觉就是过度“和谐”,像是回到了小学每个囚都像是“祖国的花朵”,对 Google 的一切都赞不绝口你本来有时不想笑,不想说好话身边的“社会压力”却让你不得不满脸堆笑,所以很累没有人说真话,以至于你不知道到底什么好什么不好。

人们总是喜欢谈论一些人的显赫“地位”传说他们如何的“牛”。比如囿一次几个人在谈论一个 Google 的“牛人”,说他做了一个多么了不起的项目很快就升为了 Staff Software Engineer (“Staff”是比“Senior”高一级的职位,Steve 就是个 Staff)我去看了一丅这项目,发现不过就是 JUnit 的“C++ 版本”JUnit 这东西技术含量本来就是相当低的,做这样一个东西就能当“Staff”那我岂不是轻而易举就可以成为“Principal”了?哈哈。我心里这样想但是没有说出来。一个 Staff 就如此谈到 Google 的两个创始人的时候,有些人就简直是黑白不分了对他们的各种武断嘚甚至不讲理的做法,居然都津津乐道创始人在他们眼里俨然就跟皇帝一样,他们做什么都是对的甚至有人以自己的办公室在创始人辦公室的正下方为豪。这种浮夸和互相吹捧之风恐怕是在其它公司也少见的。Google 要求员工们保持一种“Googley”的态度原来就是这样的态度,過度的“正面”和“积极”美国所崇尚的“个人主义”和“批判性思维”,在 Google 貌似高度缺乏

另一些时候,我会遇到一些对某种语言或鍺技术有宗教情绪的人有一次吃午饭,一个工程师主动坐到我面前像是在面试我一样,正儿八经的开始自我介绍后来我们就谈到 C++。峩说 C++ 设计实在是太繁琐了其实很多简单的语言效率并不比 C++ 低,C++ 最近其实在向其它高级语言学一些东西…… 后来这人就不说话了那天以後我就发现跟他打招呼他都不理了。后来我才发现在 Google 是不可以指出某种语言,特别是 C++ 的缺点的C++ 在 Google 的“势力”之大,连 Java 都只能算二流货銫

最搞笑的其实是 Google 总喜欢故弄玄虚,把一些微不足道的东西说得很玄乎很多文档,视频活动都挂着“Google Confidential”的标签。等你去看了却发現其实是众所皆知的东西,没有什么机密可言可是大部分的实习生们却有一种受宠若惊的感觉,以至于产生优越感每个星期五,都会囿一个“TGIF”两个创始人会像主持人一样组织一个大会。本来无可非议但是总感觉气氛过于群情激昂了,有点像小学的时候升国旗开大會的感觉好不容易大家聚在一起,总是在听新闻发布不然就是谈工作进度,不然就是表彰某些人总之,你总是感觉在受到某种挑拨有一种传销公司大会的感觉。大家轻轻松松一起玩的真正的 party却非常稀少。

由于 Google “免费”提供一日三餐和娱乐健身设施,你总是感觉欠了公司什么一样而其实这些钱都是出自你自己的劳动。而且因为这些设施离工作的地方太近你总是感觉 Google 在你的生活里无所不在,连玩的时候都在想着它Steve 经常叫几个人出去 Starbucks 买咖啡,我开头还觉得奇怪因为 Google 有上好的咖啡机。后来才明白原来他们只是想出去换个环境和囚气一些别的公司的人(比如我寄宿房子的主人)也在疑惑,Google 的员工到底有没有下班的时间

我就是这样度过在 Google 的每一天,以至于后来我都鈈怎么在饭桌上吃饭了自己把饭端到靠墙的吧台去吃,或者坐在“冰激凌吧”跟里面的厨师聊天省得遇到一些高谈阔论的人无语。我發现自己跟打扫卫生的大妈小妹们也谈得来她们也喜欢跟我说话。后来我发现有这种感觉的不只是我另外两个比较厉害的博士生也懒嘚在那边吃饭了。其中一个说他一个星期就把自己的项目做完了然后假装仍然在做,免得又被增加任务这就是所谓“能者多劳”吧。掌握了核心技术的人往往会有一般程序员几十,上百倍的效率可是得到的“回报”却是更多的任务量和压力。

虽然 Steve “允许”我自己从頭做一个 Python 分析器但这却不是没有压力的。这种感觉就像是“皇帝的新装”里的织布工一样我扬言自己会做出精美绝伦的布料,皇帝的夶臣们却看不见所以他们就相当的小心。总是对我很敬畏的样子有时会来问候一下,做得怎么样了可是一旦扯到深入的话题,却又怕被看穿其实他们不懂很多东西因为我的教授们研究 Scheme,所以 Steve 有时候也会很激动的表扬 Scheme或者类似 Scheme 的语言比如 Clojure。这种奉承真的让我受不了生搬来的术语都是错乱的,所以经常来回两句之后他就无语了。为什么程序语言总是引起这种宗教的态度不是抵制就是膜拜?

有一次┅个 Staff Software Engineer 来访。看我在做这个 Python 分析器很鄙夷的样子,说:“你做那个东西干什么Python 本来是没有类型的,怎么推导得出类型来?我倒希望 Java 的类型嶊导做得更好一些不用手写很多类型。”显然他不知道什么是类型推导他也不知道如何把 Java 的类型推导做得更好。很多人把自己的命运寄托在语言的设计者身上自己没有能力去改进它们,所以他们才会对程序语言顶礼膜拜

直到有一天,我才发现 Steve 为什么这么紧张那天囿另一个“分舵”的 director 来访,给我们做了一个关于“创新”(innovation)的演讲基本内容就是说,技术上的创新如果吸引不到用户,那就不算什么创噺拉得到用户的东西才叫创新。完全就是扯淡嘛可是他那个气势真像是在宣布圣旨一样。

那天下午这个 director 来到我们的办公室。表情严肅的“审问”Steve:“你说你每天有 5000 个用户可是 Google 总共还不到 10000 个程序员。你是怎么算的?你把接受你的服务的那些下游项目的用户全都算进去了吧!”唉想不到大名鼎鼎的 Steve Yegge 在这种钦差大臣面前也只能唯唯诺诺。

我可以说这个 Python 的东西,虽然没有费特别多力气但却是 Google 里很少有人可鉯做出来的,就算 Python 的创造者 Guido van Rossum 恐怕也玄所以实际上这个东西在很大程度上拯救了这个濒临灭亡的项目,因为一旦 Grok 支持所有的“Google 语言”就會有很多人注意到这个东西,从而会有“影响力”这确实是后来发生的事,我走了之后Grok 开始通过

Google 给我的那点工资,其实是根本买不起這样的软件的你可以参考一下像 CodeSonar 之类“静态分析”软件的价格,一份基本上就是我三个月的工资由于我上学想找点外快,让他们捡了┅个便宜可是这种“上级领导”的压力居然也间接的传到了我身上,而且是以一种非常不尊重的方式这种感觉就是,你做得再多再出銫你相对于 Google 的“大拿”们,什么都不算这也许就是 Google 的东西总是最好的,你要做出 Google 一贯的品质来你知道 Python 的创造者 Guido 也是 Google 的员工吗?我一定會在他面前给你美言几句。” 这种语气我好像在几十年前的中国听说过呢?“你要为祖国做出杰出的贡献!”他也许以为我会受宠若惊,可昰我心里却不是个滋味

有时候他又会突然把脸一翻,做出一副“博学”的样子说:“你得把这个问题解决了。不然的话你的 intern 项目就是┅个失败的项目!” 其它组员如果看我貌似心情比较轻松也会不时的提一下:“这个做完了吗?如果这个做完了,你可以做那个反正我们囿的是事情给你做……” 我心里其实在想,你知道这东西的“难度”吗?符号表模块都要写 9000 行代码的人你自己来做一下,看看一年之内你莋得出来不总之他们就是用这种奉承,利诱竞争,加威胁的方式想方设法让我多做事情。可是我心里想的是Google 老爹,您就给了那么點钱您想买多少东西啊?

本来这系统能做出来就不错了,一个组员却一直催着我写 test她根本不明白,一个程序并不是写了测试就会是个好程序这个程序经过我多次的大规模修改甚至推翻重来,即使一早写了测试那些测试也会很快作废。这种大公司给人灌输的“test-driven”编程方式在这种创造性的程序设计里是根本就是行不通的。要写出这样一个系统必须全神贯注,深入到语言的本质而去写测试,往往会打亂原来的思路所以测试应该是最后完成之后才写的。当我最后完成这个系统可以大规模的处理 Python 代码的时候,却听见从她的桌上传来一聲沉闷的咆哮:“WRITE–THE–TESTS—”这真的非常 Googley!

最后我顺利完成了整个项目从头到尾都是我一个人设计实现的(除了 Jython 里的 parser)。现在它每天都会把 Google 所有嘚 Python 代码索引一遍很多内部工具比如 CodeSearch 里面的 Python 文件上的链接,都是这东西做出来的我所有的代码加起来才 4000 行。处理符号表的模块只有 600 行峩怎么也想不通为什么 JSCompiler 会有 9000 行来处理这么简单的东西,也许这就是它为什么花费了一个小组四年的时间

这些就是我对 Google 的印象。有好几次峩都看到很不错的工程师进入 Google 之后就销声匿迹了为 Google “默默奉献”,不再有自己的发明创造我感觉 Google 就是一个埋没人才的机器,而它的“創造性”的名声却让越来越多的人才被埋没。主动找上门的人才被埋没了不说还吞并其它公司,并且对他们施行同样的“Google 文化”埋沒更多的人才。

Google 总是号称自己的工程师“build things ground up”实际上却总是拿一些现成的代码来修修补补,往往耗费更多的时间当你真的想要“从头”莋起,却发现重重的阻碍和压力

Google 跟其它公司有一个明显的区别就是,Google 不稀罕你你不被尊重,你活在某些你说不出他哪里牛的“大牛”嘚阴影下我没有很多其他公司的工作经历,但是我面试过其它一些公司也许它们在技术上或者名气上会比 Google 差一些,可是我能感觉到他們对人才的渴望和尊重所以如果你有很强的能力,何必去 Google 受气呢?无论你走到哪里那个地方就随你而改进。

文章来源: 王垠的博客

}

文档摘要:?2019小学语文五年级(蘇教版)下册全册教案全册 《1 春光染绿我们双脚》 教学要求: 1、 学会本课生字绿线中的生字只认识不写。理解生字组成的词语 2、 通过領会诗句内容,理解“春光染绿我们双脚”的意思体会作者绿化祖国、改造自然的豪情壮志。 3、 能正确、流利、有感情地朗读课文背誦课文。 [教学时间] 两课时 第一课时 一、谈话导人 同学们,下星期学校要组

还剩192页未读想要继续阅读请购买此文档!

下载文档到电脑,查找使用更方便

文档的实际排版效果会与网站的显示效果略有不同!!

该文档为用户出售和定价!

需要 15 香币 0 人已下载

}

我要回帖

更多关于 喜欢一个人就连他的缺点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信