为所有离职的谷歌工程师写的一份“厂外”生存指南

一位曾经的谷歌工程师,花费两年时间,辛苦整理了一份清单。
这个名为“xg2xg”的清单,原本是这位前谷歌工程师(ex-googler),为所有离职的谷歌工程师写的一份“厂外”生存指南。
但实际上,这个大全实打实地也成为了一份最佳开发工具大全。
所有的程序员,都能受益于此。
美国网友对这个大全给予了很高的评价:这份清单中列出的开源软件,不仅解决了硅谷大厂前员工的难处,也能为其他所有码农解除困惑。
在这套大全的指导下,任何一个工程师,都能获得类似在谷歌内部写代码的体验。xg2xg上线仅仅一天就登上趋势榜,收获2500+星!
清单其中大部分替代软件是google开源的项目,或者是受谷歌论文的启发,由开源软件基金会自己做的第三方实现。即使你从来没进过google工作,也在享受着google工程师们带来的福利。不禁让人感叹“谷歌拯救世界”。
下面就让我们一起来看看这份清单吧。
开发工具一览
这份清单总共有两部分,前半部分介绍的是码农常用的开发工具,包括核心技术、基础设施、服务、开发运维等;后半部分则面向非技术人员。
核心技术工具
大数据处理工具
google内部工具:mapreduce;替代品:apachehadoop、spark
想要在上千台机器组成的大集群上、并行处理上tb级别的海量数据集,就要用到这类大规模数据处理工具了。
mapreduce,就是这类工具的先驱。jeffdean等人2004年提出了这个分布式计算架构,最早在google内部用来处理大规模数据的并行计算。jeffdean还亲自为它撰写过使用指南。
而apachehadoop这个开源替代品,也是根据jeffdean当年的论文自行实现而成,能提供与mapreduce文件系统类似的功能。
如果想要更快的数据处理速度,还有apachespark供你选择。相对于hadoop的mapreduce会在运行完工作后将中介数据存放到磁盘中,spark使用了存储器内运算技术,能在数据尚未写入硬盘时即在存储器内分析运算。
序列化工具
google内部:protocolbuffer;外部替代品:protobuf、thrift、avro
这一组工具用于结构化数据序列化,上面这些,都是xml替代品,比它更小、更快、也更简单。
protocolbuffer和protobuf都是google开发的序列化格式(serializationformat),github上可以找到这个项目的源代码。
比起xml和json,protobuf更小、更快,也更简洁,很适合做数据存储或rpc数据交换格式。只需要定义一次数据结构,就可以利用各种不同语言或者从各种不同数据流中对结构化数据进行轻松读写。
完全撇开google,也不是就没有别的选择了。其他厂商也有类似的序列化方案。
比如facebook开发的thrift,它与protobuf基本一样。
avro同样也有schema(也就是程序中结构化数据的定义),但是实现方式跟protobuf和thrift有很大区别。
由于数据不需要额外的标注,avro在序列化大量相同的数据时会比protobuf和thrift更有效率。不过在编码大量变化的数据时,因为schema会随数据一同存储,avro的效率会退化到json和messagepack的级别。
看来在核心技术工具上,重回人间的前google人还是有许多不错的选择的。
基础设施
大型集群管理系统
google内部:borg;外部替代品:kubernetes、apachemesos、hashicorpnomad
大型集群管理系统用于管理云平台中多个主机上的容器化的应用。
borg是google内部的大型集群管理系统,现如今应用最广泛的服务编配系统kubernetes就脱胎于borg。
borg让开发者能够不必操心资源管理的问题,做到跨多个数据中心的资源利用率最大化。
没有borg十五年的经验,也就不会有kubernetes。虽然作者把它放在开源/真实世界这一栏里,但事实上kubernetes也是由google设计并参与开发的。
kubernetes使用go语言编写,是一个大而全的解决方案,服务调度、网络、存储、安全通通一手抓,而且本身的架构也非常好,在上面做二次开发非常容易。
hashicorpnomad同样是一个比较常见的开源调度程序,架构简单,能将资源管理器和调度程序的功能集成到一个系统中。nomad也是分布式的,高可用且易操作。但显然kubernetes的功能会更丰富。
至于mesos,它仅仅是一个调度系统,无法直接使用,要配合各种mesosframework来实现各类功能。
存储
当然,google内部工具也不是所有的都能找到完美的替代品。
至少在存储这件事情上,就有网友不赞同原作者观点。他认为这份清单在一定程度上具有误导性,某些替代品根本达不到google内部工具的水平。
比如将colossus和hdfs对比是在开玩笑,相比之下,hdfs就像是一个玩具。要说对比,它智能和十年前已经退役的gfs相当。
但hdfs恐怕是开源软件中colossus最好的替代品,对于“通用,大型,分布式文件系统”的使用情况,很难找到有比hdfs更好的了。
其他开发工具
列表中还有服务、开发运维、安全等工具的替代品清单,由于篇幅限制,我们不再一一介绍,有需求的同学可以自取。全部工具的下载链接请参阅文末的github地址。
还有什么福利
如果你不是工程师,上面那些工具大概就用不上了。不过,只要是个公司或者团队,总会有it和运营需求。
比如说,饭总是要吃的。
很多网友看了这份清单,最感兴趣的就是这一项:
离开google的人类,再也找不回免费食堂。
毕竟,“中午吃什么”的哲学问题,每次想起来都是折磨。
羡慕的时候,可以用以下口令来安慰自己:
公司有吃的,还不是为了让你们多点时间工作?
如果你觉得这一条说服力不够,还可以跟一句补充说明:
google最初是为什么提供免费食物的?就是山景城总部周围吃的选择太少了,开车出去吃来回要一小时。对,就是想让员工省下时间好好上班。
吃,只是it/运营章节的第一条。
后面,还有梗图生成器memegen。
工作太辛苦的时候,可以皮一下:
△当没有gpu的人,遇到了google colab
对此,甚至有人呼吁:
如果google全家桶把memegen收了就好了。
所以,这个章节并没有和工作相关的资源么?
看看完整列表的话,还是能找到的:
有一些必要的小工具。
比如,codeowners可以用来指定哪些用户来审查代码,1password是个密码管理器。
也有一些同学,没在上面找到自己需要的答案,便直接提问了:
google这样的大厂,公司内部wiki用的是什么啊?我们公司用的是quip,它就是个黑洞,文档一进去就出不来了。
然后,有热心人士回答了这个问题:
虽然不知道google用的什么,但confluence是很常用的。
xg2xg项目地址:https://github.com/jhuangtw-dev/xg2xg

