The Pragmatic Engineer - Kubernetes 与凯尔西·海特沃的巅峰退休 封面

Kubernetes 与凯尔西·海特沃的巅峰退休

Kubernetes and retiring at the top with Kelsey Hightower

本集简介

由以下品牌赞助: • Antithesis — 无需人工审查或传统集成测试,即可验证系统正确性,避免bug或停机。 • Buildkite — 专为应对开发团队向构建队列提交的任何负载而设计的CI软件。 • Sentry — 被数百万开发者认为“还不错”的应用监控软件。 — Kelsey Hightower 从一名自学成才、安装DSL调制解调器的技术员,成长为谷歌顶尖的杰出工程师之一,甚至曾被微软CEO亲自挖角。他的职业成就源于勤奋工作与自主学习,如今他通过演讲、开源项目和写作,成为现代基础设施领域最具影响力的声音之一。 在本期《务实工程师》播客中,Kelsey 与我探讨了他非传统的入行之路,以及他在三十多年行业生涯中积累的宝贵经验。我们聊到了他的创业岁月、通过开源建立声誉、容器和Kubernetes的兴起,以及他在云计算最关键时期于谷歌的工作经历。 他讲述了来自一家科技巨头的录用通知如何带来了他职业生涯中最大的加薪,是什么促使他在多年快速晋升后选择放慢脚步,我们也讨论了他对人工智能的看法。贯穿始终,Kelsey 始终牢记一个简单理念:技术归根结底是关于人的。无论是基础设施、领导力、职业发展还是AI,他认为目标不是为技术而技术,而是解决真正有意义的人类问题。 — 时间戳 00:00 引言 03:34 Kelsey 在麦当劳的第一份工作 05:04 他非传统的入行之路 11:45 凭借A+认证获得第一份技术工作 15:33 他的创业岁月 19:45 以数据中心技术员身份加入谷歌 27:48 在Rackspace衍生公司学习自动化 33:26 转向金融服务领域 50:00 通过开源建立声誉 53:55 从配置管理到容器 1:08:20 Kubernetes的崛起 1:25:05 为何他差点加入NASA而非谷歌 1:29:20 在谷歌定义DevRel 1:38:20 在谷歌展示影响力 1:41:20 微软的offer 1:55:20 学会放慢脚步 2:06:39 咨询与投资 2:15:03 以人为本的生成式AI观 2:24:27 带有约束的AI使用 2:28:26 将AI匹配到合适任务 2:36:06 在AI时代保持相关性 — 本期播客相关深度内容(来自《务实工程师》): • 大型科技公司中软件工程师的职业路径 • 现代后端实践的过去与未来 • Kubernetes是如何构建的 • Linux是如何构建的 • 高级工程师之路:你现在是榜样了(抱歉!) — 制作与营销由 ⁠⁠⁠⁠⁠⁠⁠⁠https://penname.co/⁠⁠⁠⁠⁠⁠⁠⁠ 负责。如需赞助本播客,请发送邮件至 podcast@pragmaticengineer.com。 立即订阅获取《务实工程师》完整内容:newsletter.pragmaticengineer.com/subscribe

双语字幕

仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。

Speaker 0

凯尔西·海特沃是 Kubernetes 社区最具影响力的声音之一。

Kelsey Hightower is known as one of the most influential voices in the Kubernetes community.

Speaker 0

但你绝对想不到他职业生涯的起点是什么样子。

But you wouldn't guess from how his career started.

Speaker 0

19 岁时,他辍学去安装 DSL 调制解调器,后来自学成才成为开发者,最终成了谷歌的杰出工程师。

At 19 he dropped out of college to be a DSL modem installer, became a self taught developer and still went on to become a Distinguished Engineer at Google.

Speaker 0

43 岁那年,他在事业巅峰选择退休。

At age 43 he then retired at the very top of the industry.

Speaker 0

今天我们聊:凯尔西如何走上一条非传统的技术之路,他是怎么不断为自己创造机会的——很多时候他自己都没意识到;还有容器大战的内幕,Puppet、Docker、Terraform、CoreOS,以及 Kubernetes 最终是怎么胜出的。

Today we cover: Kelsey's unconventional path into tech and how he kept creating new opportunities for himself, often unknowingly, the inside story of the Container Wars, Puppet, Docker, Terraform, CoreOS and how Kubernetes eventually won.

Speaker 0

他从谷歌的普通工程师一路做到高管,还亲自回绝了萨提亚·纳德拉抛来的微软邀约,最后薪资翻了一倍。

Going from a Google IC to executive level and how he redirected a Microsoft offer from Satya Nadella himself and still doubled his compensation.

Speaker 0

他对那些担心 AI 会让软件工程师岗位变得无价值的人,给出了务实又接地气的建议,还有很多其他内容。

His grounded and pragmatic advice for software worried about being commoditized by AI and so much more.

Speaker 0

如果你是一名工程师,正在思考自己的长期职业方向——不管是想晋升到资深工程师,独立发展,还是悄悄计划退出这个行业,这一期节目就是为你准备的。

If you are an engineer thinking about your long term career trajectory, whether that's getting into a staff plus level, going independent or even quietly planning to leave the industry, this episode is for you.

Speaker 0

这一期比平常的要长一些,说实话,我根本坐不住,全程都被Kelsey的故事吸引着,一直在听,也在思考。

This episode is longer than a normal episode, frankly because I was so glued to my chair, mostly listening to Kelsey's stories and thinking.

Speaker 0

本期节目由Antithesis赞助播出。

This episode is presented by Antithesis.

Speaker 0

无需人工审查或传统集成测试,就能验证系统的正确性,避免bug和宕机。

Verify your system's correctness without human review or traditional integration tests and avoid bugs or outages.

Speaker 0

在开始之前,我想先介绍一下我们的赞助商Antithesis,顺便讲点背景故事。

Before we start, I'd like to mention our presenting sponsor Antithesis and maybe offer a little history lesson.

Speaker 0

过去二十年,软件开发的思维方式已经从命令式转向了声明式。

Over the last two decades, software development has gone through a mindset shift from an imperative approach to declarative one.

Speaker 0

基础设施就是一个绝佳的例子。

Infrastructure is a perfect example.

Speaker 0

想想Puppet和Ansible这样的工具,它们让你只需声明每台服务器该怎样配置。

Think about how tools like Puppet and Ansible allow declaring how individual servers should be configured.

Speaker 0

后来出现了Terraform,你可以直接声明整个基础设施的最终状态——服务器、网络、数据库,以及它们之间的关系。

Then came Terraform, the ability to declare the desired end state of your whole infrastructure, servers, networks, databases and their relationships.

Speaker 0

到了 Kubernetes,我们就不再去写脚本控制容器的生命周期了。

And then with Kubernetes we stop scripting container lifecycles.

Speaker 0

相反,我们写配置文件,只说清楚我需要三个这个应用的副本,通过某个服务暴露出来,分配多少 CPU 和内存就够了。

Instead we write manifests that say things like I want three replicas of this application exposed behind a surface with this much CPU and memory.

Speaker 0

一旦不用再事无巨细地描述基础设施的每个细节,软件部署就快多了。

Once we didn't have to specify every little detail of our infrastructure anymore, deploying software became much faster.

Speaker 0

但紧接着,瓶颈就变成了代码部署前测试和验证的速度。

But then the bottleneck became how quickly we could test and verify the code to be deployed.

Speaker 0

测试依然是命令式的。

Testing remained imperative.

Speaker 0

我们还是得为每一个小细节都写测试用例。

We had to write tests for every little detail.

Speaker 0

而现在,有了大语言模型,代码编写方式也正站在从命令式转向声明式的门槛上。

And now with LLMs we are on the verge of a declarative shift in the way code is written as well.

Speaker 0

你只管告诉模型你想要什么,剩下的让它自己去搞定。

Just tell the model what you want and let it figure out the details.

Speaker 0

这会让验证的瓶颈变得糟糕一百万倍。

And it's going to make the verification bottleneck a million times worse.

Speaker 0

Antithesis 是一个声明式的测试工具,能跟上你用 AI 写代码的速度,欢迎来到这个播客,Kelsey。

Antithesis is a declarative testing tool that can keep up with your AI coding Kelsey, welcome to the podcast.

Speaker 0

真高兴能当面见到你。

It's so nice to see you in person.

Speaker 1

是的。

Yeah.

Speaker 1

我其实很高兴能来,因为我这些年一直关注你的工作。

I'm actually happy to be here mainly because I kinda look at your stuff over the years.

Speaker 1

能来到阿姆斯特丹,我也感到很荣幸。

So it's honored to be here in Amsterdam as well.

Speaker 0

你第一份工作赚的第一笔钱是怎么来的?

How did you make your first dollar at a job?

Speaker 1

哦,我第一份工作是在麦当劳。

Oh, my first dollar at a job, McDonald's.

Speaker 1

对吧?

Right?

Speaker 1

这算数。

That counts.

Speaker 1

上高中时,你找的工作离家最近,所以我找的那家就在步行范围内。

So in high school, you get the job that's closest to you, so it was in walking distance of my house.

Speaker 1

一满14岁,我就去办了工作许可,直接去了那儿。那种工作就是你去填个申请表,当天就能拿到回复,通常当天就能被录用了。

As soon as I turned legal age 14, get a work permit and I went there and it was one of those jobs where you know, you go, you fill out the application the same day, you typically get your information or you're gonna get hired the same day.

Speaker 1

什么时候能上班?

When can you start?

Speaker 1

我现在就能开始。

I'm like right now.

Speaker 1

他们去后面给你拿件制服,你穿多大号?

They go get a shirt for you in the back, and what size do you wear?

Speaker 1

男款大号。

Men's large.

Speaker 1

我喜欢这份工作的一点是,你打交道的都是赶时间的普通人。

And the one thing I liked about that job is you're dealing with real people that are in a hurry.

Speaker 1

这份工作也有不好的地方,很多人看不起干这行的,觉得你就是个中间人,帮他们搞定事情而已。

I guess one bad part about the job, know, lot of people don't respect people who have that job, so they kind of look at you as just like this intermediary thing between them and what they want.

Speaker 1

但这种餐厅里头要操心的事太多了,流程特别讲究,顾客的期望也高。

But there's so many things that go into a restaurant like that, it's very efficient, people have expectations.

Speaker 1

到我15岁的时候,我已经能独立管理整个店了,当上了副经理。

And I learned how to run the whole store, by the time I turned 15, I was a assistant manager.

Speaker 1

晚上和周末,其他经理一走,就把钥匙交给我这个15岁的孩子。

So nights and weekends, you know, other managers would leave, they would give this 15 year old the keys.

Speaker 1

店里所有事我都会,包括打烊收尾,对吧?

And I knew how to do everything there, including close out the store, right?

Speaker 1

你得清点所有现金,每晚都要传真一份超长的报表给总部,然后我妈来接我。

So you have to count all the money, you have to fax this huge spreadsheet to corporate every night, and then my mom would pick me up.

Speaker 1

那会儿我才15岁,却学会了像成年人一样承担责任,真的受益匪浅。

And so it was really good learning how to really be responsible even for adults at that age.

Speaker 1

所以,我就是靠这个赚到了第一块钱。

So that's how I got my first dollar.

Speaker 0

那你是怎么进入科技行业的呢?

How did you get into tech?

Speaker 0

你又是怎么开始学编程的?

How did you get into programming?

Speaker 1

上高中的时候,我从加州搬到了亚特兰大,相当于横跨了整个美国,结果缺了大概三到六个月的课。

In high school, since I moved from California to Atlanta, so you're going from one side of the country to another side of the country, and I missed maybe three to six months of school.

Speaker 1

为了能按时毕业,我不得不加选一些课程。

And in order to graduate on time, I had to take some extra classes.

Speaker 1

我那时候喜欢运动,练田径、踢足球、打篮球,结果突然冒出个计算机编程课,不是什么电脑俱乐部或者科技协会,就是正经的课程。

And so as someone who played sports, ran track, played football, played basketball, and it's like, you know, there's this computer programming, not, you know, computer club, technology student association.

Speaker 1

这课分两部分,白天上课,放学后还有额外活动。

There was a class component and then there was after school component.

Speaker 1

我当时就想,这玩意儿是给书呆子准备的吧,我可不想显得不酷。

And I was like, I don't know, man, this computer stuff, that's for the, you know, I'm trying to be a cool kid.

Speaker 1

但我真的特别喜欢这一项,对吧?

But the one thing I did, really enjoyed it, right?

Speaker 1

所以我对AutoCAD特别感兴趣,还参加过州级比赛。我们开车过去,比赛时给你一个任务,让你坐在电脑前完成。那是我第一次参加,但我特别喜欢把设计要求转化成图纸的过程。本来我可能拿第一的,可惜没把作品打印出来,评委得看打印稿才能打分。

So I had a liking to AutoCAD, I even competed at the state level in AutoCAD, so we drove down and you compete, they give you a task and you sit in front of the computer, it was my first year doing it, but I really liked the idea of like taking a specification, designing it and I probably would have gotten first place if I would have got the product to work because you also have to print it out so that the judges can review your work.

Speaker 1

虽然没打印出来,我还是拿了第二名。

I got second place even though I didn't

Speaker 0

AutoCAD是三维建模吗?

put AutoCAD, it this is a three d modeling.

Speaker 1

对,就是AutoCAD,就只是AutoCAD。

Yeah, AutoCAD, you know, just AutoCAD.

Speaker 1

课程里有一部分是搭桥梁,还有个叫‘章节队’的活动,你要设计族徽,然后搞辩论。

Yeah, so part of the curriculum was, you you build bridges, we did this thing with chapter team where, you know, you have a coat of arms and you're kind of doing like a debate.

Speaker 1

你得学一堆跟商业有关的东西,但CAD是我最喜欢的部分。

You kind of learn all of these things related to business, but CAD was one of the things I liked most.

Speaker 1

那门课里,有个同学还教了我TI-BASIC。

Also in that class, one of the classmates taught me TI basic.

Speaker 1

这是某种 BASIC 语言吗?

Is that a version of basic?

Speaker 1

TI BASIC 呀,就是那种图形计算器,比如 TI-86 那种。

Well, so TI basic, so you know the graphing calculator, it's like a TI 86.

Speaker 1

哦,对。

Oh, yeah.

Speaker 1

你可以给它编程。

You can program it.

Speaker 1

上课的时候老师就说,这不只是个图形计算器,其实能写程序。

Right, so in class they're like, hey, you know, it's not just a graphing calculator, you can actually program it.

Speaker 1

我当时就问,那是什么?

And I was like, what's that?

Speaker 1

他们说,你看,那时候大家都会写贪吃蛇游戏。

And it's like, look, we can, you know, every one at that time, you would create the Snake game, right?

Speaker 1

就是拿本杂志,把代码抄下来,然后运行就行。

So it's basically get a magazine, copy and paste the code and then you run it.

Speaker 1

现在你玩的贪吃蛇,是用你自己写的代码跑的。

And now you're playing snake based on the code you wrote.

Speaker 1

于是你就开始摆弄这个想法。

And so you would toy around with this concept.

