报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

硅谷“网红”技术大牛 Steve Yegge:退休后面试工程主管,他们居然让我写点代码

  • 2022-10-16
    北京
  • 本文字数:4726 字

    阅读完需:约 16 分钟

硅谷“网红”技术大牛 Steve Yegge:退休后面试工程主管,他们居然让我写点代码

Steve Yegge 的职业生涯从 1992 年开始,曾先后任职于亚马逊、谷歌、Grab 等企业。他因写有关编程语言、生产力和软件文化的技术博客而受到广泛关注,一些程序员——包括 Python Web Development with Django 的合著者 Paul Bissex——将 Steve 的博客描述为“必读”。

 

其中关于招聘和面试的一系列帖子,因为辛辣调侃和特别的文风,尤其受到关注。

 

2011 年,在谷歌任职时,Steve 写了一篇 3,700 字的评论,在文章中点评了亚马逊和谷歌两家的企业文化,并说道“亚马逊每件事都做错了,而谷歌每件事都做对了”。当时他本来想在 Google+ 上和谷歌的员工进行内部讨论,结果不小心把圈子设成了 Public,这篇吐槽文章就公开给了所有人,Steve 也因此在全球爆红。

 

2018 年,在谷歌工作十三年后,Steve Yegge 决定离开谷歌。至于离职原因,他写了一个更长的帖子,表示“因为谷歌已经失去创新的能力了!”然后事情就再次失去控制了:

至今我依然不能完全肯定,当初那篇“我为何从谷歌离职”博客文章怎么就引起了那么大的关注。基本上我只是表达了“我就是一个喜欢频繁换工作的普通人……”之类的观点,差不多就这意思。可就这么一篇文章被翻译成了大概 80 种语言,甚至变得比 Natalie Portman 的两性专栏更火,老实说,她的专栏内容可有趣多了。

......

 

最近,Steve Yegge 又换了一次工作,结束了短暂的退休生活,入职 Sourcegraph 担任工程主管。

 

这次他在 Sourcegraph 官方博客给大家分享了一些关于代码智能平台的价值观点,经 Steve 授权,我们将他的文章翻译了出来分享给大家(有删节)。

 

编译器的进化浪潮

 

每过十年左右,在编译器领域都会发生一次大型技术变革。

 

上世纪九十年代的变革发生在 Borland,它们曾经在编程语言工具领域拥有传奇式的创新,包括 Turbo C、Borland C++ 和 Turbo Pascal 等等。那一场创新浪潮一直持续到 21 世纪初并转移到微软;与此同时,Borland 的编译器团队却面临着被资本无情摧毁的困局,最后也难逃落寞。

 

微软此后也在编程语言工具领域发起了一轮传奇式的辉煌创新,包括今天我们所能看到的 CLR、C#/.NET、Visual Studio、VS Code 以及其它许多惊艳的产品。

 

你看,编译器圈子为形形色色的开发者工具创造了代码智能作为底层能力支撑,当这些编译器极客们每过几年一起聚在一块时,就说明影响全世界开发者的变革即将发生。

 

到 21 世纪初,这场变革开始向谷歌转移。

 

这正是我曾经工作的地方,和微软在同一条街上的谷歌柯克兰 (Kirkland) 办公室。当微软的开发者在谷歌工作的时候,他们会因为缺乏合适的工具而大发雷霆。尽管所有关于构建、开发和部署的要素都齐全,但是他们无法自如地探索和浏览谷歌的代码仓库,让人感觉一切都是对他们隐形的。

 

2008 年,我终于受够了他们准确但老实说很伤人的抱怨。我决定构建一个强大的代码智能平台,并取名为 Grok。这个平台可以从生产环境的编译器中获取代码智能信息并聚合为可查询的知识图谱,然后再以 API 的形式将这些智能信息提供给其它工具。这是一种可以帮助所有工具让你更轻松地浏览代码的方法。

 

Grok 本身并不是一个产品;它只是一个为其它产品提供底层能力的引擎。

 

Grok 在谷歌获得了持续性的成功,为编辑器、批处理自动化工具、代码审查工作流、搜索引擎、代码浏览器、IDE、命令行、代码查询引擎、Notebooks 以及其它许多临时和定制工具提供代码智能。

 

Google Code Search 当属由 Grok 赋能过的最为强大的工具了,我猜你肯定已经从任何曾经在谷歌写代码的人那里听说过它了。

 

