你为什么从谷歌(Google)离职?

关注者
2,450
被浏览
147,909
我是 2010 年下半年离开工作了三年多的 Google 总部回国创业的。

我 Ph.D. 毕业前一年暑假为了找国内的机会回国到北京实习三个月,当时拜访了百度(话说当时还是王梦秋接待的)、微软、IBM。我做了个错误的决定到 IBM CRL 实习了,实习结束就确定了肯定不去 IBM。开学回到美国后有个朋友为了得到 Google 的内部推荐奖励,给很多人群发了邮件收集简历。那时我还没开始找工作,但还是整理了一份简历发给他。经过一轮电话面试和一轮现场面试拿到了 Google 的 offer。这是我唯一的全职工作面试经历。因为当时国内没有特别想去的地方,而 Google 也很不错,所以就决定接受 offer 了。但可以说在进入 Google 的时候就已经准备在合适的时间离开。

在 Google 的感受在另外一个问题里已经回答了:在谷歌 (Google) 工作是怎样一番体验?。虽然正反两面都说了一些,但总体来说 Google 还是一家非常好的公司。如果在今天我必须回到一家大公司工作,我很可能还是会选择 Google。既然问题是离职原因,就只说这方面吧。

对于我来说,在那么大的公司里是很难建立归属感的。你会发觉公司里不同人、不同的团队差别非常大,有非常优秀的、有混日子的;你会发现即使是 Google,也同样会有大公司病和政治斗争;你也会发现在 Google 只有一小部分人是在做 Google Glass 和自动驾驶汽车这样的新奇酷项目的(那时还没这些,Android 和 Chrome 算是前沿项目了)。在 Google 真正赚钱养着所有其他项目的搜索和广告是由一大堆有很长历史的 legacy project 构成的。

我当时的 team 负责的主要项目已有十年历史,Google 刚创立时这部分是用 Python 写的,后来被用 C 重写,后来逐步演变成一个 C++ 的项目,再后来我们开始在里面嵌入 Python 解释器来加快新功能开发。现在我离开了四年,目测还是同一个系统。

这个系统的可执行文件编译出来有 1G 。GCC 因为需要的内存太多无法编译这个项目,所以我们用的都是修改过的 GCC 和 GDB。一开始在 8 核的单机上编译一次大约要 30-40 分钟,后来逐步开始用分布式编译把时间缩短到 5-10 分钟。每次改完一点东西,打出 build 的命令,按下回车,就可以去喝果汁看书了,可以想象效率有多低多痛苦。那时我觉得一个历史那么长并且演变得那么复杂的 C++ 项目能做到那么强的稳定性、那么高的测试覆盖率、每天都有非常多的改动加进去,还要保持 weekly release,简直就是软件工程的奇迹。当时那个 team 的 20-30 人如果是一个小公司,一定是一个非常强的公司,但是在 Google,他们只是一个 legacy system 的守护者。虽然这些工作对 Google 至关重要,但对个人来说改变不了日复一日的感受。

软件工程常说要为人优化,不要为机器优化,因为机器的时间便宜,人的时间贵。花时间在一些细小的优化上,往往机器省下的时间远不能弥补人花掉的时间。Google 在这一点上是个例外。因为 Google 的规模太大,一个工程师花很长时间找到一个微小的优化机会就可能为公司节约大笔的钱。所以对 Google 来说雇很多优秀的工程师来做各种细小改进是很划算的。但是对一个人来说就不是这样了,因为生命的长度摆在那里,该把宝贵的时间花在什么样的事情上对个人和对 Google 答案是不一样的。

在工作中常常会有「如果这么做会不会更好?」的想法,但很多事情在那么大的公司是难以推动和实现的。工作了两年后我就和我的 manager 说再过一年就要回中国了,满三年以后就辞职回国开始了创业历程,去验证那些「如果这么做会不会更好?」的想法。

在 Google 的经历让我看到很多值得借鉴的被实践证明很好的东西,也看到很多在一个小公司可以做得更好的地方。所以在 AVOS Cloud 我们使用为人的效率优化的语言和工具(Clojure),建立了透明和公平的 薪酬体系,努力树立 坦诚和平等的文化。有一些是从 Google 借鉴,有一些是希望能比 Google 做得更好。