Speaker 1

所以,我第一次接触编程,其实就是给我的TI-86计算器写程序。

So that was probably the first introduction to programming was literally programming my my TI 86 calculator.

Speaker 0

高中毕业后,你上大学了吗?还是考虑过上大学?

And after high school, did you go to college or you considered college, right?

Speaker 1

我确实考虑过上大学,因为那时候在佐治亚州,现在也一样,有个叫HOPE的项目。

I considered college because in Georgia at the time, and still today, there's a thing we're called the HOPE program.

Speaker 1

只要你平均成绩达到B以上,就能免费上任何公立大学。

So if you have a B average or above, you can go to any public school for free.

Speaker 1

佐治亚州的公立大学包括佐治亚理工和佐治亚州立大学,都是不错的学校。

And public schools in Georgia include Georgia Tech, Georgia State, these are pretty good universities.

Speaker 0

确实很不错。

They're really good.

Speaker 1

所以我选了一所离家近的学校。

And so I decided to go to one that was near me.

Speaker 1

前两周我心想,这也太慢了,这不是我想追求的节奏。

The first two weeks I was like, this is too slow, this is not the pace that I wanna move at.

Speaker 1

别忘了,我毕业那年是1999年。

And also remember, it's 1999 when I'm graduating.

Speaker 1

那时候打开电视,到处都是人排队等着买新版Windows。

And so when you turn on the TV, people are standing in line for the next version of Windows.

Speaker 1

整个社会情绪高涨,AOL正逐渐退出舞台,高速互联网才刚刚起步。

There's a lot of euphoria, AOL is starting to phase out and we're starting to touch on high speed Internet.

Speaker 1

我当时就想,天啊,这发展速度太快了,而且你还能听到各种说法。

And and I was like, yo, look at look at the pace this is moving, but also you're hearing the narratives.

Speaker 1

比尔·盖茨从大学退学了,大家不再一味推崇学历了。

Bill Gates drops out of college, these people are not necessarily glorifying the degree anymore.

Speaker 1

现在看重的,是真本事。

It's all about the skill.

Speaker 1

但对我来说,不幸的是,我一个程序员都不认识。

Now, unfortunate for me, I didn't know anyone that was a programmer.

Speaker 1

我也不认识任何系统管理员,因为那时候,像太阳微系统或者IBM大型机这些,还是企业里的主流。

I didn't know anyone that was like a system administrator because at that time, all the systems like Sun Microsystems or IBM mainframe, those are still the things that are in the enterprise.

Speaker 1

所以当我看招聘信息时,发现上面写的那些技能,我根本不知道该怎么去学。

So when I look at the job openings, I'm seeing a bunch of skills that I don't even know how to acquire.

Speaker 1

于是我没有去上大学,而是继续在快餐店打工,那时候还在必胜客送披萨。

And so instead of going to college, I'm still doing fast food, delivering pizzas at this time at Pizza Hut.

Speaker 1

我记得去过一家书店,那里有A+认证的备考指南。

And I remember going to a bookstore and they had the A plus certification guide.

Speaker 1

我翻了翻一些招聘启事,上面说‘需要A+认证’,要么做技术支持之类的职位。

And I looked in some of the job postings said, hey, you need to be A plus certified, take this support role or whatever it was.

Speaker 1

我当时就想,诶,这个好像不需要上大学。

And I was like, you know what, that doesn't require college.

Speaker 1

那本书才35美元,我记得买下来了,它是个正规的认证流程,看起来确实和就业市场挂钩。

The book is only $35 And I remember buying the book and it is an official certification process, it looks like it was part of the job market.

Speaker 1

我记得买了那本书,一遍又一遍从头到尾读了个遍。

And so I remember buying that book and reading it cover to cover over and over again.

Speaker 1

你学到了所有基础知识,比如主板、内存这些部件是怎么工作的,还有操作系统部分,书后面还附带一个小测验。

And you're learning all the fundamentals, You're learning about, you know, how motherboards and how memory and all these things work, and there's an OS component, and there's a little practice exam in the back.

Speaker 1

对我这样的人来说,这种即时反馈特别有用——把光盘一放,做一遍测试,虽然是选择题,但只要答错了,我就立刻翻回书里,弄明白哪里没懂,再重新考一次。

And so for someone like me, having that fast feedback loop of like, you put the CD in, you take the exam, and even though it was multiple choice, you kind of felt like, if I got anything wrong, I would just go back to the book and make sure that I understood what was written there and then you go take the test again.

Speaker 1

题目还带点随机性,所以你没法靠死记硬背蒙混过关。

And it had a little randomization to it, so you can just rely on absolute remembering everything.

Speaker 1

我记得去考试中心参加测试,坐在小房间里,他们怕你作弊,摄像头一直对着你,你就埋头答题。

And I remember going to the facility to take the test and you know, you're in that little room and they want to make sure you don't cheat, there's a camera pointed at you, and you're just going through it.

Speaker 1

这类考试的好处是,没有陷阱题,懂就是懂,不懂就是不懂。

So the nice thing about those tests, there's no trick questions, either you know it or you don't.

Speaker 1

我想他们大概给了你一小时到一个半小时的时间。

And I think they maybe give you an hour, hour and a half.

Speaker 1

我记得我十分钟就做完了。

I remember finishing that thing in like ten minutes.

Speaker 1

我走过去等着,拨号连接完成后,系统算出分数,然后说:‘恭喜,你通过了。’

And when I walked down, you wait, the dial up goes and they calculate your score and say, hey, you passed.

Speaker 1

走出来的时候,你就成了A+认证持证人。

And then you walk out and you're like A plus certified.

Speaker 1

那是我职业生涯中第一次真正感觉到,只要肯下功夫,就能拿到证书。

And that was like the first time in my career that I felt like, oh, so if you put the effort in, you can gain the certificate.

Speaker 1

拿到证书后,我记得有个招聘会,说只要持有A+和Network+认证的人,就可以加入那些帮用户把拨号上网换成DSL的外包团队。

And when I got that certificate, I remember there was like a job fair where, hey, anyone that has A plus and Network plus certification, you can be part of the contractors that were replacing people's dial up with DSL at the

Speaker 0

时候。

time.

Speaker 0

明白了。

Okay.

Speaker 1

所以,我算是正式踏入了科技行业。

And so that's how I, I guess, officially got into tech.

Speaker 0

这么说吧,当时你觉得这是进入科技行业最有效的方式吗?

Is it fair to say that you saw that this could be the most efficient way to get into tech at the time?

Speaker 1

我觉得我说过,我觉得那是唯一的路。

I think I said I saw it as the only way.

Speaker 0

那为什么大学从没跟你说过,嘿,这条路也行?

Why was college never like telling you like, okay, that could be a way?

Speaker 0

是因为你没见过这样的例子吗?

Was it just you didn't see examples?

Speaker 0

是啊。

Yeah,

Speaker 1

我从来没见过这样的例子。

never saw the examples.

Speaker 1

我也没看到过最终的目标。

I never saw the end game.

Speaker 1

他们教的那些课程,真不值那么多钱。

A lot of the stuff that they were teaching the curriculum, it didn't make sense that you would pay all that money.

Speaker 1

说实话,也许学校不够好,也许我选的课不对,能影响这事的因素太多了。

You know, look, maybe it wasn't a good school, maybe it was the wrong class that I took, there's so many factors that could have went into this.

Speaker 1

但当我回头看的时候,我那时仰望的那些人,走的都不是这条路。

But when I looked at it, none of the people that at the time that I was looking up to, this is not the path that they seem to be taking.

Speaker 1

所以我对学校彻底厌倦了,对吧?

And so I had enough of school, right?

Speaker 1

如果你那时候才十八岁,就会觉得:够了,这玩意儿我不玩了。

If you're 18 at that time, you're like, look, that's enough of this.

Speaker 1

因为那时候,我觉得上学对我而言太轻松了。

Because at the time, I kind of felt school was this because it was so easy for me actually.

Speaker 1

拿全A根本不是难事。

You know, it's like, it was easy to get straight a's.

Speaker 1

我感觉不到任何真正的挑战。

I didn't feel like there was a serious challenge.

Speaker 1

所以我就想:嘿,真要再花四年做这种事?

So it's like, hey, I wanna go and do four more years of this.

Speaker 1

后来我才明白,本科阶段学的东西,其实跟中小学阶段差不了多少。

And I would later learn that, look, bachelor's is a lot of the similar that you go through through k through 12.

Speaker 1

你多少会记得一些内容,也会听讲,但到了硕士阶段,真正考验的是你对知识的掌握。

You kinda remember stuff, you listen to the lessons, but then master's, challenge the material.

Speaker 1

当然了,如果你能走到博士阶段,理想情况下,你是在为这个领域增添新的东西。

And of course, if you make it to PhD, ideally, you're adding something new to the field.

Speaker 1

可我从来没见到过谁真的走到那一步。

And I never saw anyone that has made it that far.

Speaker 1

所以,我压根没把读博算进我的计划里。

So I never put that in part of my calculus.

Speaker 1

关键是,拿到那个A+认证后,立刻就能感受到反馈——我准备好进入实际的职场和行业了。

So, but just having that immediate feedback loop of like getting this A plus certification, and feeling like, I'm ready to participate in the actual economy, the ecosystem.

Speaker 1

对我来说,这条路看起来更合适,而且感觉掌控权在我自己手里。

So to me, was like, this seems like a better path and it felt like a path that I would control.

Speaker 0

是的。

Yeah.

Speaker 0

那你拿到认证后,第一份工作是做什么的?

And then what was your first job that you could get with with the certification?

Speaker 0

这个是传播系的助教,对吧?

This was the comm TA, right?

Speaker 1

是的。

Yeah.

Speaker 1

那时候,贝尔南方公司是美国最大的电信公司,虽然已经从AT&T拆分出来了。

So at that time, Bell South was, you know, the biggest telco, probably in America, know, they had been broken up by that time from the AT and T days.

Speaker 1

就是负责电话线路的那家公司,对吧?

At that time, the people who did phone lines, right?

Speaker 1

那些是正牌的贝尔南方技术员,开着高级卡车,带着全套设备。

So those are the official BellSoft technicians, they drive the fancy trucks, they have all the equipment.

Speaker 1

后来他们转向高速互联网时,就得实际接触电脑了。

And when they made the shift to high speed Internet, that means you had to actually touch the computer.

Speaker 1

我觉得作为工会,他们的态度是:我们不碰电脑,连屋里都不进,到分界点就停手。

And I think as a union, they're like, look, we don't touch the computer, we don't even go into the house, we get to the demark and we stop.

Speaker 1

所以他们请了外包人员,这些外包工的任务就是进来做一些布线工作——要是得拉电缆,就去拉,要制作五类网线,也由他们来做。

And so they had contractors come in and the contractors job were to come in, had have to do a little bit of wiring, if you have to run some cable, you did that, create CAT five cables, you did that.

Speaker 0

哦对,我最早的一份工作就是布线,现在我都记不清具体颜色了。

Oh yeah, one of my first jobs was actually cabling so I still, I forgot the exact color color.

Speaker 1

橙色、绿色、白绿、蓝色、白蓝,大概是这些。

Orange, green, white, green, blue, white, blue, something like that.

Speaker 0

现在想起来头都大了。

It's burning your head now.

Speaker 1

那时候你得想尽办法搞定,还得打开电脑做决定。

And you know, so you did whatever it took, and the other thing you had to do was you had to open the computer, you had to make a decision, right?

Speaker 1

如果电脑够新,就可以用USB调制解调器。

If they had a new enough computer, they can use a USB modem.

Speaker 1

那种东西太坑了,老出问题,每次都要跑回去修。

Those were terrible, they always broke and you would always come out for a repair.

Speaker 1

但如果是新装机,真想干得漂亮点,就装个网卡,也就是在电脑背面接个网线口。

But for a new install, if you really wanted to do a good job, you install a NIC, right, Cat five port on the back of their computer.

Speaker 1

那时候啊,说的还是Windows 98。

And at that time, like, we're talking Windows 98.

Speaker 1

安装驱动的时候,大概有百分之二十的几率,电脑会直接崩溃。

And so usually, I don't know, 20% of the time, as you're installing the drivers, the computer would crash.

Speaker 1

这时候你就得另起炉灶,想办法把系统恢复过来,让机器重新上线。

And now you have a whole another situation, you have to now troubleshoot getting this thing back online or back operational.

Speaker 1

如果一切顺利,他们就有了网卡,再外接一个调制解调器,连上电话线,就能用上高速网络,最后再插上网线。

But if everything went smoothly, they now had a network card, and then you had an external modem that then you connected to, you know, the phone line and they had this high speed Internet connection, and then you connected the network cable.

Speaker 1

我干了差不多一年,之后就开始接企业单了。

And I did that for about, let's say a year, and then I started doing the businesses.

Speaker 1

以前是挨家挨户上门服务,敲门进户。

So you go into people's homes, like you're going door to door.

Speaker 1

但到了公司里,你只给一台电脑装网,可那地方明明有八台机器,只有一台能上网。

And then when you go to a business, you would hook up one computer, but there's obviously eight computers there, and only one of them has internet access.

Speaker 1

我记得那时候,客户可能是那种小保险公司。

And I remember at the time, you know, the business owner could be like a small insurance company.

Speaker 1

他们会问:‘我们其他几台电脑怎么才能也连上网?’

They would say like, Hey, how do we get all the other ones online?

Speaker 1

第一次有人这么问我时,我真懵了,就说:‘我们不就只连了一台电脑吗?’

And the first time someone asked me that, like, I don't know, man, I don't We put it on one computer.

Speaker 0

就像按级别收费,对吧?

Like pay grade, right?

Speaker 1

是的,我们确保能用,但后来我想,不如自己去学学看。

Yeah, we make sure it works, but then I decided like, well, let me go learn.

Speaker 1

那时候我记得跑去办公用品店,就是卖电脑设备那种地方。

And that's when I remember like going to like Office Depot where they sell computer equipment and things like this.

Speaker 1

我进店问店员:‘你们这儿有这种Linksys路由器吗?’

And I went in the store and I asked them, it like, oh, you can get one of these Linksys routers, right?

Speaker 1

就是那个长得像蓝色宇宙飞船的Linksys路由器。

The infamous blue spaceship looking Linksys router.

Speaker 0

我到现在还记着那样子。

Still remember them.

Speaker 1

那种路由器当时大概要五十美元。

And those things were probably like $50.

Speaker 1

我记得当时就买了一个,然后自己琢磨怎么让多台电脑共用一个网络连接。

And I remember just buying one and figuring out how to get multiple computers to to use one connection.

Speaker 1

后来我想,这事儿没法当成工作来做,因为公司要求我们做完就得走,但这是我的名片。

And so eventually, was like, look, I can't do it as part of the job because we we have to do this and we have to leave, but here's my card.

Speaker 1

他们会给你打电话的。

And then they will call you.

Speaker 1

我记得我第一次独立安装时,他们给我开了一张支票。

And I remember one of the first installations that I did on my own, they wrote me a check.

Speaker 1