即使站在 2022 年的今天的角度来看,Grok 和代码搜索这对黄金组合所创建的事物也是前所未有的。代码搜索团队在谷歌的可复用搜索基础架构上构建出了谷歌规模的代码搜索。即便没有精确的代码智能,代码搜索自身也是一款非常硬核的产品。

 

Grok 的作用当然是提供了世界一流的代码智能,使得代码搜索可以提高产品的精确度、准确性乃至整体的可信度。

 

就开发者工具而言,信任就是一切。所有的编程语言工具和 IDE 已经在准确性和精确度上设定了非常高的标准。

 

谷歌代码搜索对用户而言就像黑客帝国 (The Matrix) 一样 ,它在谷歌内部调研中获得了近乎完美的满意度,几乎每个离开谷歌的开发者都会想念它。

 

今天,谷歌的工程师可以比其它任何具有同等量级环境的开发团队能更好地探索和理解数以亿计的代码库。

 

你会理所当然的认为有人应该已经帮谷歌以外的我们实现了同等功能。

 

平庸工具拖累了开发者的生产力

 

长话短说,在谷歌之外已经出现过对代码搜索的尝试,可以达到谷歌代码搜索被 Grok 赋能之前的不错水平。但距离 Grok 的诞生已经 14 年过去了,依旧没有人能够在谷歌之外真正地完成这项工作。

 

实不相瞒,我也曾想过自己来担起这份重任;遗憾的是,谷歌并不愿为此花钱。至此,这个项目就进入了搁置期,而我又被云计算、广告业务、游戏业务等等其它事情分去了精力。

 

我就不相信不可能没有别人愿意去做这件事!是吧?

 

其实在那以后已经有许多关于代码智能方面的创新了,包括微软、JetBrains 等等。可惜就是没有人做出能够和 Grok 与之媲美的东西。诚然,即使在谷歌这样具备世界一流的调度基础设施的加持、单一构建系统、少量编程语言和单个大仓的情况下也已经难如登天。

 

这世界上不会再有比谷歌更加同构的环境,却还是让 Grok 险些难产。何谈在谷歌之外创建另一个 Grok?如何支持异构的企业级代码部署环境?可以说是指数级的难度暴增,必须要海量的金钱、人力投入与资源协调才存在一丝可能。

 

结果就是我们的行业充斥着大量平庸的工具。大多数非 IDE 类型的工具都采用了启发式(或者叫错误的)智能而不是编译器级别的精准智能。这意味着开发者会在使用它们的过程中遇到数以千计的不爽之处,拖累了开发者的生产力。

 

有一点很清楚:我们唯一能够见证代码智能复兴的时机是全世界的编译器从业者能够自由地聚集在一起。

 

这就很烧钱了。

 

代码智能平台之路异常艰辛。整整十年,也许更久吧,我已经对其他人的尝试感到绝望。不过我仍希望有一天我可以重拾旧梦。

 

Sourcegraph 面试挑战:他们让我写点代码

 

几个月前,Sourcegraph 两位创始人 Quinn 和 Beyang 联系了我,看看是否适合担任 Sourcegraph 工程团队的负责人。

 

某些程度上讲,Sourcegraph 颇受谷歌内部的代码搜索工具(Google Code Search)所启发,Beyang 此前撰文写过谷歌工作时的故事。从一个局外人视角,我一直很欣赏 Sourcegraph。他们一直以来都在尝试做一些与我想法非常契合的事情。

 

Sourcegraph 主要关注在代码搜索部分(而我在谷歌时没做这块),而且很明显,Sourcegraph 也一直想做更多的代码智能(Code Intelligence)的工作,但代码搜索本身就是一个极具挑战的工程难题。

 

去年(2021 年),某个创业公司的董事会成员问我,为什么他们公司不能用 Sourcegraph 作为源码分析工具?我深入调研了下,留意到 Sourcegraph 在使用 LSIF 索引方案。LSIF 在 Sourcegraph 的使用场景下凑合着能用;但 LSIF 本身是一种有损的格式,作为代码智能平台的索引数据选型方案而言不太够格。

 

如果接下来要我搞 LSIF,那我跟 Sourcegraph 缘分就到此为止了。但我决定还是继续看下情况,因为 Sourcegraph 的营收和企业客户付费在过去两年着实开始爆发。

 

