在谷歌和推特两家公司工作情况比较 - ma.nu


2021年,我在谷歌工作了14年后加入了Twitter。以下是我到目前为止注意到的一些差异的小想法:
核心子域与外包
Twitter外包的东西比Google要多得多。
谷歌喜欢用他们自己的解决方案来处理几乎所有的事情。他们甚至曾经有自己的人力资源系统(名字叫GHR),直到他们转而使用Workday。谷歌有他们自己的错误跟踪系统、电子邮件、日历、在线办公套件、代码审查系统、内部沟通和社会互动工具,你可以说出这些。
Twitter使用谷歌日历、电子邮件、办公套件、Jira(错误跟踪器、项目管理)、Okta(单点登录)、Phabricator(代码审查)、Sentry(错误监控)、WorkDay(人力资源、目标设定、同行评审)、Splunk、Office Timeline、Duo(身份验证--当我第一次加入并被告知要在手机上安装Duo时,我感到有些困惑,因为我以为那是指谷歌的视频聊天应用程序)。
这也适用于更多的技术性东西和使用开放技术。
一方面,这使得Twitter不像谷歌那样是一个 "技术孤岛";另一方面,在Twitter上验证上千种服务可能有点不方便(单点登录工具使其大部分不费力,但并非总是如此)。

代码的 所有权
代码的 "所有权 "是一种常见的模式,以防止不良修改。
如要进行任何修改,你需要成为你要修改的那段代码(或超集)的所有者,或者得到所有者的批准。
我在谷歌看到的大多数项目中,所有权的 "颗粒度 "水平要低得多,这意味着一个软件的各个部分和子部分可以由不同的人拥有。一般的经验法则是,你在一个项目上的时间越长,你在所有权树上 "冒泡 "的次数就越多,可以改变或批准对更大块内容的修改。
到目前为止,Twitter有更多的 "全部或没有 "的方法。一旦你成为网络应用程序代码(分别是iOS客户端、Android客户端等)的所有者,你可以对任何部分进行修改(有几个例外)。

代码评审
Twitter的代码审查过程既快,又需要更多的努力。
谷歌的内部代码审查工具为你提供了一个简单而自动化的方法,为一个给定的修改添加一组建议的审查者。它考虑到了代码所有权、时区、不在办公室的人等等。因此,你一般只需按下一个按钮,就可以认为你的修改会在一个合理的时间框架内得到审查。
在Twitter,"代码所有权 "的限制将被强制执行,但由你来指定审查员(作为小组或个人)。一旦你这样做了,你需要明确地要求审查,可以在Slack频道上,也可以给指定的人(我做了一个简单的浏览器扩展,让它更容易一些)。反过来说,你通常可以更快地得到评审。

文档
我没有客观的数据来证明这一点,但我觉得Twitter的工程师们在给他们的代码添加注释和文档方面不太勤奋。
我想说的是,谷歌的大多数团队在这方面远远不够好,但witter的情况更糟糕。
例如,一个好的做法是为每个顶层的 "类"(假设是面向对象的编程模型)提供一个简短的描述,说明它的作用。

黑客周
谷歌有其著名的 "20%项目 "政策已经有很长一段时间了;它现在已经奄奄一息了。我很喜欢Twitter的 "黑客周",因为它清楚地表明,人们不需要在那一周里在他们的主要项目上取得进展。不过,这显然不完全是20%。我想知道每个季度的 "黑客周 "会产生什么。

沟通
Twitter 上的一切都发生在 Slack 上。一对一聊天、不需要开会的团队讨论、全体会议上向领导提出的问题、代码审查请求、社交闲聊等。我什至不费心去参加的情况并不少见几天检查我的工作电子邮件;
这在大多数事情都是通过电子邮件完成的谷歌是永远不会发生的(有些人也使用即时消息,但这些讨论不会被假定为将来存档/保留)。
在 Twitter,与其他内部属性相比,您更有可能通过搜索 Slack 找到与您的问题相关的信息。
不利的一面是,如果 Slack 在任何重要的时间段内停机,那将是生产力/知识的重大损失。