我当时就说:‘直接开给凯尔西·海特沃就行。’

And I was like, yep, you could just write it out to Kelsey Hightower.

Speaker 1

他跟我说:‘不行,我们不给个人开支票,只开给公司。’

He's like, no, we don't we don't write checks to people, we write checks to companies.

Speaker 1

那一刻我就意识到:天啊,我得注册个公司。

And I remember right there on the spot, I'm like, oh man, need a company.

Speaker 1

于是我当场就注册了一个叫‘数字网关’的公司。

I just made one of digital gateways.

Speaker 1

他们就把这个名字写在支票上了。

And they wrote that on the check.

Speaker 1

我坐在那儿想,那这支票我怎么兑啊?

And I'm sitting there like, so how do you cash this?

Speaker 1

我去银行,他们说先生,您得先办个营业执照。

So I went to the bank and they're like, sir, you're gonna have to get a business license.

Speaker 1

办个营业执照就行,登记个营业名称就可以了。

The business license, you could just do business as you have to do this.

Speaker 1

那时候我才19岁,得去办营业执照,还得搞懂这一堆事儿。

I'm figuring out, now I'm 19 years old, okay, I gotta go get a business license, I have to figure all this stuff out.

Speaker 1

于是我啥都办了,开了个对公账户,就为了能把这张支票兑了。

So I do everything, I open a business account just so I can cash the check.

Speaker 1

但那时候我就想,这活儿挣的比原来那工作多多了。

But at that point, I'm like, oh, this pays more than this does.

Speaker 1

所以我后来特别擅长做网络安装,也特别擅长排查故障,有时候别人给了他们一个USB调制解调器,打个雷就烧了,就得换成交换网卡。

And so I got really good at doing those network installs, really got good at troubleshooting because sometimes someone gave them a USB modem, lightning comes, the USB modem is fried, and then you would swap them out for a network card.

Speaker 1

后来我想了想,觉得自己其实可以单干。

And eventually, I decided, I like, I can probably do my own business.

Speaker 1

于是我就租了间办公室,在亚特兰大外头开了家小电脑店。

And I decided to get some office space, so I opened a small computer store right outside of Atlanta.

Speaker 1

我那时候才十九二十岁,从经销商那儿进货,量太小,根本够不上开账户的门槛。

I would buy parts from the distributors, I was just like 19, 20 years old, and I wasn't buying enough to really qualify for an account.

Speaker 1

幸运的是,我常去的一家小电脑店帮我说了话,跟经销商推荐说:这是我们的小伙子,刚起步。

But luckily, one of the smaller computer stores I used to buy parts from gave a recommendation to the distributors like, hey, this is our guy, he's just getting started.

Speaker 1

结果他们就给我开了账户。

And they gave me an account.

Speaker 1

我开始能买主板、显卡,有人带着孩子上门,手里拿着一张清单说:

And I was able to buy motherboards and GPUs and people would come over and like they bring their kid and they would have a parts list.

Speaker 1

我想买台配这些的电脑。

I want a computer with all these things.

Speaker 1

我们就帮他们组装,卖出去,同时这地方也成了所有上门维修服务的总部。

And we would assemble machines and sell them, but also it was the headquarters for all the other service calls.

Speaker 1

我就这么干了三四年,这段时间里,事情慢慢变了。到了2000年、2001年左右,很多音乐工作室开始从模拟设备转向Pro Tools,就是那种小型机架式设备,他们全都想要顶配的,全都需要高质量的音频转换。

So I did that for like three, four years, that ended up evolving into at the same time, but now we're talking like 2000, 2001, a lot of the music studios were moving from analog gear and the large mixing boards to Pro Tools, right, the little rack mount unit, and they all need it maxed, they all need these conversions.

Speaker 1

于是我学会了这门技术,在店里 setup 了一个小系统,艺术家和音乐人就会过来,说:‘我们工作室也想要一套这样的。’

So I added that to my abilities and then I had a small setup in the store and artists and musicians would come in and say, hey, we want exactly that in our studio.

Speaker 1

我就接下订单,把这项服务也加进了我能提供的项目里。

And I would get the order and I added it to the list of things I could do.

Speaker 0

到这个时候,你的小生意看起来挺顺利的,可你后来怎么突然跑去谷歌当员工了?我回头想想,这事儿到底是怎么发生的?

I mean at this point you know how your small business sounds like it's going well and suddenly you take a job at an employee job at Google when I look back, how did that come?

Speaker 0

按理说故事一般都会接着往下走:你当了创业者,把生意越做越大,顺其自然地发展下去。

Up to now it's almost like this is like you know the story oftentimes will continue, you become an entrepreneur, you grow your business, you you know, you just take it from there.

Speaker 1

就在经营这家店的时候,我还帮一个喜剧演员打理事业,我们一起去巡演。

Even during that time as that store owner, I managed a comedian and we went on the road and

Speaker 0

你当时是在帮忙管理,对吧?

So you were you were helping out, you're managing your Yeah.

Speaker 1

我高中时的一个朋友,他是个喜剧演员,结果发现他真挺有天赋的。

I a buddy from high school, he was a comedian, turns out he was actually really good at it.

Speaker 1

我去俱乐部看他,他说:‘我需要个经纪人。’

I went to go see him at a club, he's like, I need a manager.

Speaker 1

我当时就想:‘你真有那么好笑吗?’

I was like, Are you even funny?

Speaker 1

我知道你是高中同学,但我完全不记得你讲笑话能让人掏钱来看。

Like, I know you're from high school, but I don't remember you being like funny enough that I would pay to see you tell jokes.

Speaker 1

他说:‘我今晚有场演出。’

And he was like, I have a show tonight.

Speaker 1

于是我就开车送他去城北,有意思的是,那场观众主要是非裔美国人,地点在亚特兰大。

And so I gave him a ride on the North Side of town and the interesting part, it was a predominantly black audience in Atlanta.

Speaker 1

这倒也合理。

Okay, makes sense.

Speaker 1

他一上台讲段子,台下就笑成一片,那种脱口秀俱乐部规矩很严——你要是不够好笑,只有三秒钟机会。

And he did these jokes and they laughed and it was one of these comedy clubs where if you're not funny, you have like three seconds.

Speaker 1

要是不行,观众立马嘘你下台,完事儿了。

And they will just boo you off the stage and that's the end of it.

Speaker 1

他看着我们说:‘哇,你们居然挺过来了。’

And he held us like, wow, you survived that.

Speaker 1

这简直太厉害了。

That's that's incredible.

Speaker 1

而且你确实挺搞笑的。

And you were pretty funny.

Speaker 1

然后我们开了大概一个小时的车往北走,观众 mostly 是白人。

And then we drove about an hour north and the audience is predominantly white.

Speaker 1

一路上我就想:你绝对没法在这样的场子讲那些段子。

And so on the drive there, I'm like, there is no way you can do those jokes in this room.

Speaker 1

我真想看看这事儿最后怎么收场。

I gotta see how this is gonna go.

Speaker 1

那时候,喜剧演员的出场费才五十美元,刚起步根本赚不了多少钱。

And at the time, they're only paying the comedians like $50 So, you don't make a lot in the early days.

Speaker 1

他完全改了段子,结果照样把全场观众都逗乐了。

He totally pivoted the set and he held that audience too.

Speaker 1

我当时就想,行吧,我可以当你的经纪人,我懂生意,也懂一些后勤安排,知道怎么一起制定计划。

And I was like, alright, I can be your manager, I know business, I know kinda logistics, I know how to make a plan together.

Speaker 1

我这么干了好几年,他后来赢了一些电视比赛,我们还跟着Earth, Wind and Fire这样的乐队,还有《喜剧之王》和《喜剧女王》里的大牌喜剧演员全国巡演。

And I did that for a number of years and, he won some televised competitions, we went on the road of bands like Earth, Wind and Fire and some large comedians from Kings of Comedy and Queens of Comedy.

Speaker 1

后来我还顺便为背后的公司Latam Entertainment做起了IT工作,那时候他们主要在做电影。

And I actually picked up some IT work with the company behind it called Latam Entertainment, they had been doing movies at this time.

Speaker 1

于是现在,我一边给他们做IT,一边管着自己的小生意,还带着这位喜剧演员。

And so now I'm like, you know, doing IT for them and I got the small business, I got the comedian.

Speaker 1

说实话,我存了不少钱,但幸好当时才二十岁,精力充沛,不然真扛不住这么忙。

And so look, I was able to save a lot of money, but man, luckily I was 20 years old because I had all this energy, but I was working quite a bit.

Speaker 1

但人总归要安定下来,成家立业,算一算账就会发现,很多人把创业想得太美好了。

Eventually, you settle down, you get a family, and you do the math, and it turns out people kind of over glorify entrepreneurship.

Speaker 1

我觉得很多人以为创业有巨大回报,尤其是像软件公司那种,收益确实惊人。

I think a lot of people believe there is tremendous upside, The type of entrepreneurship we talk about with software companies, the upside is crazy.

Speaker 1

但如果你做的是卖零件或者服务类的生意,除非你打算开很多店、雇一大帮人,否则增长速度根本没法跟软件公司比。

But when you're doing like selling parts or service business, unless you plan to open lots of stores and, you know, grow a larger employee base, it's not the same growth trajectory as software companies.

Speaker 1

于是我算了一笔账。

And so I kind of did the math.

Speaker 1

干了四年之后,我想:算了,该安定下来了。

After four years of doing that, I said, Look, I want to settle down.

Speaker 1

如果你以前当过老板,你就知道,员工先拿工资,老板最后拿。

And if you've been an entrepreneur before, you know, employees get paid first, the owner gets paid last.

Speaker 1

有些月份,老板要么最后拿,要么干脆拿不到。

And there are months where you get paid last, or you don't get paid at all.

Speaker 1

这时候你只能靠积蓄撑着,毕竟这不是员工的问题。

And now you're kind of drawing from savings because it's not their problem.

Speaker 1

不过总体来说我做得还不错,挺成功的,但我记得那时候心想:差不多该收手了。

But I did well overall, like I did very successful, but I remember it's like, you know, I think I'm ready.

Speaker 1

于是我看了看周围,发现谷歌在附近有数据中心。

And so I looked around and Google had data centers nearby.

Speaker 1

我觉得自己正好具备了一套不错的技能组合。

And I felt like I had a great combination of skills.

Speaker 1

我懂机架和堆叠这一块,也懂网络架构的物理层面。

I understood, you know, the racking stack part of the world, I understood the physical part of the networking stack.

Speaker 1

从Linux到Windows,我都熟。

I understood everything from Linux to Windows.

Speaker 1

我有创业者的心态。

I had an entrepreneur mindset.

Speaker 1

我觉得没什么是我干不了的。

I didn't think there was nothing I could not do.

Speaker 1

我记得去面试的时候,他们招的是数据中心技术员。

And I remember going to that interview and they were hiring like data center technicians.

Speaker 1

那工资怎么样?

But what it paid?

Speaker 1

我心里想,这工作一天才八小时啊。

And in my mind, I'm like, that you only have to work for eight hours.

Speaker 1

不用自己开票,每两周准时发工资,还不用管库存?

You don't have to issue any invoices and you get paid every two weeks no matter what, no inventory?

Speaker 1

这太疯狂了,他们怎么可能这么做。

This is crazy, no way they're doing this.

Speaker 1

于是我去了面试,记得那时候我对Linux其实不太熟。

And so I go and I remember doing that interview and I didn't know Linux that well.

Speaker 1

幸运的是,我对FreeBSD很了解。

And luckily for me, I knew FreeBSD well.

Speaker 1

回答问题的时候我就想,说实话,我对Linux的掌握远达不到谷歌问的那水平。

And as I'm answering the questions, I'm like, look, I am not an expert on Linux, not the way Google was asking these questions.

Speaker 1

对面坐着三个人,一个问题接一个问题地猛问。

And it's like three people on the other side of this table just rapid firing.

Speaker 1

我记得我当时就想,但我懂FreeBSD啊。

And I remember I was like, I know FreeBSD.

Speaker 1

我真觉得自己是运气好。

I swear I got lucky.

Speaker 1

那次面试,我觉得他们有个人腿上还纹了个FreeBSD的纹身,就是那个小Beastie标志。

This one of the interview, I think they had a FreeBSD tattoo on their leg, the little Beastie logo.

Speaker 1

我一看见那个标志,心里就踏实了。

And I saw this logo, I'm like, oh, I'm saved.

Speaker 1

于是我们开始聊起 FreeBSD 的问题。

And so we started going down the FreeBSD questions.

Speaker 1

我顺利通过了,拿到了数据中心的这份工作。

And I pass and I get this job in this data center.

Speaker 1

那段时间挺好的,至少能和同事一起工作,但就是觉得节奏有点慢,因为每天就干一件事。

And it was good because it's like, hey, I'm working with my colleagues, but it felt a bit slow because you only get one job.

Speaker 1

你来了,就做这一件事,我很快就做得炉火纯青了。

You come in, you do this thing, and I got really good at it.

Speaker 1

对我来说,这就像一场小小的较量。

Because to me, I kind saw it as like a bit of a competition.

Speaker 1

谁才是这儿最厉害的数据中心技术员?

Who is the best data center tech here?

Speaker 1

他们的绩效指标到底怎么样?

What are their metrics look like?

Speaker 1

我怎么才能超越他们的绩效指标?

How do I exceed their metrics?

Speaker 1

我想学会数据中心里每一件具体的工作,因为以前当老板的时候,技能越多,赚的钱就越多。

I want to learn how to do every particular thing in this data center because previously as a business owner, the more skills you have, the money you can make.

Speaker 1

于是我每隔三到六个月就换一次工作,就是想把所有领域都试一遍,积累更多本事。算下来,每次跳槽大概都能涨25%的工资。

And then I just started switching jobs every three to six months because I just wanted to explore everything to just amass my abilities and doing the math, I think every jump was like a 25% pay raise.

Speaker 1

我是从很低的起点开始的,那时候觉得涨幅也没那么夸张。

I mean, coming from a small base, it wasn't it didn't feel big at the time.

Speaker 1

但经过几次跳槽之后,

But after a few jumps,

Speaker 0

我的薪水翻了一倍。

my salary doubled.

Speaker 0

Puppet 是你职业生涯中的一个关键转折点。

Puppet was a was a bit of an inflection point in your career.

Speaker 1

说实话,在加入 Puppet Labs 之前,我职业生涯里已经有两个更大的转折点了。

You You know what, I would say the biggest inflection point in my career was there were two of them before I get into Puppet Labs.

Speaker 1

是的。

Mhmm.

Speaker 1

好的。

Okay.

Speaker 1

你来自谷歌,看到那么庞大的运营,成千上万台服务器,线缆整整齐齐,一丝不乱。

So you come from Google, you see this huge operation, there's hundreds of thousands of servers, the cables are perfect, they're immaculate.

Speaker 0

对了,你能帮我们想象一下,当年谷歌的数据中心是什么样子?你当时具体做些什么?

Oh, by the way, can you help us imagine, like, what a data center back then looked like at Google and and what what what did you do as as part of the job?

Speaker 1

对。