Zoom推出会议应用程序 助Apple Vision Pro头显更沉浸式
TWS耳机助攻!穿戴智慧音频装置年出货3.5亿副
AMD锐龙7 4700U性能曝光,领先于英特尔十代酷睿i7
功率放大器在椭圆超声辅助机械抛光研究中的应用
应用在电子体温计中的国产温度传感芯片
为所有离职的谷歌工程师写的一份“厂外”生存指南
关于风能资源丰富的原因
第五代Wi-Fi芯片传输速度将达1Gbps 构建无缝连接城市
Win-Win华为创新周上看华为助力运营商开辟数智化新蓝海
SpringBoot模板分类树查询功能介绍
人工智能在教育上的想象可以实现吗
基于8位十进抽可逆计数器电路
四核市场外热内冷:芯片多核化趋势放缓
诺基亚:5+3=8但不等于诺基亚8,这碗毒情怀我不喝!
利用音圈电机无人机运送海鲜
乐视新机搭载AR助手,小米6半路截胡,骁龙835双摄曲面屏
虹科新品 | 虹科12端口TSN交换机正式发布!快来了解还有哪些新功能吧
晶圆厂缺产能,相关厂商上涨产品价格
任天堂因Switch手柄问题面临集体诉讼
热管理在汽车电子设计中的重要性