我跟他们的团队成员聊了很多次,然后了解到更多他们的开放式公司文化。这是一个完全远程、重度异步协同的公司,在疫情下简直是初创公司的经典样板。我开始更多地了解他们的产品,这几年来 Sourcegraph 的产品不断在发展成熟。

 

这一切都非常有趣,但并没有到比其他公司更值得我去选的份儿上。

 

但随后一个出乎意料的事情出现了:他们让我写点代码。

 

这是过去 12 个月(我接触了 20 多家公司)的领导力面试环节中,第一次有人让我写点代码。他们希望我写点代码来修复个 Sourcegraph 的 Bug、或添加个功能,或者实现点其他什么的。至于具体我写什么代码,这都不重要。

 

所以我就去写代码了。我接受了这个挑战,然后写了点代码。

 

亲爱的朋友们,这就是为什么我选择加入了 Sourcegraph。

 

因为当我在做这个编码作业时,我发现了两件非常了不得的事情。首先,我发现在跨多个源码仓库的场景下,Sourcegraph 是浏览并理解跨库源码的最佳工具。我当时希望尽快搞定面试编码作业,这意味着我要尽快理解 Sourcegraph 自身的代码。我手头有各种各样的工具:Emacs、命令行、GoLand、VS Code、GitHub,我可以任选它们来完成这个作业。然后我发现当我在尝试梳理 Sourcegraph 前后端逻辑及其他代码时,我用 Sourcegraph 来辅助我的时间比其他工具加起来还多 50%。我并没有刻意为之,用 Sourcegraph 只是恰好是最趁手的方式。

 

重返编译器行业

 

我还发现了点别的:Sourcegraph 自己搞了个 Grok。这项工作是秘密进行的。准确来讲是一个公开的秘密,毕竟 Sourcegraph 源码都是开源可见的。但这年头搜代码也不容易,呵呵。

 

但这甚至对公司的许多其他人而言也是个秘密!或者至少,它的重要意义和改变世界的潜力被很多杂事掩盖住了。这可以理解,真的。毕竟大家事儿都不少。就像我刚说的,Sourcegraph 眼下是个工业级的跨仓库的代码搜索及浏览工具,做到这点需要大量的投入。

 

当这一切都在进行时,Sourcegraph 后端工程师的一小撮群体,在难得的空闲时间里,不知怎么地将代码智能从原型方案一路打磨到企业级可用(仿佛把魔戒从霍比特人村子千里迢迢爬山涉水带到了末日山),与此同时他们一边还要应对代码搜索功能在不断扩展的规模下的技术挑战。

这群编译器极客小分队创造了 SCIP — 代码智能协议(the Source Code Intelligence Protocol)。一个不大不小的玩意,你想要注意到它犹如大海捞针。

 

但在我与他们的技术面试的编码马拉松中,我注意到了 Sourcegraph 底层实现上发生的变化:这是一场革命!这些人正在悄无声息地把 LSIF 替换成 SCIP,作为 Sourcegraph 新的底层架构。

 

Sourcegraph 的 SCIP 代表着 Grok 的王者归来。它是基于启发式搜索的代码智能实现,它的结构范式定义能为开发者效率实现上千倍的效能提升。它在 Sourcegraph 里潜伏了几个月了。

但在被实际使用之前,SCIP 总是被转换回 LSIF 格式!这就是为什么说 SCIP 是仿佛不存在一般。

 

因此,具有讽刺意味的是,他们打造的这个令人难以置信的代码智能引擎,有着喷气式飞机发动机的性能,却被调成拖拉机档位在工作。

 

但它就在那儿。在 SCIP 的基础上进行扩展开发是相对容易的,因为你只需让索引工具收集更多信息即可。Grok 和 SCIP 背后的设计理念是它们是可扩展的。你可以不断地将来自社区、工业界和学术界的智能化数据进行建模。一旦有数据开始产生,SCIP 的广泛采用将势不可挡。

 

Sourcegraph 正在建立一个代码智能平台!想象一下我的震惊。了解我的人都知道,这对我来说是一个多么不可思议的匹配。这就是我未曾完成的事业!很高兴地告诉大家,我作为工程团队的负责人加入了 Sourcegraph,并将一起把 Sourcegraph 带到新高度。我们将很快推出 Sourcegraph 代码智能平台。

 

还记得 Borland 风头正盛的时候吗?那时候 80% 世界上最好的编译器作者齐聚一堂推动了一场 IDE 工具的复兴。然后它在微软又一次发生了,并且规模大得多,仅仅在 Borland 岁月的 10-15 年之后。

 