Yeah.

Speaker 1

2000年,也许是2004年,或者2005年,那个数据中心就像个仓库。

So in 2000, maybe '4, maybe 2005, that data center is is like a warehouse.

Speaker 1

我的意思是,规模大得惊人。

I mean, it's huge.

Speaker 1

想象一下那种地方,我敢说他们当时报的数字肯定有夸大成分。

So think about a place where and I'm pretty sure they always exaggerated the numbers.

Speaker 1

所以我常会夸张地说,想象一下,二十万台服务器全放在一个地方。

So I would exaggerate a number to think about is like, think about 200,000 servers in one place.

Speaker 1

一切都井然有序。

Everything is immaculate.

Speaker 1

很多人在数据中心干过,那地方通常乱七八糟。

So a lot of people have worked in data centers and it's a mess.

Speaker 1

电线到处都是,服务器想加就加、想撤就撤,但谷歌的做法非常系统化。

Wires are all over the place, you know, you're ad hoc adding and removing servers, but Google was systematic.

Speaker 1

那些机器从卡车上卸下来,包装得整整齐齐,推到指定位置后,插上网线,自动启动,自动检测。

Those machines came off a truck, they were wrapped perfectly, when you wheel them into their spot, you connected the network cables, they would pixie boot, they would burn in.

Speaker 1

我们工作的一部分就是推着维修车转悠,根据各自的专长,有些人任务很简单:车上装满工具,到处巡查,找那些需要维修的机器。

So part of the job was, you walked around with a crash cart, so depending on what your abilities were, some people had pretty straightforward jobs, you had a crash cart, had all your tools on it, and you would walk around and you would find machines that were needing of repair.

Speaker 1

你有二十万台机器,有三百台出点问题很正常,对吧?

So, you have 200,000 machines, it's okay if like 300 of them are broken, right?

Speaker 1

系统能自动绕开它们。

The system can route around that.

Speaker 1

但如果坏了,就得修。

And but if they were broken, they need to repair.

Speaker 1

所以你会去A机架的第7台服务器,把它拉出来一看,哎呀,SATA卡着火了,真烧焦了。

So, you would go to Rack A server seven, you will pull it out and you will look at it and tell, oh yeah, the SATA card is on fire, like it's literally burned.

Speaker 1

它在冒烟,已经烧坏了。

It's burning, it was burnt.

Speaker 1

所以他跟我说,这种问题我一眼就能看出来。

And so he's like, I can diagnose this one with my eyes.

Speaker 1

得换掉SATA卡。

It needs to replace the SATA card.

Speaker 1

但关键是,你会进系统里说,这个SATA控制器得换,其实你是在做预测。

But the thing is, you would go into the system and you would say, this SATA controller needs to be replaced, so you would be making your prediction.

Speaker 1

然后你换掉它,再走一遍烧机流程,它就重新回到服务器集群里了。

And then you would replace it and you would go through its burn in process, it would join back to the fleet.

Speaker 1

而衡量你工作好坏的标准,就是你的预测准不准。

And then the way you were measured was how good were your predictions?

Speaker 1

哦。

Oh.

Speaker 1

对。

Right.

Speaker 1

你说这是个SATA控制器,但对我来说,既然要快速处理,一看这SATA控制器出问题了,我根本不会多花时间,只想赶紧把指标提上去。

So you said it's a SATA controller, and to me moving fast, you look as if I think that SATA controller, I'm not gonna waste any more time on this one because I'm trying to get my numbers up.

Speaker 1

所以我直接把控制器换掉,插上所有线缆,推回去,让它走完自检流程,然后就去下一台机器了。

I So just swapped this out of controller, you bring in all the cables, you slide it back, it goes through its process and you move on to the next machine.

Speaker 0

在收到反馈之前。

Before you get the feedback.

Speaker 1

是的。

Yeah.

Speaker 1

有个有趣的事,有个叫蒂姆·霍克的人,在Kubernetes圈子里特别有名,他是网络团队的负责人。

And fun fact, there's a guy named Tim Hawk, he's very popular in the Kubernetes community, he's like the network lead.

Speaker 1

那时候,蒂姆·霍克在谷歌的另一端工作,就是规模更大的那个部门。

So back then, Tim Hawkins is working at the other side of Google, like the bigger side of Google.

Speaker 1

他最早做的一个项目是个小工具,可以放在主板上,上面有九个指示灯。

And one of his first projects was a little tool that you would put on the motherboard, it had about nine lights on it.

Speaker 1

这些灯会来回闪烁,告诉你哪些内存插槽可能有问题。

And the lights would flash back and forth and it would tell you what DIMM slots were potentially bad.

Speaker 1

熟练的技术人员不会浪费时间去跑完整的内存测试程序,他们学会用这个小设备,直接走到主板前操作。

The technicians that were fast, they didn't waste time like running a program to do an extensive test of the memory, you learn how to use this little device and you would walk up to the motherboard.

Speaker 1

我以前的做法是,做任何其他操作之前,先把这个工具插上主板,读取结果。时间久了,我就开始信任它了——比如,DIMM一和DIMM二坏了。

So the thing I would do is like before I do anything, put this on the motherboard, get the reading and I learned to trust it over time, DIMM one, DIMM two are bad.

Speaker 1

目标就是:我车上有一堆内存条,先换掉这两个插槽,确认处理完,然后重启机器。

And the goal would be, alright, I have all this memory on my cart, you swatch those two DIMM slots, make sure that that's done first, reboot the machine.

Speaker 1

你可能会想,可能就这一个问题。

And you might be like, I think that's the only thing wrong.

Speaker 1

再装回系统后,我觉得我只需要处理DIMM一和DIMM二就够了。

And again, were put in the system, I believe I only need to do DIMM one and two.

Speaker 1

而衡量标准,就是这台机器多久能被送回维修。

And then the way you were measured is how long before that machine gets kicked back to repair.

Speaker 1

所以如果机器在三十到六十天内没被退回来,你就干得不错。

So if it doesn't get kicked back within, I don't know, thirty, sixty days, you did a good job.

Speaker 1

要是没做好,你的评分就会很低。

If you didn't, your scores would be low.

Speaker 1

对那些粗心大意的技工来说,他们根本懒得仔细排查,随便换零件,换错硬盘是常事。

So for the technicians that were just reckless, they wouldn't even try and be you're just swapping the wrong part, you're swapping the wrong hard drive.

Speaker 1

你的维修品总是返修,效率自然就低了。

And so your stuff is always coming back for repair, you were not efficient.

Speaker 1

后来我能做到维修合格率保持在百分之九十几,而且处理的机器数量是别人的三倍。

So I got to the point where I can maintain high nineties, but also repair, let's call it three times more machines than other people.

Speaker 1

机器量大,返修率还低。

So lots of machines, rate of return.

Speaker 1

再后来我学会了处理网络交换机,还要做电力巡检,得掀地板砖,检查线路状况,但千万不能乱碰,一不小心会没命。

And then I learned how to do the network switches and there's power audits where you're lifting up tiles from the floor, and you're making sure that everything looks good, and you gotta be careful not to touch them because you could die.

Speaker 1

所以你得彻底了解数据中心的方方面面,比如服务环路——所有网线都得布成完美的环形回路。

And so you learn everything about a data center, like the service loop, you're gonna run all this cat five cable, it has to have a perfect service loop.

Speaker 1

光纤是走机架的另一部分,对吧?

Fiber runs on a different part of the rack, right?

Speaker 1

所以这些线路绝对不能混在一起。

So you don't ever mix these things.

Speaker 1

那时候我还年轻,二十出头,以为所有数据中心都是这样子的。

So as a person still, I'm in my early twenties, I'm thinking this is how all data centers look.

Speaker 0

其实不是这样的。

It's not the case.

Speaker 0

但说真的,回想起来,我以前也当过经理,当过很长时间的软件工程师,但那种持续考核、实时反馈、按数据评估的方式,比方说在谷歌做软件工程师的人经历的,要严格得多。

But it's crazy because just as I think back, I was a manager before as well and of course a software engineer for a long time, but the way your performance was continuously measured and fed back to you and you were evaluated based on it, it feels way more strict, should I say, than, you know, like folks who work as software engineers including at Google.

Speaker 0

我是说,考核的频率和期望值都高得离谱。

I mean, the frequency, the expectations.

Speaker 1

我之所以没觉得那些指标太压人,是因为我觉得自己能掌控结果。

The reason why I didn't feel as bad as some of the metrics people are using now is because I felt like I can control the outcome.

Speaker 1

那不是那种光有数字、毫无意义的考核。

It didn't feel like it was a thing that was just a metric that didn't do anything.

展开剩余字幕(还有 480 条)
Speaker 1

如果我觉得我的评分下滑了,就会想,哎呀,我诊断这些机器时有点马虎了。

If I felt like my score was taking a hit and I was like, you know what, I am being a bit sloppy in how I'm diagnosing these machines.

Speaker 1

我记得有一次,我的评分差点跌破90,我就开始写更多的shell脚本,把好几个功能合并到一起。

And I remember one time where I almost had my score dip below 90, I started writing additional shell scripts to start even combining different functions together.

Speaker 1

我当时就想,不能再这么仓促地做事了。

It's like, you know what, I can't be moving this fast.

Speaker 1

其实完全可以用一个方法,一次性检查机器上的多个问题。

There's a way for me to diagnose multiple things in the machine at one time.

Speaker 1

所以我一边检查内存模块,一边顺手把SATA阵列和所有硬盘都检测一遍。

And so I would diagnose the SATA array, all the hard drives while I'm doing the memory component.

Speaker 1

等机器重启后,我会再跑一遍脚本,趁我收拾推车的时候,顺便把漏掉的那一点也补上。

And then when it rebooted, would just run the script one more time as I'm putting my cart back together to catch that one more thing.

Speaker 1

从那以后,我就能想多快就多快,而且评分也稳住了。

And once I started doing that, I can move as fast as I want it and the scores are right.

Speaker 1

对我来说,当评分真的反映了我的实际工作时,这种反馈才是有效的。

So to me, when the scores actually match the things that you're doing, then it's a healthy feedback.

Speaker 1

而且again,没人会主动提这事,除非真有必要说。

And again, no one really talked about it, unless you needed to talk about it.

Speaker 1

所以我把它用在了自己身上。

And so I kind of leveraged it for a personal thing.

Speaker 1

每天早上我都会打开看看自己的表现数据,很大程度上,我是根据这些详细的反馈来调整策略的。

I pulled it up in the morning, kind of looked at my performance metrics, and in many ways, I calibrated my strategy based on this detailed feedback that I was getting.

Speaker 1

那时候我很看重这种细致的反馈,因为我觉得它对我自己有帮助,不只是对我经理有用。

So I think I appreciated that level, that granularity back then because it felt like it was something that was helpful for me, not just my manager.

Speaker 0

你说过你有两个关键的转折点,其中一个就是

And you said you had two two kind of big big inflection points, one of them was

Speaker 1

谷歌算一个,这确实是我的创业转折点之一;后来我做网页托管时,去了家叫Pier One的公司,它是Rackspace的子公司,那时候他们全靠全自动托管,对吧?

Google was a big one, like that was definitely one of course my entrepreneurship and when I got to web hosting, I went to a company called Pier one, their spin off of Rackspace and they were all about fully automated self hosting, right?

Speaker 1

那是哪一年来着?2002年?1967年?

This was back in like what 02/1967?

Speaker 1

对,是2006年。

Yeah, this is like yeah, 02/2006.

Speaker 1

哦,他们

Oh, they

Speaker 0

早就满是Rackspace的风格了,

were already full of Rackspace,

Speaker 1

他们的口号是‘延迟就是死亡’,那时候上网的人很多都是自己托管游戏服务器的。

that was their thing, their tagline was latency kills And so back then you would go online, a lot of the customer base was like people hosting their own game servers.

Speaker 1

对吧?

Right?

Speaker 1

如果你想玩游戏,那时候一个办法就是自己搭个游戏服务器,但你得找个能让多人连接的服务器。

So if you wanted to play a game, one thing you could do back then is host a game server, but you needed a game server that multiple people could hit.

Speaker 1

所以你就会上Server Beach去逛。

And so you would go along to server beach.

Speaker 1

这其实是Rackspace的一个分支。

So this is a spin on a Rackspace.

Speaker 1

Rackspace呢,说白了就是你买台服务器,然后得手动配置一堆东西。

So Rackspace is more like, you know, we'll buy a server and once you get it and it's a lot of manual steps.

Speaker 1

Rackspace 更像是把一切都自动化了。

Rackspace is more of a, that's automated everything.

Speaker 1

机器一启动,一些 PHP 脚本就会运行,如果你订购了 RAID 配置,我们就在网络启动时自动设置 RAID,然后把你分配到对应的 VLAN,根据你的选择安装合适的操作系统。我们就是填一张表,后面所有步骤全自动走完,大概一小时后,你就有了 IP 地址、登录信息,如果需要邮箱或者网站管理这些功能,也一并搞定。

So the machine would Pixie, some PHP scripts would run, if you ordered a RAID setup, then we would configure the RAID while the machine was net booted, and then we would put you on the VLAN that you belonged on, we would install the right operating system based on what you've ordered, and we just took a form and just went through all of these steps, and then when we're done, and it took maybe about an hour, when we're done, you had an IP address, login credentials, and if you want an email and plus, you know, website management, all these things, you got it.

Speaker 1

用完了你就归还。

And when you were done, you give it back.

Speaker 1

然后我们把机器放回池子里,等着下一位客户使用。

And then we put it back into the pool, ready for the next customer.

Speaker 1

我当时看到我们这么做,就觉得,哇,原来事情真能这么自动化到头。

And so, when I saw how we were doing that, was like, yo, this is okay, you can automate things into end.

Speaker 1

另外一件重要的事是,我们还会更新 RAID 控制器的固件。

When the other thing that was important here, we were doing things like updating the firmware for RAID controllers.

Speaker 1

因为一旦通过 Pixie 启动,你就进入了内存环境,能直接访问所有硬件。

Because once you Pixie a server, now you're in memory and you have access to all the hardware.

Speaker 1

这时候还没安装操作系统,但已经足够你做任何你想做的事了。

You haven't committed to an operating system yet, but you have enough to do whatever you want.

Speaker 1

那时候想配置RAID控制器,根本没什么干净的API可用。

So if you wanna configure the RAID controller, and back then there wasn't like clean API's.

Speaker 1

我们只能靠写curl脚本、用命令行工具,硬把机器调到合适的状态。

We were literally running curl scripts and command line utilities, trying to get this machine into the right shape.

Speaker 1

搞定之后,就把机器放进机群里上线。

And then when we were done, we would put it into the fleet.

Speaker 1

那时候我就觉得,这世上没什么事是搞不定的。

So at that early age, I'm like, Oh, there is nothing you cannot do.

Speaker 1

当年要自动化Windows 2000服务器时,我们直接写工具去抓登录页面,模拟鼠标操作,就为了给这些Windows服务器打补丁。

When we had to automate the Windows 2,000 servers back then, we would just build tools that would literally screen scrape login to Active Directory, and then we would screen scrape mouse movements, so that way we can patch software on those Windows servers.

Speaker 1

你不能指望有现成的工具,那时候就是能用什么就用什么——客户一个月才付99美元,哪有时间让你花一周去研究他们的环境?你连他们用的是什么配置都不知道,只能在几分钟内把服务恢复起来。

So the concept of like, I need a specific tool to do is like, no, back then it was like, you do whatever's necessary, because these people are only paying like $99 a month, don't have time for you to spend a whole week when they call random customer, you don't know their setup, you don't know their infrastructure, you have minutes to get them back online.

Speaker 1

所以大家都练出了快节奏干活的本事,从不抱怨。

So everybody learned to move quickly, no complaining.

Speaker 1

一接到工单,就得自己想办法解决,实在搞不定,再找同事帮忙。

When you get that ticket, it's on you to figure it out, maybe you link to your teammates for help.

Speaker 1

所以我慢慢学会了快速应对。

So I kind of learned how to move fast.

Speaker 1

但真正的转折点,是我刚开始做技术支持的时候。

But the inflection point came from, I started that job in tech support.

Speaker 1

客户打电话来,说SQL出问题了,DNS也连不上,有时候连自己哪儿不对都说不清楚。

So people would call, my SQL isn't working, DNS isn't working, they can't even describe what isn't working sometimes.

Speaker 1

于是我发现,所有来电都会轮流转接到我们每个人头上。

And so, I realized that we were all in the phone queue, when the phone would ring, would just round robin between everyone.

Speaker 1

如果你没法快速解决,或者根本解决不了,就创建一个工单。

Then if you couldn't solve it fast enough, or you couldn't solve it at all, you created a ticket.

Speaker 1

工单堆在那里,理想情况是之后再处理,但工单队列很快就积压了。

And when the ticket sat there and then ideally you get to it later, but the ticket queue would just get long.

Speaker 1

换班的时候,一堆工单全留给了下一拨人。

And when a shift change happened, we just had all these tickets piling up.

Speaker 1

客户当然生气了,有天我实在忍不了,心想:算了,今天我不进工单系统了。

And of course, customers are now mad, So three days no one day I said, look, I'm just not gonna log in the queue.

Speaker 1

我就直接把那些工单解决了。

I'm just gonna resolve the tickets.

Speaker 1

我又回到了那种创业的心态。

And I'm back in that entrepreneurial mindset.

Speaker 1

我写了一些小脚本,用来处理工单。

I'm building little scripts to take a ticket.

Speaker 1

我看出来问题出在哪了。

I see the issue.

Speaker 1

这是个 SQL 的问题。

This is my SQL issue.

Speaker 1

我们得回数据库里查一查。

We need to back in the database.

Speaker 1

这很简单。

This is easy.

Speaker 1

运行这个就行。

Run that one.

Speaker 1

工单已关闭。

Ticket close.

Speaker 1

先生,一切都没问题了,可以继续了。

Hey, sir, everything is good to go.

Speaker 1

请再试一次。

Please try again.

Speaker 1

关闭。

Close.

Speaker 1

这根本算不上什么问题。

This is not even an issue.

Speaker 1

关闭。

Close.

Speaker 1

另外,我们还升级了 PHP。

Plus, oh, we got upgrade PHP.

Speaker 1

关闭。

Close.

Speaker 1

然后工单队列就清零了。

And then the ticket queue is zero.

Speaker 1

一整天都是空的。

It's just empty all day.

Speaker 1

于是有人就说:‘凯尔西没登录电话队列啊。’

And so someone's like, hey, Kelsey is not logged into the phone queue.

Speaker 1

他根本没接电话,也没在处理来电。

He's not even on the phone, he's not taking calls.

Speaker 1

我经理把我叫进办公室,说:‘凯尔西,你怎么没在电话队列里?’

My manager pulls me in the office like, Kelsey, why are you not on the phone queue?

Speaker 1

我说:‘我们没必要每个人都盯着电话队列。’

I said, because we don't all need to be on the phone queue.

Speaker 1

只要一个人盯着工单队列,让它保持为零就够了。

We can just have one person making the ticket queue stay at zero.

Speaker 1

然后我会告诉同事:‘要是你一时解决不了,别纠结,赶紧开个工单,我来处理。’

And then I would tell my colleagues, hey, look, if you can't figure it out fast, just open a ticket super quickly, I will take care of it.

Speaker 1

有些人专攻Windows,遇到Linux的问题就不知道怎么处理了。

So some people specialize in Windows, they got a Linux call, they didn't know what to do.

Speaker 1

我说,别担心,赶紧开个工单,接着处理下一个电话,我来搞定。

I said, don't worry about it, just put it in the queue quickly, move on to the next call, I got you.

Speaker 1

结果我就变得特别高效。

And so I became super efficient.

Speaker 1

我把这个流程跟经理说了,他想了一下,他叫迈克。

So I explained this process to the manager, he thought about it, his name is Mike.

Speaker 1

迈克说,这个主意不错。

And Mike was like, yeah, I like that.

Speaker 1

我们就这样改了。

We're gonna change it.

Speaker 1

让几个人不用一直守在电话队列里。

We're gonna have a couple of people stay out of the queue.

Speaker 1

但前提是,工单队列必须始终保持为零。

But the promise is that queue has to stay zero.

Speaker 1

那是我第一次明白活动和实际影响之间的区别。

And it's the first time I learned the difference between activities and impact.

Speaker 1

活动就是你一个人拼命接电话,但团队的工单队列还是堆得老高。

Activities, you being an all star answering a bunch of calls, but the ticket queue for the team is still high.

Speaker 1

你做出这个转变,告诉自己:也许我不进队列,但我对同事的承诺是让工单队列清零。

You making this jump and saying, look, maybe I stay out of the queue and my promise to my colleagues is impact, the ticket queue is zero.

Speaker 1

所以到了星期三我们交接班的时候,交出去的是一个空的队列。

So on Wednesday, when we do the team turnover, we're handing off an empty queue.

Speaker 1

当然,我当时并没有特意教他们这些,因为我根本没往那方面想。

Now, of course, I didn't teach them that because I didn't think about it.

Speaker 1

结果我们一走,队列又堆满了。

And we will come in the queue will be high again.

Speaker 1

他们说:喂,等等,你们这是把一堆包袱不断甩给我们团队啊。

It's like, yo, woah, this is not you guys keep handing off a bunch of burden to our team.

Speaker 1

当然,我们还是会去收拾烂摊子。

And of course, we would clean it up.

Speaker 1

但管理层突然说:哎,人人都要这么干。

But then the management team was like, yo, everybody's going to do it.

Speaker 1

我当时就想,嘿,你其实可以改流程啊。

And then I was like, man, you can change the process.

Speaker 1

这真是个关键的转折点。

So that was like the huge inflection point.

Speaker 1

我觉得下一个成长是学会成熟一点,别老是频繁跳槽。

I think the next one was more about being a mature person, stop job hopping so much.

Speaker 1

因为每次升了职、做出点成绩,我就又奔下一个目标去了。

Because again, after maybe a few promotions and some impact, I'm now off to the next thing.

Speaker 1

我根本没花足够时间去消化这些决定,也没待到真正影响团队文化。

And I didn't have to necessarily live a long time with some of those decisions or stay long enough to really impact more of the culture.

Speaker 1

所以到了金融行业,我第一次被限制住了。

So when I got to financial services, it was the first time I got restrictions put on me.

Speaker 1

对吧?

Right?

Speaker 1

因为在这些公司,一切都讲究速度。

Because in these companies, everything is about moving fast.

Speaker 1

在谷歌,我们必须快,要跟大公司竞争,得用便宜的硬件、聪明的人,不择手段。

Google, we got to move fast, we have to compete with the big guys, we're gonna do a cheap hardware, smart people, any means necessary.

Speaker 1

做网页托管的时候,我们收费不高,利润很薄,得赶紧跑起来。

Web hosting, we're not charging a lot, margins are thin, you gotta move quick.

Speaker 1

而金融行业不一样,那边赚钱是稳稳的。

Financial service is like, no, we're making money over here.

Speaker 0

你去了金融公司?

You joined the financial services company?

Speaker 1

对。

Yeah.

Speaker 1

那是我第一次工资翻了一倍。

So that was the first time my my salary doubled.

Speaker 1

于是我一边吃午饭,一边去参加面试。

So I went on my lunch break for a job interview.

Speaker 0

那感觉一定很棒吧。

That must have felt awesome.

Speaker 1

天哪。

Oh my god.

Speaker 1

我记得我经理特别生气。

I remember my manager was so upset.

Speaker 1

我趁着午休去参加面试了。

I went on my lunch break.

Speaker 0

之前的那个经理,是

The the previous manager, the

Speaker 1

对。

Yeah.

Speaker 1

我认识的那个人叫乔·罗德里格斯,是我在Pier One遇到的。

One you I met Pier one, he was a good friend of mine named Joe Rodriguez.

Speaker 1

他是第一个让我成为软件开发者的上司。

He's the first person that made me a software developer.

Speaker 1

所以我给他看了我一些关于现代化虚拟化和优化Pixie启动流程的想法。

So I showed him some ideas I had on like modernizing our virtualization, optimizing our Pixie boot process.

Speaker 1

他跟我说:‘你真有不少好点子。’

And he was like, man, you have a lot of good ideas.

Speaker 1

面试的时候,他就让我展示一下我实际做过的东西。

So in the interview, he's like, show me what you built.

Speaker 1

我特别兴奋。

I'm so excited.

Speaker 1

我骨子里还是那个创业者心态,结果还真把工作拿到了。

I'm still that entrepreneur thinking, and I got the job.

Speaker 1

现在我是一名软件工程师,负责这个自动化平台。

So now I'm a software engineer working on this automation stack.

Speaker 1

我记得五年前那些让我害怕的工作,就是那种让我只想去考个A+认证、开个电脑店,根本不敢去尝试的职位。

And I remember seeing jobs that I used to be afraid of five years ago, the same jobs that made me wanna just go get an A plus certification and open a computer store instead of even trying.

Speaker 1

于是我重新看了那些职位要求,心想:需要Linux?这个我有。

And so I looked at those job descriptions again, and it was like, you need Linux, got that.

Speaker 1

就在那家公司,我还拿到了红帽认证,对吧?

Even at that job, got Red Hat certified, right?

Speaker 1

所以我觉得,现在该有的资格我都齐了。

So I was like, I got all the qualifications now.

Speaker 1

我记得那份工作,面试前我根本不知道薪水多少,但要求穿衬衫打领带。

And I remember the job, I didn't know how much it paid before I went, but you had to wear a shirt and tie.

Speaker 1

这是我人生第一次,得穿衬衫打领带。

It was the first time in my whole life, I had to wear a shirt and tie.

Speaker 0

哦,那你得专门去买一套?

Oh, so you had to go and buy one?

Speaker 1

是的。

Yeah.

Speaker 1

我记得家政课老师还帮我把裤子改了短边。

And I remember my home ec teacher, she hemmed my pants for me.

Speaker 1

我当时说,嘿,我要去面试了,这身打扮合适吗?

I was like, hey, I got a job interview, does this look right?

Speaker 1

我午休开车过去,一到那儿,心想,这可是大企业啊,真是顶级圈子了。

I'm driving up on my lunch break and I get there and you know, this is enterprise, I'm like, wow, this is the big league.

Speaker 1

我压根没觉得谷歌算顶级公司。

I didn't even think Google was big league.

Speaker 1

我觉得金融行业才算真正的顶级圈子。

I thought financial services big league.

Speaker 1

既然上班非得打领带,那这工作肯定特别严肃,非得穿正装不可。

Obviously, if you have to wear a tie to do your job, you must be doing something so serious that you need a shirt and tie to do it.

Speaker 1

我进面试室时紧张得直冒汗,心想他们肯定要问些我听都没听过的问题。

And so I get to the interview and I'm sweating like, what they're gonna ask me stuff that I've probably never heard of or seen before.

Speaker 1

结果他们开始问Linux相关的问题。

And they started asking Linux questions.

Speaker 1

我赶紧说,不对,你得用这个参数。

I'm like, no, you gotta use this flag.

Speaker 1

那个参数才不对。

That's not the right flag.

Speaker 1

不对。

No.

Speaker 1

自己查一下。

Look it up.

Speaker 1

那个参数不对。

That is not the right flag.

Speaker 1

Grip没法这么用。

You can't do that with Grip.

Speaker 1

不对。

No.

Speaker 1

你得这么管道传输。

You gotta pipe it this way.

Speaker 1

PS表格里没显示这个,而且在那个版本的Linux上,用这个内核也不行。

The PS table doesn't show you that, and on that version of Linux, not with that kernel.

Speaker 1

我觉得这也太简单了。

And I'm like, it's too easy.

Speaker 1

我心里有一部分在想,要么是我真厉害,要么就是有别的原因。

And part of me is like, either I'm really good or something else.

Speaker 1

于是我琢磨着,嘿,说不定还有下一轮。

And so I'm thinking like, yo, that was maybe there's another round.

Speaker 1

我开车回家的时候,松了松领带,给老婆打电话说:我觉得我这次表现得特别棒。

And so I'm driving home and I'm loosening up the tie and I'm calling my wife like, hey, I think I did a really great job.

Speaker 1

你知道吗,这已经成模式了——我一把某件事干好了,就能找到更好的工作。

Like, you know, think this has been a pattern, you know, I get good at something and I find a better job.

Speaker 1

我一把某件事干好了,就能找到更好的工作。

I got good at something, I find a better job.

Speaker 1

但现在不一样了,这已经成了我的事业。

But now it's like, this is like a career.

Speaker 1

我跟老婆聊着聊着,突然说:等下,我得先挂了。

And so I'm talking to my wife and I was like, hey, I gotta call you back.

Speaker 1

是猎头打来的电话。

And it's the recruiter calling.

Speaker 1

你有空吗?

Hey, you have a second?

Speaker 1

我说,百分之百。

I said, a 100%.

Speaker 1

他们想给你发offer。

They wanna make you an offer.

Speaker 1

你知道,说给你发offer,意思不太一样。

I'm like, you know, make you an offer is different.

Speaker 1

通常来说,这指的是薪资多少。

Like, it's usually this is how much the job pays.

Speaker 0

到那时候为止,一直都是这样。

That's how it was until then.

Speaker 0

对。

Yeah.

Speaker 0

你当时拿多少工资?

How much were you making?

Speaker 1

四万五千美元。

45 k.

Speaker 0

所以那时候你年薪是四万五千美元?

So you were making 45 k at that point?

Speaker 1

九万美元。

$90,000.

Speaker 0

你一定

You must

Speaker 1

我差点儿把车开出去了,翻了一倍。

I have had a almost drove off the road, like double.

Speaker 1

这太疯狂了,我当时想着九万,就开始算退休金,觉得能买房了。

This is insane, I'm thinking 90 and you're doing the, you know, retirement calculations, we can buy a house.

Speaker 1

你脑子里全是这些能做的事。

You're thinking of all of these things that you could do.

Speaker 1