如今,15 年又过去了,我们又要开始引领这场变革了。编译器社区是一个非常小的圈子,大家彼此都很熟,我们将邀请所有的编程语言、静态分析、构建系统、代码托管和开发工具生态的社区伙伴们一起共建。SCIP 是一种互通的格式。它提供了一条让我们彼此共识、且一同进步的路径。它将带来开发者工具的巨大变局。

 

原文链接:

https://about.sourcegraph.com/blog/introducing-steve-yegge

 

译者介绍:

Joe Chen,Sourcegraph 软件工程师。

Yaohui Wang, 资深 Bug 饲养专家,从事云研发工具建设。

2022-10-16 19:526190

评论

发布
暂无评论
发现更多内容

最佳实践 | 用腾讯云AI人像变换给自己一次“跨越年龄的体验”

牵着蜗牛去散步

人工智能 腾讯云 腾讯 腾讯云AI

带你了解S12直播中的“黑科技”

华为云开发者联盟

云计算 后端 音视频 华为云 实时直播

PLC与SCADA的什么区别和联系

2D3D前端可视化开发

物联网 PLC 工业控制 web组态 SCADA

使用 SAP Cloud Application Programming 编程模型开发一个图书管理 OData 服务

汪子熙

云原生 CAP SAP 企业级应用 11月月更

[力扣] 剑指 Offer 第二天 - 反转链表

陈明勇

Go 数据结构与算法 力扣 11月月更

web技术分享| 日期选择限制组件二次封装

anyRTC开发者

Vue 前端 Web Element

比DataX快20%!SeaTunnel同步计算引擎性能测试全新发布

Apache SeaTunnel

spark DataX Seatunnel 数据集成平台 数据引擎

自制操作系统日记(7):字符串显示

操作系统

实时云渲染vs本地渲染,哪个更好用?

Finovy Cloud

云渲染 实时云渲染

全国首个AIGC创作大赛开赛,创作者可靠“AI打工人”躺赚

科技热闻

RxJS 全面解析

PingCode研发中心

响应式编程 RXJS reactivex

SREWorks v1.3 版本发布 | 插件机制发布

阿里云大数据AI技术

大数据 运维 插件

Dive into TensorFlow系列(2)- 解析TF核心抽象op算子

京东科技开发者

tensorflow TF2 Tensor Op

Docker发布/上传镜像到dockerhub&&下载/拉取镜像&&删除dockerhub镜像

A-刘晨阳

Docker Linux 运维 11月月更

制造业行业现状及智能生产管理系统一体化解决方案

优秀

制造业 生产管理系统

Dragonfly 中 P2P 传输协议优化

SOFAStack

开源

阿里云产品经理刘宇:Serverless 的前世今生

云布道师

阿里云 Serverless 云原生

技术分享 | 测试人员必须掌握的测试用例

霍格沃兹测试开发学社

RxJS 全面解析

阿杰

JavaScript 响应式编程 RXJS

微服务熔断限流的一些使用场景

Java永远的神

Java 程序员 微服务 程序人生 架构师

2023年语言和框架我们值得关注什么?

阿里巴巴终端技术

框架 语言 & 开发

[力扣] 剑指 Offer 第二天 - 从尾到头打印链表

陈明勇

Go 数据结构与算法 力扣 11月月更

python小知识-python时间操作

AIWeker

Python python小知识 11月月更

软件测试 | 测试人员必须掌握的测试用例

测试人

软件测试 自动化测试 测试开发 测试用例

OceanBase 首席科学家阳振坤博士入选2022 年度“CCF王选奖”

OceanBase 数据库

直播预告|OceanBase 社区版 4.0 全解析

OceanBase 数据库

docker修改容器的端口、容器名、映射地址......

A-刘晨阳

Docker Linux 运维 11月月更

Docker——denied: requested access to the resource is denied问题以及解决方法

A-刘晨阳

Docker Linux 运维 11月月更

Kotlin函数声明与闭包

子不语Any

android kotlin 11月月更

使用SQL加密函数实现数据列的加解密

华为云开发者联盟

大数据 后端 华为云 数据加密

华为云开发者日震撼来袭!11月20日,上海见!

华为云开发者联盟

开发者 华为云

硅谷“网红”技术大牛 Steve Yegge:退休后面试工程主管,他们居然让我写点代码_语言 & 开发_Steve Yegge_InfoQ精选文章