于是我开车回公司的时候,突然想起来,他们问我什么时候能入职。

And so, I'm on the way back to the job and I remembered and they were like, when can you start?

Speaker 1

那天是周四,我跟他们说,下周一就能上班。

It's like Thursday, I'm telling them, we can start Monday.

Speaker 1

两周通知期?说实话,我也没想好。

Like, two week notice, I'm like, I don't know, man.

Speaker 1

工资翻了一倍。

It's double.

Speaker 1

就为了这个?

Like, For this?

Speaker 1

我非得接受不可。

I have to.

Speaker 1

我记得我给乔打了个电话,乔在圣安东尼奥,那是Rackspace的总部。

So I remember when I called Joe and Joe's based in San Antonio where the headquarters of Rackspace was.

Speaker 1

我跟他说:嘿,乔,老兄。

I was like, hey, Joe, man.

Speaker 1

嘿,兄弟,我得辞职了。

Hey, man, I gotta quit.

Speaker 1

他问:‘什么?’

He was like, what?

Speaker 1

老兄,你到底想说什么?

Man, just you know what saying?

Speaker 1

你在团队里表现得这么好。

You're doing so well on the team.

Speaker 1

你咋能说走就走呢?

How are you gonna quit on me?

Speaker 1

我可是押了注在你身上。

I made a bet on you.

Speaker 1

我对他说:‘乔,别激动,兄弟。’

I said, hey, Joe, calm down, bro.

Speaker 1

他们给九万美金。

They pay 90 k.

Speaker 1

他问:‘什么?’

He's like, what?

Speaker 1

他们在招人吗?

Are they hiring?

Speaker 1

后来我去了Total Systems(TSYS)这家公司,感觉节奏确实有点慢。

And so I got to I got to that company Total Systems TSYS, and it did feel a bit slow.

Speaker 1

他们有一套套的流程、变更窗口,所有事情都得按规矩来。

They had run books, change windows, everything was regulated.

Speaker 1

这是一家金融机构,我们处理的是信用卡支付业务。

This is a financial institution, we're processing credit card payments.

Speaker 1

我们还给政府做项目,干的都是这些大事。

We're doing work for the government, we're doing all of these things.

Speaker 1

我记得整个团队的人都慢悠悠的,一点紧迫感都没有。

And I remember the team was just everybody just moving at this pace.

Speaker 0

但你一进去,是不是觉得特别不可思议?

But isn't it crazy when you get in there?

Speaker 0

我刚搬到伦敦的时候也有类似经历,薪水从爱丁堡翻了一倍多。因为拿的钱多了, expectations 也跟着涨,结果反而有点失落。我那时候也怀疑,是不是我哪里没跟上?

I I had something similar when I moved into London and my salary more than doubled coming from Edinburgh, where you have all these expectations because you're being paid so much more, the tie, same thing for me for the tie, and then it's a bit disappointing and I think did you not not feel a little bit like am I missing something?

Speaker 0

这本来应该更高一点,你知道的,面试还行吧,没那么难,但毕竟也算回事。

Like this should be, you know, higher, this should be, know, the interview was okay, maybe not as hard but it was something.

Speaker 1

我是因为太天真了,根本没意识到犯错的后果。

I mean, did because I was naive, because I didn't understand the consequences of a mistake.

Speaker 1

所以我当时就觉得,这些人怎么动作这么慢。

And so, I was like, oh, these people are just moving slow.

Speaker 1

我看了他们做的每一件事,都觉得充满风险。

And I looked at what they were doing and everything was like a risk.

Speaker 1

一旦出错,你只有七秒钟时间给维萨公司回复,记住了,是七秒。

If you made a mistake, you remember you only get seven milliseconds, seven seconds to give Visa a response.

Speaker 1

要是没及时回复,系统就默认拒绝,所有人都得赔钱。

If you don't, then it's a default decline, now everybody's losing money.

Speaker 1

所以,一个改动要是想做好,花时间等是完全值得的。

And so the cost of getting a good change, it was just worth waiting.

Speaker 1

但一开始我根本不懂这些。

So I didn't know that in the beginning.

Speaker 1

所以我当时就觉得,大家做事都太慢了。

So I'm just like, oh, everybody's moving a little too slow.

Speaker 1

我看他们是怎么做部署的。

I was seeing how they were doing deployments.

Speaker 1

我观察他们是怎么配置服务器的。

I'm watching how they're provisioning servers.

Speaker 1

我就想,这整个流程其实都能自动化,因为我已经做过好多次了。

I'm like, know, you can automate this whole thing because I've done it multiple times.

Speaker 1

后来我才学会稍微耐心一点。

And then I learned to be a little bit patient.

Speaker 1

我告诉自己,等等看。

I write, hold on.

Speaker 1

我学会了怎么应对拒绝。

I learned how to deal with the no's.

Speaker 1

我学会了怎么跟高层打交道。

I learned how to deal with the executives.

Speaker 1

我学会了如何不仅跟工程师沟通,还能赢得高层领导的信任。

I learned how to talk not just to engineers, but to the senior leaders and get their trust.

Speaker 1

我就不一一细说我在那儿做的所有事了,但我在那儿待了大概三年,那工作真是让人精疲力尽。

And I won't tick about everything that I did there, but I was there for about three years, so the job hobby stops.

Speaker 1

我记得那时候我们用 Apache 和某个 Java 插件来连接 JBoss 实例。

And I remember there was a task where we were using Apache and some Java plugin to talk to our JBoss instances.

Speaker 1

结果每个连接在负载均衡器上都占用了大量内存。

And so they were using a lot of memory per connection on the load balancer.

Speaker 1

当时我们正从大型机迁出来,进入这个新的 Java 世界,但服务器一直不停地崩溃。

And so we got a new we're moving off the mainframe, we're moving into this new, you know, Java world, and the servers just kept falling over.

Speaker 1

我们根本处理不了那么多交易请求。

We couldn't handle all the transactions.

Speaker 1

我眼睁睁看着团队一次次进入变更窗口,然后一次又一次地失败。

And I'm just watching the team go into these change windows and then we fail, we would fail, we would fail.

Speaker 1

当时的 CTO 说,这样下去咱们亏钱太多了。

And the CTO at the time was like, you know, this is costing us money.

Speaker 1

我们开始收到费用分摊账单,还得支付罚款。

These we're getting chargebacks, we're having to pay out penalties.

Speaker 1

我当时有个开发环境,用的是 NGINX。

And I was like, I had a dev environment where I was using NGINX.

Speaker 1

我把所有这些 Java 组件都删了,这不就是 HTTP 吗?

I got rid of all this Java stuff like, it's it's just HTTP.

Speaker 1

根本不需要什么 Java 连接器。

You don't need a Java connector thing.

Speaker 1

我看了规范,真的用不着。

I'm reading the spec, you don't need it.

Speaker 1

内存占用直接降到了原来的几分之一。

And my memory usage is a fraction.

Speaker 0

就是因为把它们删了。

By getting rid of it.

Speaker 1

对。

Yeah.

Speaker 1

你根本不需要它。

You don't need it.

Speaker 1

而且NGINX的线程模型更优,还有其他各种优势。

And NGINX had a better threading model, all of these things.

Speaker 1

我当时就想,我搞到了一个完美的配置。

And I was like, I got a perfect config.

Speaker 1

我把Apache的配置迁移到了这个上面。

I've ported the Apache config to this one.

Speaker 1

连所有重定向、路由,还有那些遗留的垃圾,我都一并处理了。

I even handle all of our redirects, all of our routes, all the legacy cruft.

Speaker 1

这东西肯定能跑起来。

This thing will work.

Speaker 1

我说,Kelsey,这个没通过认证啊。

It's like, don't know, Kelsey, this is not certified.

Speaker 1

我说,不用怕,我这配置是从Red Hat来的。

I was like, no, no, no, I got it from Red Hat.

Speaker 1

在 Red Hat 里,用 RPM 安装 NGINX 是支持的。

RPM install NGINX is in Red Hat.

Speaker 1

他们说:‘好吧,既然 Red Hat 有这东西。’

They're like, okay, it's in Red Hat.

Speaker 1

行吧,那就这样。

Okay, sure.

Speaker 1

我说:就给我一次机会吧。

I said, just give me one chance.

Speaker 1

对。

Yeah.

Speaker 1

大概一周后,他们终于给了我一次机会,让我进入变更窗口期。

And about after a week, they gave me a shot and they let me be in the change window.

Speaker 0

变更窗口是什么意思?

What what is the change window?

Speaker 1

在金融机构里,变更窗口通常是指半夜十二点开始做改动,必须在早上六点前完成,而且还得提前通知所有客户。

So change window typically in the financial institution is like, we can start changes at midnight and we have to be finished by 6AM, and you have to notify every customer.

Speaker 1

我们要对环境做一些调整,可能会出现一些异常情况,希望得到你们的同意。

We're going to change something in the environment, things may get a little weird, we would like your permission.

Speaker 1

如果这项改动可能对你们的业务造成影响,现在就是提出来的时候。

And if if it's something that can be detrimental to your business, now is your time to speak up.

Speaker 1

获得许可后,我们就有了一个操作窗口。

Once we got permission, we had a window.

Speaker 1

这可是你们唯一的操作时间。

That's the only window you got.

Speaker 1

如果没在时限内完成,就必须立即回滚,恢复到原来的状态。

And if you can't finish it on time, you gotta shut it down and get us back to where we were.

Speaker 1

对,回滚。

Yeah, roll back.

Speaker 1

要么回滚,要么向前推进,能回滚就最好。

Roll back, roll forward or if you could roll back.

Speaker 1

我记得我把NGINX部署上去之后,接下来就全看你们的了。

And I remember I put NGINX in place, so at this point, it's all you.

Speaker 1

这家公司没人有NGINX的经验。

No one at this company has NGINX experience.

Speaker 1

而且大多数人也不愿意接手这件事。

Also, most people don't wanna do this.

Speaker 1

他们都说:我觉得这主意不太靠谱。

They're like, hey, we think this is a bad idea.

Speaker 1

现在,你的声誉可就押上去了。

And so now it's your reputation on the line.

Speaker 1

没法躲到团队后面,简直就像所有人都在等着看你怎么搞定。

There is no hiding behind the team, it's almost like everyone's sitting back like, you got it.

Speaker 1

幸运的是,管理层表态了:我们支持你,我们的职业前途也跟你绑在一起。

Now, luckily the leadership was like, we are supporting you and we're putting our careers on the line as well.

Speaker 1

其实他们本来可以稳稳妥妥地避开风险。

I mean, they probably would have been safe.

Speaker 1

但大概两小时后,我把所有问题都解决了,眼看着内存压力一路下降。

But after about two hours, I got everything working and we just watched the memory pressure just drop.

Speaker 1

所以我们之前用到90%的时候,大概是32G内存,每次一压就爆栈,现在这系统只用两G内存,大家都傻了,问:我们是不是遇到峰值负载了?

So if we were at 90% on utilizing on, let's call it 32 gigs and we're just blowing stack every time everything's crashing, this thing is hovering at like two gigs of RAM and everyone's like, yo, like, are we getting peak load?

Speaker 1

这靠谱吗?

Is this legit?

Speaker 1

我们都坐在那儿,一脸懵,拿不准。

And we're all just sitting there like not sure.

Speaker 1

以前我们测试平台,得有人开车去加油站,刷张信用卡加个油,然后盯着看交易能不能成功写进Oracle数据库。

And the way we used to test the platform is we would someone would drive to the gas station, get a credit card, buy some gas, we want to see the transaction land in the Oracle database.

Speaker 0

是的,能追踪到。

Yeah, you could track it.

Speaker 1

所以我们能全程跟踪,一看,成了!

So we can track the whole thing, we're like, yo, it works.

Speaker 1

但你真要踏实下来,得等到第二天早上十点左右。

And so the thing is you can't really be comfortable until about 10:00 the next day.

Speaker 1

现在是凌晨三点,大家都回家了,我没睡。

So now it's 3AM, we all go home, I don't go to sleep.

Speaker 1

我说,咱们在生产环境改了很大一部分基础设施。

I'm like, yo, we've changed a big part of the infrastructure in production.

Speaker 1

咱们看看情况。

Let's see.

Speaker 1

十点过去了,我们环顾四周,没看到任何Nagios告警。

So 10:00 goes by and we look around and there's no Nagios alerts going off.

Speaker 1

我心里想,咱们这回可能真稳了。

I'm like, man, we might be good.

Speaker 1

你了解我,我一上来就打开top命令盯着。

You know me, I got my, I got top going.

Speaker 1

我一看,内存使用率稳得很。

I'm looking like memory usage is holding steady.

Speaker 0

是啊,top这个工具,不知道的人可能不清楚,它会显示CPU使用情况。

Yeah, top is for those who don't know that, that's when you it shows us it shows the CPU

Speaker 1

它会循环显示进程树,对吧?

It shows your PS tree in a loop, right?

Speaker 1

所以你运行 PS AUX 命令的时候,就能看到

So it just like if you ran the PS AUX command, you see

Speaker 0

对,所有进程,那些最占资源的进程,没错。

all Oh the yeah, processes you see the top processes, yeah.

Speaker 1

你只要运行 top,它就会每秒自动刷新一次,或者按你设置的时间间隔更新。

And so you just run top and then it's basically that every second being refreshed or whatever time you give it.

Speaker 1

我当时打了个赌,要是这事儿成了,你就得给整层楼买一周的披萨,每天都要点新的。

But one of the bets I made was if I get this to work, you have to buy pizza for the whole floor for a week, every day we get a new order.

Speaker 1

因为他跟 Kelsey 说,只要你搞定这个,我就请你吃牛排大餐。

And because he promised like, Kelsey, if you get this to work, I'll buy you a steak dinner.

Speaker 1

那时候我还在吃素,根本不吃牛排,但我有个更想要的替代方案。

And at the time, I still am, was I vegetarian, so I don't eat steak, but here's here's what I would like instead.

Speaker 1

你得给整层楼买披萨。

You gotta buy pizza for the whole floor.

Speaker 1

我不确定自己当时想得有多周全,但我觉得,只要这事成了,就能让整个团队对我印象更好,

Now, I don't know how strategic I was thinking, but I figured that I could score some points with the whole team from turning it into a I succeeded to a

Speaker 0

我们成功了。

we succeeded.

Speaker 0

然后呢,

And

Speaker 1

大家一起吃饭,是个不错的办法。

then people eating together was one good way of doing it.

Speaker 1

我记得系统跑通之后,他问:‘点什么?’

And I remember after it worked, he was like, what's the order?

Speaker 1

我就直接从一家店点了披萨,摆在中间。

And I just ordered, you know, pizza from one place and just put it in the middle.

Speaker 1

大家都问:‘这披萨是干嘛的?’

Everyone's like, what's the pizza for?

Speaker 1

对吧?

Right?

Speaker 1

平时只有在特别场合,比如我们这种活动,才会这样。

Because usually you only get this for special events, like for the thing we did.

Speaker 1

第二天又是披萨,再来一堆披萨。

And the next day is some more pizza, and some more pizza.

Speaker 1

当我真正达成这个成果时,我才明白,原来这就是成熟的样子。

And so when I got that accomplishment, I was like, okay, this is what maturity looks like.

Speaker 1

这不光是找到正确的方案,你必须让大家达成共识、真心支持,确保万无一失,因为你的信誉就押在这上面。

It's not about just having the right solution, you literally have to get consensus, buy in, make sure and then your reputation is on the line.

Speaker 1

我把这个改变落地了,它彻底改变了我对成功的理解。

And I got that change in and it just kind of changed the way I thought about what success looked like.

Speaker 1

这正是那个转折点。

And so that was the inflection point.

Speaker 1

之后,我把Puppet带进了这家公司,又用这套工具重复了一遍自动化一切的过程。

And then of course, I brought puppet into that organization, repeated a similar process of automating everything with this tool.

Speaker 0

凯尔西刚才讲了2010年代CI/CD是什么样子,以及当时部署到生产环境有多难,这正好引出了我们今天的赞助商Buildkite。

Kelsey just talked about what CI CD looked like in the twenty tens and how difficult deploying to prod was, which leads us nicely to our episode sponsor Buildkite.

Speaker 0

这种靠人工部署的时代,正是Buildkite诞生的背景。

This type of manual deploy era was the time when Buildkite was created.

Speaker 0

当时很多公司都在想办法提高发布频率,一周不止发一次,最先遇到瓶颈的就转向了Buildkite。

Injuring orgs were trying to figure out how to ship more frequently, more than once a week, and those running into wall first turned to Buildkite.

Speaker 0

Shopify从2015年开始使用Buildkite。

Shopify started running on Buildkite in 2015.

Speaker 0

Airbnb、Canva、Uber和OpenAI都用了Buildkite七到十二年了。

Airbnb, Canva, Uber, and OpenAI have all been using Buildkite for seven to twelve years.

Speaker 0

整个2010年代,全球顶尖软件公司最棘手的CI问题,都是在Buildkite的流水线上解决的。

Throughout the 2010s, the hardest CI problems in the industry for global software leaders were getting solved on Buildkite pipelines.

Speaker 0

正因如此,Buildkite最懂当下正在发生的事。

That's exactly what makes Buildkite the CI platform most in tune with what's happening right now.

Speaker 0

生成式AI的吞吐量正在把每个人的构建队列推到极限。

GenAI throughput is pushing everyone's build queue to its limits.

Speaker 0

代码代理的提交量是过去默认设置的五倍、十倍,甚至五十倍。

Coding agents are pushing commits five, ten, 50 times the volume that your defaults were built for.

Speaker 0

当年能扛住Shopify大规模流量的架构,现在正扛着Entropic、Cursor、Meta、Mistral、Cohere、VLM、XAI、Lambda等一众客户的高频推送。

The same architecture that absorbed Shopify's traffic at scale five to ten years ago now absorbs the share push from Entropic, Cursor, Meta, Mistral, Cohere, VLM, XAI, Lambda and more who are all Buildkite customers.

Speaker 0

其他CI系统在重压下纷纷崩溃,而Buildkite每周却能处理高达14亿分钟的作业任务。

Where other CI's are cracking under the weight, Buildkite is running about 1,400,000,000 job minutes a week.

Speaker 0

代理程序可以运行在你的基础设施上,也可以运行在Buildkite的平台上。

Agents run on your infrastructure or on Buildkite's.

Speaker 0

所有的构建产物和日志都会被完整记录。

Every artifact and log is captured.

Speaker 0

一旦出错,你立刻就能知道原因所在。

And when something fails, you see the why immediately.

Speaker 0

如果你的现有CI系统已经遇到瓶颈,或者停机时间开始严重影响交付,赶紧去buildkite.com/pragmatic看看。

If you're hitting ceilings on your existing CI or downtime is becoming more problematic for your delivery, head to buildkite.com/pragmatic.

Speaker 0

提供30天全功能试用,无需信用卡,还有专人随时待命。

Thirty day all access trial, no credit card, and an actual human NGR on standby.

Speaker 0

他叫Ola,非常乐意帮你解决问题。

His name is Ola and he is very helpful.

Speaker 0

我也想提一下我们的资深赞助商Sentry。

I'd also like to mention our seasoned sponsor Sentry.

Speaker 0

AI代理目前无法从生产环境的监控日志中获得反馈。

AI agents don't have a feedback loop from production observability logs.

Speaker 0

但它们该不该有这个能力呢?

But should they have it?

Speaker 0

我的意思是,我们大概不希望构建一个系统,每次生产环境出错,AI代理就自动推送修复,完全没人监督。

I mean we probably don't want to build a system where after each production error AI agents automatically push out a fix into production without supervision.

Speaker 0

那简直是在自找麻烦。

That would be a recipe for disaster.

Speaker 0

那如果我们采取更稳妥一点的做法呢?

But what if we did something more modest?

Speaker 0

一旦生产环境出现错误,代理就启动,借助Sentry提供的上下文信息进行排查。

When a production error fires an agent investigates this with context from Sentry.

Speaker 0

毕竟,Sentry早就把错误的所有相关上下文都收集全了。

Sentry already has all the context in the error after all.

Speaker 0

Sentry MCP 就是一种方式,可以把Sentry接入支持模型上下文协议的代理系统。

Sentry MCP is one way to plug in Sentry to agents that support the Model Context Protocol.

Speaker 0

Cloud Code、Cursor、Codecs、Versus Code、Copilot,这些工具都支持。

Cloud Code, Cursor, Codecs, Versus Code, Copilot, they all do.

Speaker 0

连接上MCP服务器之后,就能做很多实用的事情。

After you hook up the MCP server, you can do some very useful things.

Speaker 0

比如说,你可以这么做。

For example you could do this.

Speaker 0

当一个已经解决的Sentry问题再次出现时,可以启动Cursor代理,检查回归原因,查看之前的代码,并提交一个包含修复建议的拉取请求。

When an already resolved Sentry issue resurfaces, you can kick off a cursor agent to investigate their regression, read their olden code and open a PR with a suggested fix.

Speaker 0

要让这一切跑起来,确实需要一些配置工作。

There's a little work involved to get all of this going.

Speaker 0

你需要把Sentry和代码仓库连起来,给Cursor添加Sentry MCP,定义代理的排查指令,设置触发自动化流程的条件,然后测试整个流程是否正常。

You need to connect Sentry to your code repository, add Sentry MCP to cursor, define the instructions for the cursor's agent to investigate, configure the trigger that launches the automation, and test that it all works.

Speaker 0

但一旦配置完成,就能更快地修复回归问题,同时还能逐条审查每一个修复方案。

But once you have it up and running, you can get regressions fixed faster whilst reviewing every and all fixes.

Speaker 0

在我看来,这种把AI、Cursor和Sentry结合起来的方式,既合理又健康。

This feels like a sensible and healthy use of AI and CP and Sentry to me.

Speaker 0

去 Sentry 官网 sentry.pragmatic 试试吧,今天就开始监控和修复回归问题。

Check out Sentry at sentry.pragmatic and start monitoring and fixing regressions today.

Speaker 0

好了,接下来我们回到 Kelsey,聊聊他是怎么在公司引入 Puppet 并实现 DevOps 自动化的。

And with this, let's get back to Kelsey and when he introduced Puppet into his organization and automated DevOps processes.

Speaker 1

我记得当时 Puppet 的人来过我们公司。

And I remember we had someone from Puppet come by.

Speaker 0

再顺便提一下,对还不了解 Puppet 的朋友,Puppet 就是……

And then just for again, those who don't know Puppet, Puppet is this

Speaker 1

一个工具。

tool.

Speaker 1

以前我们全是靠一堆 Shell 脚本,搞点零零散散的自动化,但大多数时候还是手动操作:有人提个工单,说要给服务器加个 SSH 密钥,或者装个软件,我们就手动处理,复制粘贴结果到工单里,然后关掉。

So Puppet is we went from, you know, lots of shell scripts, you know, doing random things and pseudo automation, but most of the time, you just did a manual thing, you had a ticket come in, someone wanted a new SSH key on a server, someone wants something installed, you did it manually, copied and pasted the output in the ticket and you closed it.

Speaker 1

每天都是这么重复干。

And you did that every day over and over again.

Speaker 1

这也解释了我常说的话:有些人干了二十年,其实只有一年的经验。

And that's where the saying that I say sometimes, some people have twenty years and one year experience.

Speaker 1

IT行业的人这么干了二十年,却始终没迈出自动化或学习工具和技能的那一步。

And people in IT have been doing that for twenty years on the road, they never made the leap to automation or learning the tools or skills.

Speaker 1

所以我心想,也许我可以引进一个工具。

And so I saw like, man, maybe I can bring in a tool.

Speaker 1

当时我引入了这个叫Puppet的工具,那是2008年的事。

And I brought this tool called Puppet at the time, two forty eight.

Speaker 1

那时候DevOps这个词还没出现,但我已经开始学着写代码了——比如为Java生产环境写Puppet脚本,用Puppet的DSL写manifest。

And this is right before DevOps becomes a word, but it's like, alright, I'm starting to learn how to write code, like the for the Java production stuff, I'm writing puppet, you know, manifest using the puppet DSL.

Speaker 1

有时候还得写点Ruby,来定义新的资源类型。

Sometimes you have to write a little bit of Ruby to build a new resource type.

Speaker 1

我不仅参与贡献,还接触到了开源:发现哪里有问题,我就直接提补丁上去。

And I'm contributing and also I get introduced to open source like, there's something there that doesn't work, I'm going to contribute it upstream.

Speaker 1

所有这些,我都在背后默默准备,为第二幕做铺垫。

So I'm doing all this behind the scenes, getting ready for act two.

Speaker 1

我记得我经理去参加了一个会议,回来后跟我说:‘Kelsey,我终于明白你平时在忙什么了。’

And I remember my manager went to a conference and he came back and he's like, hey, Kelsey, I finally know what you're doing.

Speaker 1

我当时就想,那是什么东西?

I was like, what's that?

Speaker 1

他说,你这干的就是DevOps啊。

He was like, you're doing DevOps.

Speaker 1

我一听,心里还挺不爽的。

And that part of me was like upset.

Speaker 1

凭什么你来给我这活儿起名字?

How do you get to name what I'm doing?

Speaker 1

后来大家都在谈DevOps,他说我认识一个叫詹姆斯·坦布尔的人。

And so, you know, everyone's talking about DevOps and he's like, I met a guy named James Turnbull.

Speaker 1

詹姆斯是澳大利亚人,在Puppet Labs工作,我买的第一本Puppet书就是他写的。

And James is an Australian dude, he worked at Puppet Labs and he wrote the first puppet book that I bought and read.

Speaker 1

于是我心想,坦布尔?这名字怎么听着这么耳熟。

And so I'm like, Turnbaugh, that name sounds familiar.

Speaker 1

我低头看了看自己的桌子。

Oh, I'm looking at my desk.

Speaker 1

詹姆斯·坦巴和杰夫·麦昆,他是这本书的合著者之一。

James Turnbaugh and Jeff McCune, so he's one of the coauthors of this book.

Speaker 1

结果发现,那时候詹姆斯写了很多技术书籍。

And it turns out, James wrote a lot of tech books back then.

Speaker 1

他来公司的时候,我的经理想让他看看我们是怎么使用 Puppet 的。

And he's coming to the office and my manager wanted him to check out how we were using Puppet.

Speaker 1

我当时就想,这可是世界级的专家啊。

I was like, okay, so, you know, this is world class expert.

Speaker 1

到那时候,我已经把 Puppet 隐藏在 JIRA 工单后面了。

And by that time, I have Puppet hidden behind JIRA tickets.

Speaker 1

只要开一个 JIRA 工单,我这边把所有东西都打包成 RPM,你从下拉菜单选个包,再选个环境,然后就自动搞定,结果立马出来。

And so you could just open a JIRA ticket, I had RPMs for everything, you pick the RPM you wanted from a dropdown, you pick your environment from a dropdown, and magic happened and you got results.

Speaker 1

大多数人根本不知道 Puppet 是什么,也从来没碰过它,他们只知道只要提个需求,东西立马就能拿到。

Most people didn't even know Puppet existed, most people never touched it, they just knew they can get anything on demand.

Speaker 0

你去 JIRA 里点一下,它就自动处理了。

You could go to JIRA and it does it.

Speaker 0

比如,你可以直接申请一台新机器或者配置一个环境。

So for example, you could like provision a new machine or Call environment.

Speaker 0

我要一个数据库,

I want database,

Speaker 1

我要IBM MQ消息服务器,还要这三个应用,另外得配置好防火墙。

I want IBM MQ series message server, I want these three apps, and I need this firewall setup.

Speaker 1

没问题。

No problem.

Speaker 1

只要开对了Jira工单,然后等审批通过就行。

Open the right Jira tickets, get them approved.

Speaker 1

审批通过后,我们有个小工具,我管它叫Mr.

When they're approved, we had this little, I called it Mr.

Speaker 1

Resetti。

Resetti.

Speaker 1

哦,这名字是我一个朋友从某个游戏里取来给我的。

Alright, one of my buddies gave me names from some video game.

Speaker 1

一旦审批通过,Mr. Resetti 就会接手这个工单。

Once it got approved, Mr.

Speaker 1

我们直接提取自定义字段,调用对应的 Puppet 清单,然后把结果更新回工单里。

Resetti would own the ticket, and we would just extract the custom fields, and we would just call the right Puppet manifest, and we would take the output and update the ticket.

Speaker 1

所以项目经理和开发人员几乎能立刻拿到他们想要的东西。

And so PMs, developers, they just got what they want damn near instantaneously.

Speaker 1

我们把这些系统都搭建好了,那时候我连晚上和周末都在搞,因为当时在公司不允许这么做,所以我只能私下给 Puppet 做贡献。

So we built all the systems, they didn't know nights and weekends, I'm contributing to Puppet because you know, wasn't allowed at work at the time.

Speaker 1

那是2007年、2008年的时候。

This is 2007, 2008.

Speaker 0

反正他们当时可能压根儿就不太明白开源到底是啥意思。

They probably didn't even really understand what open source was anyway.

Speaker 1

所以他们大概就是说,嘿,你得利用自己的业余时间去做。

So they were just like, hey, you gotta do that on your own time.

Speaker 1

所以我就只能在晚上和周末抽空做。

So I would just do it nights and weekends.

Speaker 1

所以詹姆斯来了,我记得我们所有人都进了电梯,要去三楼,我经理正向我和团队介绍他,说这是詹姆斯,这是谁谁,这是凯尔西。

So James shows up and I remember we all get in the elevator, we're going to the 3rd Floor, my manager's introducing James to me, to our team, like, this is this person, this is this person, this is Kelsey.

Speaker 1

詹姆斯转过头来问我:"你是凯尔西·海特沃?"

And James turns to me, he's like, Kelsey Hightower?

Speaker 1

哦,我们早就听说过你了。

Oh, we know you.

Speaker 1

我们特别欣赏你的贡献。

We love your contributions.

Speaker 1

我经理一脸茫然:"什么贡献?"

And my manager is just like, what contributions?

Speaker 1

我们可没做什么贡献啊。

We're we're not doing contributions.

Speaker 1

詹姆斯一边跟我握手,一边像老朋友一样跟我聊天,其实呢,我一直通过开源项目跟Puppet Labs的团队合作。

And James is like shaking my hand and he's just talking to me like we're friends because the thing is I have been working with the Puppet Labs team through like Open source.

Speaker 1

我一直在为Puppet做开源贡献。

Open source contributing to Puppet.

Speaker 1

我们上去之后,我经理就说:来,给他看看我们的系统。

And so we get up there and, you know, my manager's like, hey, let's show him our setup.

Speaker 1

我就说:詹姆斯,我们这儿有很多 Puppet 清单,我用的是外部节点分类器,从数据里动态加载配置,还研究了承诺理论,全都调得差不多了。但从界面角度,我不想让每个人都要去学 Puppet。

I was like, alright, James, we have a lot of Puppet manifests over here, I'm using external node classifiers, I'm setting it breaking config from data, and I read my bursts, this promise theory and then got it all dialed in, but from an interface perspective, I just didn't want everyone to have to learn Puppet.

Speaker 1

所以我们把它和 JIRA 接起来了,我给他演示了整个工作流程。

So we hooked it up to JIRA, I'm showing him this entire workflow.

Speaker 1

他就坐在那儿说:嗯,我真没什么建议。

And he's just sitting there like, yeah, I have no recommendations at all.

Speaker 1

这简直太棒了。

Like this is amazing.

Speaker 1

真正改变局面的是下面这件事。

And here's the thing that kind of the game changer.

Speaker 1

他特地从外地赶到亚特兰大,我们离机场有四十五分钟车程,他花了不少时间跟我们团队交流,那天快下班了。

So he came all the way to Atlanta, we're forty five minutes from the airport, he spent time with our team and it's the end of the day.

Speaker 1

他准备走的时候,正要叫车去机场。

And then he's on the way out and he's about to call a cab to go to the airport.

Speaker 1

我说:‘不行,你都到我老家来了,我能让你自己打车去机场吗?’

I'm like, no, you're in my hometown, can I let you go to the airport?

Speaker 1

我开车送你去机场。

I will give you a ride to the airport.

Speaker 1

于是我上了车,他坐前排,我同事坐后排,他摘掉领带、卷起袖子,我这才看到他满胳膊的纹身,心里想:哦,原来你是正经的德州老哥啊。他说:‘别搞这么正式,我这身打扮全是为了你们,这才是你们该有的样子。’

So I get in my car and he's in the front seat, my colleague's in the back seat, he takes off his tie and rolls up his sleeves, I could see all the tattoos, I'm like, oh, so you're like a legit Texas is like, yeah, don't do all of this, I just did this for you all, this is your dress code.

Speaker 1

我心里想:詹姆斯这人真酷。

I was like, oh, James is cool.

Speaker 1

他说:‘兄弟,你们真做得不错,现在我才算真正认识了詹姆斯·坦普尔。’

He was like, man, yeah, you guys are doing great work and now I'm talking to the real James Turnbull.

Speaker 1

他邀请我去Puppet Conf演讲,我就去了。

And he invited me to give a talk at Puppet Cuff and I went to go give that talk.

Speaker 1

那是我人生中第一次正式的大会演讲。

It was my first like real conference talk.

Speaker 1

我讲了一些关于Puppet底层集成的内容,还加了点幽默,那是我头一回在台上感觉可以完全做自己。

And I talked about some low level kind of Puppet integration stuff and I had a little comedy in there, was like the first time I felt like I could just be myself on stage.

Speaker 1

我回家之前,Puppet的创始人卢克·尼兹和我在俄勒冈州波特兰的一家小咖啡馆坐下来聊了聊。

Before I came home, Luke Knees, the founder of Puppet, we sat down in a little coffee shop in Portland, Oregon.

Speaker 1

他问我:你有没有兴趣来这儿工作?

And he was like, you know, would you like to work here?

Speaker 1

我立马说:当然有。

I was like, yes.

Speaker 1

那还用说,百分之百愿意。

Like, of course, 100%.

Speaker 1

当然,薪资也涨了不少,还能远程办公,我得立刻从亚特兰大搬走。

And of course, there was a nice salary increase and I could work remote and I had to leave Atlanta immediately.

Speaker 1

我记得我回来的时候,我的主管特别认可我这些年来的表现。

I remember coming back and my manager really appreciated all the progress I was making over the years.

Speaker 1

我那时候已经有点名气了。

I kind of made a name for myself.

Speaker 1

他突然就给我加了薪,完全出乎意料。

And I remember he gave me a nice little raise, just out of the blue.

Speaker 1

他把一个信封推到我面前,我打开一看,里面是一笔不少的钱。

And he slid this envelope to me and I opened it and it was a nice number in there.

Speaker 1

我当时就说,哇,这太棒了。

I was like, oh, that's great.

Speaker 1

但我得说清楚,我要辞职了,要去Puffett工作。

I was like, but here's the thing, I'm resigning, I'm going to go work for Puffett.

Speaker 1

然后他说了一句特别酷的话,我们之前关系挺微妙的,看情况时好时坏,但总体上他帮了我很多,让我成长了。

And then he said something that was dope because we had a kind of difficult relationship depending on how it went, but overall he helped me mature.

Speaker 1

这一点我永远都会说,他真的让我变得成熟了。

That's one thing I will always say, he helped me really be mature.

Speaker 1

他说:‘我真没想到你能在这儿待这么久。’

And he was like, I'm surprised you stayed here this long.

Speaker 1

对吧?

Right?

Speaker 1

这其实是最高级别的认可——你留在这儿,不只是因为进步了、有贡献,你真正改变了这里的文化。

As like this ultimate compliment that you stayed here beyond the just getting better or making an impact, you literally changed this culture.

Speaker 1

七年后,事情来了个圆满的闭环——Kubernetes发布了。我记得重回那个办公室时,他们已经在生产环境运行etcd和Kubernetes了,连一些老工具都还在用。

And the full circle moment happened like seven years later when Kubernetes came out, I remember coming back to that office and they had already been running etcd in production, Kubernetes in production, and even some of the old tooling they had was still running.

Speaker 1

对我来说,这真是个特别重要的反馈:真正的影响力是持久的。即使当初的那些东西不在了,他们依然有这种文化——新技术来了,我们知道怎么把它融入系统。

And to me, that was like a really important feedback that sometimes if you make an impact, lasting impact is way different, that even when that wasn't there, they still had the culture to say there's new technology and we know how to bring it into the stack.

Speaker 0

那会儿容器技术刚开始兴起,对吧?

So at this point, containers were starting to start, right?

Speaker 0

你最早是怎么接触到容器的?那时候你就意识到这东西会变得特别重要吗?

How did you first come across containers and very early on, you realized this is gonna be big and important?

Speaker 1

我没有。

I didn't.

Speaker 1

你没有?

Oh, you didn't?

Speaker 1

没有,因为我当时在Puppet Labs,之前还参与过Python核心开发,比如virtualenv、PyPy,我所在的团队当时就在尝试解决Python的包管理问题。

No, because I'm at Puppet Labs, know, before that I was contributing to core Python stuff like virtual int, pypy, I was on the team that was trying to integrate some of the Python, Python had like package manager problem even back then.

Speaker 1

所以我那时候完全沉浸在Python里。

And so I'm all in on Python.

Speaker 1

后来我学 Puppet 的时候,就全身心投入了 Ruby。

And then when I'm learning Puppet, I'm all in on Ruby.

Speaker 1

那时候我觉得,DevOps 加上配置管理就是解决一切问题的终极方案。

At that time, I'm thinking DevOps plus configuration management is the end all be all for everything.

Speaker 1

其实那时候,大概是 2011 到 2012 年,我脑子里的竞争对手只有 Puppet、Chef 和 Ansible,就这三家。

And really, at that time, we're talking 2011, 2012, in my mind, the competition was only between Puppet Chef and Ansible, that was it.

Speaker 1

所以我全身心投入,还在 Puppet Labs 工作。

And so I'm all in, and I'm working at Puppet Labs.

Speaker 1

某种程度上,我觉得我们当时是在定义未来的方向。

And so we're kind of in some ways, I felt like we were dictating the future.

Speaker 1

我们跑遍各大公司,帮他们理解配置管理的意义。

We were going to companies and getting them to understand configuration management.

Speaker 1

我们一直在讲,怎么加快流程、实现合规这些好处。

We were talking about the benefits of like speeding everything up and, you know, doing all these compliance.

Speaker 1

我们推动大家从 SharePoint 转向用可执行代码来实现这些功能。

We were moving people from SharePoint to executable code to implement these things.

Speaker 1

所以我们觉得,这才刚刚开始。

So we thought we were just getting started.

Speaker 1

根本没想到,这种模式还得再持续十年以上。

There was no world where we didn't think that we needed ten more years of that.

Speaker 1

对吧?

Right?

Speaker 1

连VMware都给我们投资,让我们把Puppet集成到他们的平台里。

We even got money from VMware to integrate puppet into that.

Speaker 1

那时候,Chef也在被集成进AWS。

Chef was being integrated into AWS at that time.

Speaker 1

这下子,我们终于看到希望了。

So this was like the thing that finally, we're finally getting there.

Speaker 1

我们得让系统管理员转型成工程师,通过DevOps来接纳这些工具。

We just got to teach system administrators to become engineers via DevOps and started embracing these tools.

Speaker 1

我最先看到的是Go语言的出现。

And the first thing that I saw come out was Golang.

Speaker 1

我记得当时坐在办公桌前,心想,那会儿我们用 Ruby 遇到了不少性能问题。

I remember sitting at my desk and I was like, you know, at that time we were hitting performance issues with Ruby.

Speaker 1

对,Ruby 的全局锁解释器,根本没法同时处理多个任务,太难了。

Right, the global lock interpreter, you can't do more than one thing at a time, not easily.

Speaker 1

所以我们开始尝试 JRuby,甚至在 Puppet 的一部分模块里用了 Closure。

And so we moved to things like JRuby, we even did closure for some part of the puppet stack.

Speaker 1

那时候我们还在想,要不要改用 C++ 或者 C 来写呢?

And I remember we were thinking about, should we start doing stuff in C plus plus Should we start doing stuff in C?

Speaker 1

但问题在于贡献者。

But the problem is contributors.

Speaker 1

那些懂 Ruby 的开发者怎么办?

What would we do with all the Ruby contributors?

Speaker 1

我们还依赖很多 Ruby gem,要转过去可不容易。

We even relied on things like Ruby gems and it's gonna be it was gonna be a hard sell.

Speaker 1

我记得第一次下载 Go 的时候。

And I remember downloading Go for the first time.

Speaker 1

让我下定决心的是,我记得自己做过一个原型,叫 factor。

And the thing that sold me on it, I remember one of the prototypes that I built was factor.

Speaker 1

Factor 是 Puppet 里的一个组件,用来收集机器的各种信息。

So factor is one of the agents in Puppet that gives you facts about a machine.

Speaker 1

比如红帽的版本、内核版本、当前有哪些用户,它把这些数据提供给 Puppet,让配置脚本能根据实际情况做判断。

So this is Red Hat, this kernel version, this is what the users look like, and it would give that to puppet so that your configuration code had context on what to do.

Speaker 1

这个组件原来是用 Ruby 写的,有时候跑得特别慢,因为它是逐个文件顺序读取的。

And that was written in Ruby and sometimes it will run slow because you're reading all these files serially.

Speaker 1

所以我当时就想,算了,干脆试试用 Go 重写一遍。

And so I remember I was like, alright, let's try this Golang out.

Speaker 1

我记得在 Mac 上写完代码,编译好,再用 SCP 传到 Linux 服务器上。

And I remember I wrote the code on my Mac, compiled it, SCP it to a Linux box.

Speaker 1

我当时就震惊了,这速度也太夸张了。

I was like, oh, this is crazy.

Speaker 1

我还记得,我把所有信息收集任务都并行跑了起来。

And I remember running all the facts in parallel.

Speaker 1

结果速度一下子快了好多倍。

And it came back in a fraction of the time.

Speaker 1

我当时就想,这玩意儿真得用上Go语言了。

Was like, yo, we got to use Golang for stuff.

Speaker 1

我记得团队说不行,因为Puppet现在要进军企业市场,不支持Solaris和AIX。

I remember the team was like, no, it doesn't work for Solaris or AIX because Puppet was now moving into the enterprise.

Speaker 1

这居然成了标准?

I was like, that's the criteria?

Speaker 1

开什么玩笑。

No way.

Speaker 1

但我可是搞定了,对吧?

But I got it, right?

Speaker 1

这种成熟度的问题,我以前就经历过。

I've gone through this maturity thing before.

Speaker 1

后来TerraForm就出现了。

And then TerraForm comes out.

Speaker 1

但在 Docker 出现之前,TerraForm 已经在试着挑战一些旧观念了,对吧?

But before Docker, TerraForm is trying to challenge things a little bit, right?

Speaker 1

它开始用 Go 这类语言,至少我当时注意到了。

And it's starting to use things like go, at least that was on my radar.

Speaker 1

Terraform 的思路是:谁还在乎具体的服务器节点?

So Terraform is like, who cares about the node?

Speaker 1

重点全在 API 上。

It's all about the APIs.

Speaker 1

我们这些人都是从服务器时代过来的,那时候一切都靠在节点上装代理,可那时候云已经开始崛起了,对吧?

And all of us come from the server world and everything's about an agent on a node versus the cloud starting to take over at this point, right?

Speaker 0

TerraForm 从设计之初就是为云环境打造的。

So Terra Form was built with the cloud in mind.

Speaker 0

没错。

Right?

Speaker 0

你可以用代码来配置云环境的基础设施。

You you could configure your cloud environment infrastructure as a code.

Speaker 1

是的。

Yeah.

Speaker 1

我们当时想从节点入手来做这件事。

And we were trying to do this from a node.

Speaker 1

我们试图教Puppet通过节点中转来配置云服务器,这种间接方式太别扭了。

We were trying to teach Puppet how to talk through by having this indirection where you have to go through a node to configure a server in the cloud.

Speaker 1

简直太奇怪了。

It was so weird.

Speaker 1

但后来Terraform和米切尔·哈希莫托出现了,他们也是早期DevOps运动的重要角色,那时候Vagrant还是用Ruby写的。

But then Terraform and Mitchell Hashimoto, right, like, it was a big part of the DevOps movement early too, then he was like, Vagrant was written in Ruby.

Speaker 1

他原本属于同一个技术生态,后来却另起炉灶,搞起了Go语言。

So he was part of that same ecosystem, and then he splits off and there's this going.

Speaker 1

我当时就想,你看,他们居然用Go来做这个。

I'm like, look at that, they're using Go for this.

Speaker 1

我记得Docker刚出来的时候,Puppet还是推动创新的主力。

And I remember when Docker came out, Puppet at that time was the one pushing innovation.

关于 Bayt 播客

Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。

继续浏览更多播客