The Peterman Pod - 鲍里斯·切尔尼(Claude Code 的创始人)谈他的职业成长之路 封面

鲍里斯·切尔尼(Claude Code 的创始人)谈他的职业成长之路

Boris Cherny (Creator of Claude Code) On How His Career Grew

本集简介

鲍里斯·切尔尼(Boris Cherny)是 Claude Code 的创始人,但鲜有人知晓他的完整职业故事。我与他深入交流,分享了他从 Meta 成长过程中汲取的经验,以及在 Anthropic 构建 Claude Code 期间的深刻见解。 𝗣𝗼𝗱𝗰𝗮𝘀𝘁 𝗹𝗶𝗻𝗸𝘀: • 文字稿:https://www.developing.dev/p/boris-cherny-creator-of-claude-code • YouTube:https://youtu.be/AmdLVWMdjOk • Apple Podcasts:https://podcasts.apple.com/au/podcast/the-peterman-pod/id1777363835 𝗧𝗶𝗺𝗲𝘀𝘁𝗮𝗺𝗽𝘀: 00:00:00 - 开场 00:00:59 - 入职 Facebook (FB) 00:09:43 - 早期副业项目与书籍推荐 00:17:05 - 职级偏低的情况 00:18:55 - 晋升 Staff (IC6) 的故事 00:25:19 - 接近领导层带来的启发 00:29:36 - 为数百名工程师规划工作范围 00:35:31 - 晋升 Senior Staff (IC7) 的故事 00:44:39 - 如何寻找副业项目 00:50:45 - 晋升 Principal (IC8) 的故事 00:54:20 - 在新组织中建立信誉 01:04:23 - 加入 Anthropic 01:10:05 - Claude Code 成功的原因 01:15:56 - Claude Code 在代码之外的应用 01:17:22 - 他对竞争的看法 01:22:57 - 给年轻时的自己建议 01:23:57 - 结语 𝗪𝗵𝗲𝗿𝗲 𝘁𝗼 𝗳𝗶𝗻𝗱 𝗕𝗼𝗿𝗶𝘀: • LinkedIn:https://www.linkedin.com/in/bcherny/ • X/Twitter:https://x.com/bcherny • Threads:https://www.threads.com/@boris_cherny 𝗪𝗵𝗲𝗿𝗲 𝘁𝗼 𝗳𝗶𝗻𝗱 𝗥𝘆𝗮𝗻: • Newsletter:https://www.developing.dev/ • X/Twitter:https://x.com/ryanlpeterman • LinkedIn:https://www.linkedin.com/in/ryanlpeterman/ • Threads:https://www.threads.com/@ryanlpeterman • Instagram:https://www.instagram.com/ryanlpeterman • TikTok:https://www.tiktok.com/@ryanlpeterman

双语字幕

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

Speaker 0

模型发展得太快了。

The models are moving so quickly.

Speaker 0

如果你三个月或六个月后再问我这个问题,我的答案会完全不同。

If you ask me this question in three months or six months, my answer will be totally different.

Speaker 0

我是鲍里斯·切尔尼。

This is Boris Cherny.

Speaker 0

他是

He's the creator of

Speaker 1

Claude Code的创造者,也是Meta的前首席工程师,我们聊了塑造他职业生涯的一切。

Claude Code and former Meta principal engineer, and we talked about everything that shaped his career.

Speaker 1

你能解释一下什么是潜在需求吗?

Can you explain latent demand?

Speaker 0

我认为,潜在需求是产品中最重要的一个原则。

Latent demand, I think, is the single most important principle in products.

Speaker 1

你说过有一些明显的文化差异,而且那很困难。

You said that there were some clear cultural differences, and that was difficult.

Speaker 1

天哪。

Oh my god.

Speaker 1

说困难都太轻了。

Difficult is such an understatement.

Speaker 0

那简直是噩梦。

It was a nightmare.

Speaker 0

我们还聊了Cloud Code,以及Anthropic现在正在发生的事情。

We also talked about Cloud Code and what's actually happening in Anthropic right now.

Speaker 0

尽管Anthropic的规模翻了三倍,但每位工程师的生产力因为Cloud Code提升了将近70%。

Even though Anthropic has tripled, productivity per engineer has grown like almost 70% because of Cloud Code.

Speaker 0

不要为今天的模型而构建,要为六个月后的模型而构建。

Don't build for the model of today, build for the model six months from now.

Speaker 0

我会推荐给所有人的一本技术书,对我作为工程师影响最大的一本书是《你的……》

The one technical book I would recommend to everyone that has had the greatest impact on me as an engineer is What are your

Speaker 1

你对与Codex和OpenAI的竞争有什么看法?

thoughts on the competition with Codex and OpenAI?

Speaker 1

这是完整的一集。

Here's the full episode.

Speaker 1

我想从你故事的起点开始,也就是你在Meta晋升为高级工程师的时候。

I wanna start at the beginning of your story with you getting promoted to senior engineer at Meta.

Speaker 1

当时是什么项目让你获得了晋升,你那时的情况是怎样的?

What's the story behind the projects that got you promoted and where were you at the time?

Speaker 0

如果我没记错的话,那个项目是关于群组聊天的。

If I remember it, the project was chats in groups.

Speaker 0

这个项目的目的是让Messenger和Facebook更紧密地联系在一起。

This was a project to bring Messenger and Facebook a little bit closer together.

Speaker 0

其实,我在Meta最初参与的几个项目,都是关于Messenger和Facebook的。

Actually, first few projects that I worked on at Meta, it was about Messenger and Facebook.

Speaker 0

我记得第一个项目是,扎克伯格有个想法,想把Messenger的聊天同步到Facebook群组里。

And I think the first one was, like, Zuck had this idea about, like, syncing Messenger chats in Facebook groups.

Speaker 0

但当时有好几个类似的项目,都是想拉近Messenger和Facebook的距离。

But there was a few of these projects just trying to bring, like, Messenger and Facebook closer together.

Speaker 0

我觉得当时的动机是,大家感觉这种公共空间的社交产品正在消失,事情正在更多地转向聊天和那种更随意的实时空间。

And I think the motivation was there was this feeling that this kind of public space social product was disappearing and that things were moving a little bit more into chat and these kind of more casual real time spaces.

Speaker 0

所以我们尝试了几个版本的产品。

And so we tried a few versions of the product.

Speaker 0

群聊是成功的那一个。

And chats in groups is the one that worked.

Speaker 0

我记得当时大概是第三个或第四个版本。

I think it was like number three or number four at the time.

Speaker 0

那时候我在Facebook的群组部门,和Messenger合作很多。

And I was in the Facebook groups org in Facebook at the time, and I was working a lot with Messenger.

Speaker 0

组织上距离很远。

Was organizationally very distant.

Speaker 0

这个想法,我觉得是当时的项目经理Steve提出的,他大概有这个想法,说我们应该做这个,我就接了过来。

And this is an idea that I think Steve, who was a PM at the time, he sort of had this idea, this is a thing we should build, and I just picked up on that.

Speaker 0

我当时就说,对,太好了,我们干吧。

And I was like, yeah, hell yeah, let's do this.

Speaker 0

于是我就开始动手做,很快就有了一些起色,所以我就申请了更多的工程师。

And so I started hacking on it, and then pretty soon there were some signs of life, so I asked for more engineers.

Speaker 0

后来有三个工程师加入了。

And there were three engineers that joined.

Speaker 0

他们是Chetan Brie、Christo和Xaphang。

There was Chetan Brie, Christo, and Xaphang.

Speaker 0

他们是第一批加入我们的三个工程师,之后我们还得到了数据支持和设计支持。

They were the first three engineers that joined us, and then we got some data support, some design support.

Speaker 0

一开始只在网页上做,后来也稍微拓展到了移动端。

And it started just on web, then we also moved to mobile a little bit.

Speaker 0

对,我觉得我们基本上验证了这个想法,就是在Facebook群组里可以做聊天,这种产品是可行的。

And yeah, I think we just kind of proved out this idea that you can have chats inside of Facebook groups and this kind of product can work.

Speaker 0

说实话,其实有很多地方完全行不通。

And there's just like a lot of stuff honestly that didn't work at all about it.

Speaker 0

按照现代产品的标准来看,体验确实非常糟糕。

It was like a super jank experience, I think, by modern product standards.

Speaker 0

那时候,大家都在网页上开发,各种bug都完全没问题。

Like back in the day, everyone was building on web and all sorts of bugs were totally okay.

Speaker 0

现在呢,我觉得标准真的高了很多,不管是视觉还是质量方面。

Nowadays, I think the standard, honestly, the visual standard, quality standard is a lot higher.

Speaker 0

对,所以产品慢慢做起来了,但我们团队特别小。

And yeah, so the product grew, and we were such a small team.

Speaker 0

每个人都得什么都干。

Everyone had to do everything.

Speaker 0

我记得我们没有用户研究员,所以午饭的时候我会去食堂,拿着新功能给食堂的工作人员看,然后问他们,嘿,你能搞清楚怎么打开聊天吗?

I remember we didn't have a user researcher, so I would go to the cafeteria during lunch and we would have a new feature and we would show the cafeteria workers the feature and be like, Hey, can you figure out how to open a chat?

Speaker 0

有时候他们能找到,有时候找不到,这其实就是一种观察式的用户研究。

And sometimes they would find it, sometimes they wouldn't be able to, and this is just an observational user research study.

Speaker 0

就是看特定情境下的人怎么完成任务,而且你不能给太多提示。

So you kind of see how people in a particular situation can do a task, and you don't prompt them that much.

Speaker 0

所以不能透露太多信息。

So you don't want to give too much away.

Speaker 0

你就能看到他们在哪里卡住了,看到他们能理解什么。

And you kind of see where they struggle, you see what they get.

Speaker 0

我们这么做了之后,我就教团队怎么做这个。

And so we did this, and then I taught the team how to do this.

Speaker 0

很快,我们中午就都会去食堂,开始找食堂员工当代表用户,问他们:这个说得通吗?

Then pretty soon we would all go to the cafeteria at lunch and start bugging cafeteria workers as representative users to be like, Does this make sense or not?

Speaker 1

有意思的是,早期Facebook的文化让你这样的工程师能做很多代码之外的事情。

It's interesting how the early Facebook culture that you were operating in let engineers do so much outside of just, like, the code.

Speaker 1

比如,你在做用户研究。

For instance, you're doing UXR.

Speaker 1

听起来在你的故事里,你还做了一些设计,还指导别人做设计。

It sounds like in some of it, I remember in your story, you did some design as well, and you were coaching people to do design.

Speaker 1

我觉得这是Facebook文化里挺特别、挺独特的一点。

I think that's a pretty interesting, unique thing in Facebook's culture.

Speaker 0

我觉得这非常重要。

I think this is so important.

Speaker 0

直到今天,Claude Code团队,也就是我现在所在的团队,我们真的很重视通才。

Think to this day, the Claude Code team, and this is the team that I'm on right now, we really prioritize generalists.

Speaker 0

我喜欢和通才一起工作。

I love working with generalists.

Speaker 0

如果你是一个会写代码的工程师,但也能做产品工作,也能做设计,有产品感觉,你还愿意去和用户交流。

If you're an engineer that codes, but you can also do product work, you can also do design, you have product sense, you go you wanna go talk to your users.

Speaker 0

我就喜欢和这样的工程师合作。

Like, I love this kind of engineer to work with.

Speaker 0

实际上,我们现在招聘所有岗位都是这样做的。

And this is actually how we recruit for all functions now.

Speaker 0

比如,我们的产品经理会写代码,数据科学家会写代码,用户研究员也会写一点代码。

So, like, our product managers code, our data scientists code, our, you know, user researcher codes a little bit.

Speaker 0

所以,我就是喜欢这些通才,我觉得这真的是我成长的方式。

So, like, I just love these generalists, I think this is really, like, the way that I grew up.

Speaker 0

从一开始,我18岁经营第一家创业公司的时候,我就得什么都做。

Like, from the beginning when I was running, you know, my first startup when I was, like, 18, I had to do everything.

Speaker 0

一直到进Facebook之前,我都在小公司工作,那种地方什么都得自己干。

And up until Facebook, I worked at smaller companies where you had to do everything.

Speaker 0

我总觉得在大公司里,你会被逼着钻进某个特定的领域,但其实这挺随意的,因为,怎么说呢,工程到底是什么?

And I kinda feel like at big companies, you get forced into this, you know, particular swim lane, but it's just sort of official because, like, what is engineering?

Speaker 0

它其实是个非常窄的技能范围。

It's like, it's a very narrow skill set.

Speaker 0

但实际上,你真正在做的是构建产品或者基础设施,这中间从头到尾要涉及的东西,远不止写代码那么简单。

But really, the thing that you're doing is you're building product or you're building infra, there's just so much more that goes into doing that end to end besides just writing code.

Speaker 0

能在那种地方工作真的很酷,我觉得Facebook当时特别看重这种全能型人才。

It was just really cool being at a place that think Facebook uniquely rewarded that at that time.

Speaker 0

其实那个半年结束时,我升职了,然后接下来的半年,我们组里每个工程师也都升职了。

Think actually at the end of that half, I got promoted and then I think the half after, every single one of the engineers got promoted too.

Speaker 1

在那些早期产品里,你提到过好几次“潜在需求”这个概念,听起来这似乎是很多产品方向的推动力。

In those early products, there was this concept latent demand, that you mentioned a few times, which it sounds like was the impetus for a lot of those product directions.

Speaker 1

你能解释一下什么是潜在需求吗?

Can you explain latent demand?

Speaker 0

我觉得,潜在需求是产品中最重要的一个原则。

Latent demand, I think, is the single most important principle in product.

Speaker 0

而且我觉得,尤其是在Facebook成功的产品里,每一个都包含了潜在需求的元素。

And I think if you look at, especially at Facebook successful products, every single one has an element of latent demand.

Speaker 0

比如说,Marketplace,它源于一个观察:当时如果你看Facebook群组,40%的帖子都是在买卖东西。

So for example, marketplace, it came from this observation that if you looked at Facebook groups at the time, 40% of the posts were buying and selling stuff.

Speaker 0

所以Facebook群组本来不是为交易设计的,但人们就是用它来干这个。

And so Facebook groups were not designed for commerce, but that's what people were using it for.

Speaker 0

这挺有意思的。

And so it's kinda cool.

Speaker 0

就是说,你设计产品时留出一些可以被“玩坏”的空间。

Like, you design this product in a way that can be hacked.

Speaker 0

用户可能会稍微滥用一下。

It can be abused by users a little bit.

Speaker 0

然后你看数据,看他们是怎么滥用的,再围绕这个来打造产品。

And then you look at the data, you see how they're abusing it, then you build a product around it.

Speaker 0

所以,你知道,就像有Facebook群组,然后有买卖群组,然后那显然成功了,因为人们本来就想在Facebook群组上买卖东西和进行交易。

And so, you know, like, there was Facebook groups, and then there were buy sell groups, and then that succeeded, obviously, because people already wanted to buy and sell and do commerce on Facebook groups.

Speaker 0

然后市场就是下一步。

And then marketplace was next.

Speaker 0

这只是人们原有意图的自然延伸。

It was just a natural extension of the same intent that people had.

Speaker 0

我觉得Facebook约会也差不多。

I think Facebook dating was pretty similar.

Speaker 0

我觉得观察到的现象是,大约60%的主页浏览是来自互不认识的异性。

I think the observation was something like 60% of profile views were people of the opposite gender that were not friends with each other.

Speaker 0

所以,你知道,这种传统的互相偷看。

So, you know, this kind of traditional of creeping on each other.

Speaker 0

而且我觉得对于当时的Nate和Fiums来说,这就是这能成功的证据。

And I think for Nate and Fiums at the time, this was evidence that this would work.

Speaker 0

我觉得产品中的原则是,你永远无法让人们去做他们还没做过的事情。

And I think the principle in product is you can never get people to do something they do not yet do.

Speaker 0

你能做的是找到他们已有的意图,然后引导他们更好地利用这个意图,让他们更容易地做他们想做的事。

The thing you can do is you can find the intent that they have and then you can steer it to let them better kind of capitalize on that intent and kind of do the thing that they want more easily.

Speaker 1

我觉得在你故事的这个部分,你提到你跨组织工作过。

I think also at this part of your story, you mentioned that you worked across orgs.

Speaker 1

你之所以这样做,是因为你在弥合 Messenger 和很多群组工程工作之间的差距。

You worked because you were bridging the gaps between messenger and a lot of the group's engineering work.

Speaker 1

我很好奇,你说过存在一些明显的文化差异,而且那很困难。

I'm curious, you said that there were some clear cultural differences and that was difficult.

Speaker 1

对于在文化差异很大的组织间工作,你有什么建议吗?

Do you have any advice for working across very different culture orgs?

Speaker 1

天哪,说困难都太轻描淡写了。

Oh my god, difficult is such an understatement.

Speaker 0

那简直是一场噩梦。

It was a nightmare.

Speaker 0

当时对 Facebook 来说,我们想尽快发布产品。

For Facebook at the time, we wanted to ship.

Speaker 0

我们就是想要快速推进,尽快把好产品做出来。

We just wanted to go fast and ship awesome product as fast as we could.

Speaker 0

而Messenger那边呢,他们最看重的是稳定性和性能。

And then Messenger was all about reliability and performance.

Speaker 0

他们只关心这个。

That's all they cared about.

Speaker 0

这完全是两种截然不同的价值观。

Was just polar opposite values.

Speaker 0

这不只是文化上的差异。

This isn't just cultural.

Speaker 0

也不只是工程师之间的那种事儿。

It's not just like an engineer to engineer thing.

Speaker 0

关键是,那个团队的工程师对我们有戒心,因为我们可能会影响他们的性能指标。

It's like the engineers on that team were suspicious of us because we would affect their performance metrics.

Speaker 0

而且在组织架构上,他们的团队设置就是为了慢慢发布,不让指标下滑,而我们这边就是为了快速上线。

And organizationally, their org was set was set up in a way to ship slowly without regressing the metrics, and we were set up to ship quickly.

Speaker 0

所以,而且,目标也完全不一样。

So it's like and and then the goals were totally different.

Speaker 0

你知道,他们有SLA响应时间,而对我们来说,就是日活用户和参与度。

You know, like, they had SLA opt times, and for us, it was just about daily active users and and engagement.

Speaker 0

所以我觉得,对我来说,这些文化价值观的影响非常深远。

So I think for me, the running was these kind of cultural values go super deep.

Speaker 0

这不仅仅是人们嘴上说说,你实际上可以在组织设计、目标设定以及所有方面看到它的体现。

It's not just a thing people talk about, but you can actually see this in, like, in org design and in in goal design and in every part of everything.

Speaker 0

而且,说实话,我认为那个项目失败的原因之一,就是价值观的差异。虽然它后来演变成了成功的东西,但那个版本的项目确实失败了。

And, honestly, I think one of the reasons that project failed was and and eventually it evolved actually into something successful, but that version of the project failed was because of this difference in values.

Speaker 0

所以我觉得,从根本上说,如果你想让价值观差异很大的公司成功合作,你必须找到共同的目标、共同的利益、共同的信念,或者一个他们都想一起验证的假设,如果这个假设成立,对双方都会非常有趣。

So I think that fundamentally, if you want to get companies with really different values to succeed and work together, you have to find some shared goal or shared interest, shared belief, some hypothesis that they want to test together that would be really interesting for both of them if it worked.

Speaker 0

我觉得这个聊天和群组的功能对Facebook来说真的很酷,但对Messenger来说,由于很多原因,就没那么酷了。

I think this chats and groups thing fundamentally was really cool for Facebook, but it's not that cool for Messenger for a lot of reasons.

Speaker 1

以你现在的了解,如果回到那种项目,你会怎么改变做法?

Knowing what you know now, how would you change things going back to that kind of project?

Speaker 0

我想我可能会直接去找扎克伯格,跟他说,如果你真的认真对待这件事,我们应该把Messenger并入这个组织。

I think I probably would have gone to Zuck and just been like, If you're really serious about this thing, we should move Messenger into the org.

Speaker 0

我觉得后来确实发生了这种情况,而且实际上发生过好几次。

And I think this has since happened, and it's actually happened, like, few times.

Speaker 0

比如,Messenger曾经在这个组织里,后来又移出去了,然后又移进来,再移出去。

Like, Messenger was in the org, then it moved out, and then it moved in, then moved out.

Speaker 0

毕竟是个大公司。

Like, it's a big company.

Speaker 0

这种事很常见。

Like, this happens.

Speaker 0

但我觉得,从根本上说,这种事情要成功,共同的汇报对象不能是像克里斯·考克斯那样的高管。

But I think fundamentally for this kind of thing to succeed, the the common report can't be the common manager can't be like Chris Cox.

Speaker 0

得稍微往下一点。

It has to be a little bit lower down.

Speaker 0

这样你才能把组织结构调整得更有协作性。

And so you can structure the orgs to be a little bit more collaborative.

Speaker 1

明白了。

I see.

Speaker 1

就是为了对齐激励机制,避免那种不断的拉扯。

To align the incentives so you don't get that constant struggle.

Speaker 1

对,就是这样。

Yeah, exactly.

Speaker 1

在你职业生涯的这个阶段,我看到你有很多很有意思的副业项目。

At this point in your career, I saw there were a bunch of really interesting side projects that you had.

Speaker 1

我挺好奇的,这些项目带来了什么样的蝴蝶效应?

And I'm kind of curious, what's the butterfly effect of those kinds of projects?

Speaker 1

比如,在你加入Meta之前,你就做了Undocs,那个React的状态管理框架。

So for instance, even before you got to Meta, you worked on Undocs, the state management framework for React.

Speaker 1

我很好奇,这对你的职业发展有什么影响吗?

I'm curious, how did that impact your career, if at all?

Speaker 0

对我来说,副业项目非常重要。

Yeah, for me side quests are so important.

Speaker 0

对我来说,招工程师的时候,这绝对是我看重的一点。

For me, when I hire engineers, this is definitely something I look for.

Speaker 0

我想要有副业的人,比如酷炫的周末项目、有趣的业余项目,甚至有人就是特别喜欢做康普茶之类的。

I want people with side quests, like cool weekend projects, cool side projects, like even someone that's like, you know, just really into like making kombucha or something.

Speaker 0

就是说,你希望招到那些对主业之外的事情也充满好奇、有兴趣的人。

Like you want people that are generally curious and interested in stuff outside of their main work.

Speaker 0

这种人通常比较全面发展。

These are kind of well rounded people.

Speaker 0

我就喜欢和这样的人一起工作。

These are the kinds of people I enjoy working with.

Speaker 0

我觉得我自己的很多成长,其实都来自于做这些副业项目。

I think for me, this is where a lot of my growth came from, is working on these kind of side projects.

Speaker 0

比如Undex,说实话,它的诞生是因为React的状态管理真的没必要那么复杂。

So something like Undex, honestly, it came from is React's state management is honestly unnecessarily complicated.

Speaker 0

那时候最先进的是Flux,后来又有Redux,但我就是搞不懂Redux。

And at the time, the state of the art was was Flux, and then there was this other thing called Redux, and I just couldn't wrap my head around Redux.

Speaker 0

我觉得自己就是个普通工程师。

I consider myself an average engineer.

Speaker 0

我做产品。

I build product.

Speaker 0

我不是那种特别厉害的系统工程师。

I'm not one of these incredible systems engineers.

Speaker 0

所以对我来说,Redux当时有那些reducer的概念,还有那种特别复杂的流程,要更新一点状态都得走那么多步骤。

And so for me, Redex at the time, had these concepts of reducers and this very complicated flow you had to go to update a little state.

Speaker 0

我就是搞不明白,所以我就做了个更简单的东西,看起来能用。

And I just couldn't wrap my head around it, so I built a simpler thing that seemed to work.

Speaker 0

我就用了那个。

I used that.

Speaker 0

那时候我在一个非营利组织做志愿者,他们也开始用这个,他们的工程师挺喜欢的。

I was volunteering at a nonprofit at the time, and they started using it, their engineers liked it.

Speaker 0

后来我加入Facebook,看到很多人用Redux的时候挺头疼的,因为有个内部群是给用Redux的人,里面全是各种问题,大家问的都是我当时也问过的那些问题。

And then when I joined Facebook, I saw a lot of kind of frustration around Redux usage because there was an internal group for people that use Redux, there were all these questions where people were asking the same questions I did.

Speaker 0

当你作为工程师或产品人员遇到问题时,有时候只是你一个人的问题。

When you, as an engineer or as a product person, are running into a problem, sometimes it's just you.

Speaker 0

但很多时候,其他人也会遇到同样的问题。

Often, it's other people too.

Speaker 0

我觉得培养一种直觉很重要,能感觉到这个问题可能别人也会遇到。

I think it's important to build the spidey sense for when this problem might be shared by others.

Speaker 0

所以这个问题肯定不是只有我一个人遇到,我能从支持帖子和我们团队用Redux的困难中看出来。

And so this was a problem that definitely was shared by others, and I could kind of see this in support posts and by the difficulty my team had using Redux.

Speaker 0

于是我在内部推出了Undox,Undox还行。

And so I launched Undox internally, and Undox is fine.

Speaker 0

它不算特别好的产品,但至少比Redux强。

It's not that great of a product, but at least it's better than Redux.

Speaker 0

在Facebook,我其实不知道怎么推广它。

And at Facebook, I didn't actually know how to get adoption.

Speaker 0

所以我就发了个帖子。

So I posted about it.

Speaker 0

有几个人开始用了。

A few people started to use it.

Speaker 0

我记得通知团队的杰夫·凯斯是个早期的重度用户,我们为了调试一些跟通知相关的棘手问题,熬了好几个晚上。

I remember there was, like, Jeff Case on the notifications team was a big early adopter, and we spent some late nights debugging some, like, gnarly, like, notification related bugs due to it.

Speaker 0

我想让更多人用起来。

And I wanted to get more adoption.

Speaker 0

所以我写了个小脚本,把报告问题的人按团队统计了一下。

And so what I did was I wrote a little script, and I scraped the group of people reporting issues, and I just tallied them by team.

Speaker 0

然后我通过聊天工具联系了每个团队的技术负责人和经理,为每个团队安排了一场技术分享。

And then I reached out just over chat to the tech lead and the manager for every team, and I scheduled, like, a tech talk just for that team.

Speaker 0

总的来说,我大概做了二十、三十、四十场技术分享,差不多这样,在几周内。

And I think overall I did maybe twenty, thirty, 40 tech talks, something like that, over the course of a few weeks.

Speaker 0

我记得我骑着自行车在Meta园区里到处跑,去做这些分享。

I remember just biking around the Meta campus and doing these talks.

Speaker 0

那真是太有趣了,因为大家都很投入,而且他们特别兴奋,因为终于有人在乎解决他们真正遇到的问题了。

It was so fun because people were so engaged and they were just so excited that someone cares about solving this problem that they really have.

Speaker 0

我觉得在某个时候,index 是 Facebook 最流行的状态管理框架。

And I think at some point, index was like the most popular state management framework at Facebook.

Speaker 0

然后我觉得它很快就被 recoil 和更现代的替代品取代了。

And then I think it got pretty quickly replaced by recoil and kind of more modern alternatives.

Speaker 0

现在的话,就是 relay 之类的。

Nowadays it's like relay and things like that.

Speaker 1

这种副项目会出现在你的绩效评估里吗?或者对你有帮助吗?

Does that kind of side project appear in your performance review or does it help you in some way?

Speaker 0

我觉得它确实在我的绩效评估里。

So I think it was in my performance review.

Speaker 0

按照 Meta 的标准,这算是锦上添花吧。

I think by meta standards it's kind of a cherry on top.

Speaker 0

它本身并不是那种能让你晋升到下一个级别的东西。

It wasn't really, you know, something that kinda gets you to the next level in itself.

Speaker 0

但那时候我还有很多其他的副业项目。

But I had a lot of other side quests around, around that time too.

Speaker 0

比如,有一段时间我其实特别迷TypeScript,那是在我之前待的那家公司。

Like, at some point, I got really into TypeScript actually, and this was, like, at the previous company I was at.

Speaker 0

我们当时在用。

We were using it.

Speaker 0

但好的资源不多。

There weren't a lot of good resources.

Speaker 0

所以我就开始写一本关于它的书,因为我觉得,总得有人来做这件事。

And so I just started writing a book about it because I was like, Someone should do this.

Speaker 0

这太疯狂了。

It's crazy.

Speaker 0

居然没有这样的书。

It doesn't exist.

Speaker 0

这门语言简直太棒了。

This language is just magnificent.

Speaker 0

它的设计真的非常出色,让人惊艳。

It's just this really, really shockingly good design.

Speaker 0

它有很多当时其他语言都没有的想法。

It has all these ideas that no other language had at the time.

Speaker 0

后来,当时还没有条件类型,但条件类型、各种字面量类型、映射类型,这些都是非常惊人的东西。

Eventually, at the time, were no conditional types, but conditional types, literal types for everything, map types, these are just absolutely insane things.

Speaker 0

即使是最厉害的 Haskell 程序员也会对这些语言特性印象深刻,但当时没有人写这些东西。

Even the gnarliest Haskeller is going to be impressed by this kind of language feature, but no one was writing about this stuff.

Speaker 0

所以我非常投入,写了这本书,结果它几乎占据了我一年的时间。

And so I just got super into it and wrote this book, and it just sort of ate up a year of my life.

Speaker 0

不推荐这么做。

Would not recommend it.

Speaker 0

但真的很有趣,

But it was really fun to

Speaker 1

深入钻研它。

go really deep on it.

Speaker 0

然后我还创办了当时旧金山最大的 TypeScript 聚会,我想是这样的。

And then I also started, I think, the world's biggest TypeScript meetup at the time in San Francisco.

Speaker 0

那真是个认识人的好机会。

And that was a really cool chance to meet.

Speaker 0

比如,有创建 Node.js 的 Ryan Dahl。

There was, like, Ryan Dahl who created Node.

Speaker 0

Js。

Js.

Speaker 0

还有,就是,所有这些,像,著名的 JavaScript 名人。

There was, just, all all these, like, famous JavaScript celebrities.

Speaker 0

这让我意识到,这些人其实也都是普通人。

And it just sort of made me realize, like, all these people are just people.

Speaker 0

而且,每个人都在做很酷的东西,有些东西很酷,有些东西在某个特定时期很酷。

And, Everyone just builds cool stuff, and some of it's cool, some of it's cool at a particular time.

Speaker 0

但归根结底都是普通人,任何人都能做这些事。

But it's all just people and anyone can do this stuff.

Speaker 1

你后来在 Meta 或者甚至在 Anthropic 工作时,有没有用到 TypeScript 或者那些技术深度?

Did you end up using TypeScript or that technical depth later in your time at Meta or maybe even in Anthropic?

Speaker 0

对,我觉得挺有意思的。我以前其实不太在意编程语言。

Yeah, I think there was It's funny, I used to not care about languages.

Speaker 0

后来有一次,大概十年前吧,我骑摩托车出了个挺严重的车祸。

Then at some point, this was maybe ten years ago, I used to ride a motorcycle and I got in a pretty bad accident.

Speaker 0

其实我把胳膊摔断了。

Actually, I broke my arms.

Speaker 0

两只都断了。

Both of them.

Speaker 0

两只胳膊。

Of them.

Speaker 0

对,当时两条胳膊都吊着绷带。

Yeah, had two slings on.

Speaker 1

天哪。

Oh my God.

Speaker 1

那你怎么写代码的?

How'd you code?

Speaker 0

那才是最难的。

That was the hard part.

Speaker 0

我整整一个月都没法写代码。

I actually couldn't code for a month.

Speaker 0

手还是有点疼,所以写不了JavaScript,那时候我主要写这个。

My hands still kind of hurt, so I couldn't write JavaScript, which is what I used to write at the time.

Speaker 0

所以我不得不去学别的语言,因为那些语言真的能少敲很多键。

And so I actually had to branch out and learn other languages because they literally used less keystrokes.

Speaker 0

于是我开始学CoffeeScript,因为它少用括号什么的。

And so I started with a CoffeeScript because there was, like, less parentheses and stuff.

Speaker 0

我觉得这语言现在可能都没了。

I don't I don't think that language even exists.

Speaker 0

现在没人用它了。

No one uses it nowadays.

Speaker 0

但也是因为这个,我才接触了Haskell和函数式编程,因为用更少的按键就能做同样的事,当时真的就是冲着这个去的。

But that's also how I got into Haskell and kind of functional programming, because it was kinda you can do the same thing with fewer keystrokes, and that that was, like, literally the motivation at the time.

Speaker 0

后来有一阵子,我在一家对冲基金工作,那是在Facebook出现之前。

And then at some point, was working in at a hedge fund, this was, like, before before Facebook.

Speaker 0

我有个同事叫Rick,他特别迷Scala。

And I had a coworker, Rick, who was really into Scala.

Speaker 0

我当时真不太懂Scala,但他算是把我带进门了。

And I really didn't understand Scala, and he he kinda really got me into it.

Speaker 0

他让我接触到了函数式编程这一块。

He got me into this, like, functional programming side of the house.

Speaker 0

到现在,如果要我推荐一本对我作为工程师影响最大的技术书,那就是《Functional Programming in Scala》。

And this is still, the one technical book I would recommend to everyone that has had the greatest impact on me as an engineer is this book called Functional Programming and Scala.

Speaker 0

你可能平时根本用不上Scala,但它教你的那种思考编程问题的方式,跟大多数人在实际工作或学校里学到的完全不一样。

And you're probably never gonna use Scala day today, but the way it teaches you to think about coding problems is just such a change from the way that most people were in coding either practically or in school.

Speaker 0

真的,太厉害了。

It's just, it's incredible.

Speaker 0

它会彻底改变你写代码的方式。

It's going to completely change the way that you code.

Speaker 0

对我来说,就像是从Haskell和CoffeeScript这类简洁的语言起步,然后到Scala,再到TypeScript,一步步过来的。

And so for me, it was it was kind of like Scala was like there was kind of like Haskell and kind of CoffeeScript, these kind of few keystroke languages that was like a first step, then Scala and then TypeScript.

Speaker 0

我觉得这改变了我的思维方式,因为现在写代码时我会用类型来思考。

And I think this kind of this changed the way I think because now I think in types when I code.

Speaker 0

代码里最重要的就是类型签名。

The thing that matters in your code the most is the type signatures.

Speaker 0

这比代码本身还重要。

This is more important than the code itself.

Speaker 0

所以,把类型搞对了,代码自然就干净了。

And so, like, getting this right leads to very clean code.

Speaker 0

所以即使在Facebook,我主要写Flow和Hack,后来在Instagram写Python,这些都很有帮助。

And so even at Facebook where I was writing mostly kind of Flow and and Hack and then later at Instagram, Python, it it was very helpful.

Speaker 0

在Anthropic这里,我主要写TypeScript和Python,所以这其实挺相关的。

Here at Anthropic, mostly write TypeScript and Python, so it's actually quite relevant.

Speaker 0

但我觉得更大的收获就是学会用类型思考。

But I think the bigger lesson is just thinking types.

Speaker 1

在你职业生涯的这个阶段,你提到你是以低于应有级别进来的。

At this point in your career, you mentioned that you came in underleveled.

Speaker 1

你以中级工程师的身份进来,尽管你有很多经验。

You came in as a mid level engineer, even though you had a lot of experience.

Speaker 1

你说,事后看来,你庆幸自己级别低。

And you said, in hindsight, you were lucky to be underleveled.

Speaker 1

我很好奇,这背后的想法是什么?

And I'm curious, what's the thinking behind that?

Speaker 1

就是期望值低一些。

Just lower expectations.

Speaker 0

对,我觉得在大公司里,每个级别都有一些期望,比如项目影响、人员影响之类的。

Yeah, I feel like at a big company there's all these kind of you know, like at every level there's certain expectations in terms of kind of the project impact and people impact and all this kind of stuff.

Speaker 0

具体标准在不同公司之间有所不同。

The specific criteria are kind of different across companies.

Speaker 0

但我认为很多是关于项目影响或者打勾一堆检查项,这些都很花时间。

But I think a lot of it is about either project impact or kind of checking a bunch of checkboxes, and all this just takes a lot of time.

Speaker 0

所以我觉得以低于预期的级别进来,给了我空间去探索,纯粹为了做酷东西而做酷东西。

And so I think coming in underleveled, it just gave me the space to explore and just build cool stuff for the sake of building cool stuff.

Speaker 1

确实。

Definitely.

Speaker 1

我在想这是不是也有助于建立势头。

And I wonder if it also helps with building momentum.

Speaker 1

我的意思是,如果你以中级或E4级别进来,然后你表现非常出色。

What I mean is, if you came in as a mid level or e4 and then you are crushing it.

Speaker 1

大家都在说鲍里斯太厉害了。

Everyone's saying Boris is amazing.

Speaker 1

这太疯狂了。

This is crazy.

Speaker 1

相比之下,如果你以大家预期的级别进来,然后你做得不错。

As opposed to you came in at your whatever, I don't know, expectations and you did good.

Speaker 1

我觉得当你进来时真的惊艳到所有人,可能会有这种效果。

I think there can be this effect when you come in and you really wow everyone.

Speaker 1

你给人的第一印象非常深刻。

You have such a strong first impression.

Speaker 1

我觉得这对建立良好的声誉很有帮助,能让你在未来获得更多的信任、项目和类似的机会。

I think it can be helpful for building a good reputation that gives you more credibility, more projects and stuff like that in the future.

Speaker 0

对,我觉得这完全正确。

Yeah, I think that's totally true.

Speaker 0

我觉得这可能是对任何公司都适用的好建议。

I think actually this is probably good advice for any company.

Speaker 0

很多时候,工程师换工作时会强烈要求,我要去另一家公司,我要升一级或者什么的。

I think a lot of times engineers switch jobs and they really push, I want to go to a different company and I want a level plus one or whatever.

Speaker 0

实际上,这样做有很多坏处,就像你说的。

Actually there's a lot of downsides to that, like you said.

Speaker 1

接下来聊聊你在Meta晋升为staff或EC6的事情,我很好奇你当时的情况,以及是什么让你晋升到那个更偏领导层的职位。

Going on to the thing that got you promoted to staff or EC6 at Meta, I'm curious the story behind where you were at the time and what got you promoted into more of that leadership position.

Speaker 0

当时的情况是,聊天和群组功能已经上线,正在运行,有一个团队在负责这个项目。

So what was happening was chats and groups that was launched and that was going and there was kind of a team working on this.

Speaker 0

在加入之前我写过很多JavaScript,但在Facebook,我其实从来没写过JavaScript,因为那里全是PHP。

Had done a lot of JavaScript before I joined, but at Facebook, I'd never actually written JavaScript because it was all PHP.

Speaker 0

所以我真的很想写JavaScript。

And so I really just wanted to write JavaScript.

Speaker 0

我们有一个网页界面,特别是针对Facebook群组的,很多人用网页版而不是手机版。

And we had this web interface, for Facebook groups in particular, a lot of people use web as opposed to mobile.

Speaker 0

因为比如说,作为群管理员之类的,用大电脑和键盘操作起来更方便。

Because for example, for, like, being a group admin or whatever, it's just easier to do on a big computer with a with a keyboard and stuff.

Speaker 0

那时候,这个网站真的很卡。

And at the time, the site was really janky.

Speaker 0

它就像一个静态网站。

It was like a static site.

Speaker 0

全是PHP。

It was all PHP.

Speaker 0

只有一些零散的JavaScript片段,分散在不同的地方。

There's these little bits of JavaScript that are injected a little bit in different places.

Speaker 0

各种状态不一致,还有由此引发的一大堆问题。

There's all sorts of inconsistent state, like all these problems that come out of it.

Speaker 0

就是感觉用户体验不太好。

It's just it doesn't feel like a good UX.

Speaker 0

所以我想用 JavaScript 重写它,但当时组织里有很多反对意见。

And so I wanted to rewrite it in JavaScript, and I got a lot of pushback from the org at the time.

Speaker 0

我觉得主要原因还是基础设施还没准备好。

And I think the big reason was that the infra just wasn't really ready for it.

Speaker 0

幸运的是,那时候 Comet 项目刚启动,Comet 就是桌面版 facebook.com 的重写。

Luckily, at the same time, Comet was starting, and Comet was like the rewrite of facebook.com on desktop.

Speaker 0

这就像 Tomacino,他现在在 Vercel。

And this was like Tomacino who's who's now at Vercel.

Speaker 0

这是 Jing Chen。

This was Jing Chen.

Speaker 0

有一群核心人员在做这个项目。

There's a bunch of these core people that were working on this.

Speaker 0

我真的很想参与进来,所以就主动联系了他们,问我能帮上什么忙。

I just really wanted to be involved, so I reached out and asked how I can help.

Speaker 0

我主动提出让 Facebook 群组来当这个项目的试验品。

I offered Facebook groups as the guinea pig for it.

Speaker 0

我没问任何人。

I didn't ask anyone.

Speaker 0

我就直接这么干了。

I just kinda did it.

Speaker 0

后来我才去找 Facebook 群组的领导,跟他们说,嘿,Comet 要来了。

And then later I kinda went to my leadership in Facebook groups and was like, hey, comment's coming.

Speaker 0

这会是一大堆工作。

It's gonna be a bunch of work.

Speaker 0

我们可以提前准备,给大家定个标准,跟其他团队搞好关系。

We can get ahead of it, kinda set the standard for everyone, build relationships with these other teams.

Speaker 0

结果我还是遇到了很多阻力,他们说,嘿,你不能让 20 个工程师都扑在这上面。

And I still got a bunch of pushback that was like, hey, you you can't put 20 engineers on this.

Speaker 0

经过很多次评审和跟工程师们讨价还价之后,我觉得我们最后大概弄到了12个工程师左右。

And after a bunch of reviews and kind of haggling for engineers, I think we put we got like 12 engineers or something like that.

Speaker 0

因为那是一次相当大的迁移。

Because it was a pretty big migration.

Speaker 0

你知道,这大概要花一年的时间。

You know, it's gonna take like a year.

Speaker 0

群组是整个Facebook里最大的产品界面,这其实挺让人意外的。

Groups is the single biggest product surface in all Facebook, which is actually kind of surprising.

Speaker 0

然后那个迁移算是成功了。

And the the migration kind of worked.

Speaker 0

而且我觉得除了跟这个基础设施团队建立关系和友谊之外,还有件挺好玩的事,这个团队我本来根本不会有机会合作的,这本身就非常值得,也很有趣。

And and I think something else pretty fun about it besides just, like, building relationships and friendships with this infra team I never would have worked with otherwise, which was in itself so rewarding and so fun.

Speaker 0

我觉得很大程度上,我们影响了Comet的发展方向。

I think a lot of it was we got to influence the direction of Comet.

Speaker 0

这有点奇怪,因为对于一个基础设施项目来说,产品团队通常没法影响方向。

And it's kind of weird because for an infra project, a product team often cannot influence the direction.

Speaker 0

他们更多被视为它的客户。

They're more seen as a customer of it.

Speaker 0

但这次的情况是,因为我们帮忙共同构建了它,我们建立了很多抽象层,这些抽象层后来也被其他在Comet上构建的团队使用。

But what happened here was because we helped co build it, we built a lot of the abstractions that were then used by other teams that were also building on Comet.

Speaker 0

而且,比如我记得的一个特别例子是relay mutations。

And, you know, for example, a particular one I remember was, like, relay mutations.

Speaker 0

所以,你发送API请求时,需要某种一致性。

So, like, you send the API requests and you need some sort of consistency.

Speaker 0

但这里其实有个bug,比如有个按钮,你按一下。

But there was actually this bug where like let's say there's like a button and you press the button.

Speaker 0

每次你按它,都会发送一个post请求。

Every time you press it, you send a post request.

Speaker 0

每次你按按钮,按钮的状态都会切换。

And every time you press the button, it toggles the state of that button.

Speaker 0

为了获得非常好的用户体验,你希望的是,一旦按下按钮,状态就立即切换,这意味着你需要一个乐观更新。

For a really nice UX, what you want is as soon as you press the button, the state should toggle, which means you need an optimistic update.

Speaker 0

但是当网络请求返回时,也需要更新本地缓存,确保数据一致。

But also when the network request comes back, need to also update the local cache to make sure it's consistent.

Speaker 0

如果你一直狂按那个按钮,可能会出现响应乱序的情况,最终的状态可能和界面上显示的不一致。

And if you're just mashing that button, what can happen is that the responses come in out of order and you might end up with a different state than what was in the UI.

Speaker 0

所以我写了一个系统来排队处理这些变更。

And so I wrote a system to kind of queue up mutations.

Speaker 0

这相当于用可靠性换一致性,在当时算是合理的取舍。

So it was like consistency at the cost of reliability, this was kind of the right trade off at the time.

Speaker 0

最后大家都用了这个系统,我也因此认识了乔·萨瓦纳和Relay团队里负责数据存储的很多人。

And everyone ended up using this, and this is how I met like Joe Savona and a bunch of the Relay team that was working on the data stores.

Speaker 0

那真的很有意思。

And it was just really fun.

Speaker 0

这件事让我一直觉得,不管是在那之前还是之后,和工程师合作时,我最喜欢看到的就是有人愿意深入一层,去搞清楚到底是怎么回事。

This is something that since then and before then and out, you know, whenever I work with engineers, I just love when people go a layer deeper and, you know, just try to figure out what's going on.

Speaker 0

就算你是产品工程师,也不代表你不能做基础设施。

And just because you're a product engineer doesn't mean you can't build infra.

Speaker 0

就算你是基础设施工程师,也不代表你不能去跟用户交流。

Just because you're an infra engineer doesn't mean you can't go talk to users.

Speaker 0

只要对其他部分的技术栈保持好奇心就行了。

Just be curious about these other parts of the stack.

Speaker 1

确实。

Definitely.

Speaker 1

还有,你在代理公司的时候,提前布局Comet或者这次大型的JavaScript重写,你在文章里提到,提前布局其实让你有了更多的控制权,也优先抓住了机会。

And in your agency and getting ahead of Comet or this big JavaScript rewrite, you mentioned in your writing that getting ahead of that actually gave you a lot more control and also dibs on opportunities.

Speaker 1

那你说的机会,是不是就是指构建这些产品基础设施的核心部分,这些对每个要使用新平台的人都有影响?

So when you talk about opportunities there, is this what you're talking about, building these fundamental pieces of prodinfra that are impactful for everyone that's going to take on the new platform.

Speaker 0

这就是一个例子。

That's an example of it.

Speaker 0

再举一个不同类型的例子,Comet的质量比之前的版本高很多,因为它是一个单页Web应用。

And then maybe a different kind of example is Comet was a lot higher quality than the thing that came before because it's like a single page web app.

Speaker 0

所以它给人的感觉会精致很多。

So it can just feel a lot more polished.

Speaker 0

但我们当时还没搞清楚,在产品层面,质量到底意味着什么。

But we hadn't yet figured out what exactly quality means on the product side.

Speaker 0

所以我写了一大堆笔记,想定义清楚这个概念,然后做了很多技术分享,就是想教其他团队的人,我们关于质量学到了什么。

And so I wrote a bunch of notes trying to define that and then did a bunch of tech talks trying to just teach people on other teams, here's what we learned about quality

Speaker 1

这就把那个话题给铺开了。

setting up the conversation about that.

Speaker 1

你提到这次迁移到 Comet 需要大量人手。

You mentioned a big headcount ask for this migration to comment.

Speaker 1

我挺好奇的,如果现在用这些新工具,比如 Claude Code、Codecs 之类的,会是什么情况。

I feel like I'd be curious what that would look like today with these new tools like Claude Code, Codecs, etcetera.

Speaker 1

我很好奇,以你现在对 Claude Code 的了解,假设你负责做同样的规划,同样的工作,你觉得需要多少工程师才能完成那个原本需要 12 个工程师的活儿?

I'd be curious, knowing what you know now about Claude Code, and let's say you were in charge of doing that same scoping for that same job, how many engineers do you think it'd take to do that 12 engineer job?

Speaker 0

我觉得总的来说,迁移 Facebook Groups 这个项目,一开始是 12 个工程师,但最后可能大概有 20 到 30 个工程师,做了差不多两年。

So I think overall to move Facebook groups, it started with 12 engineers, but I think at the end it was maybe like 20 or 30 engineers or something for about two years.

Speaker 0

所以这项目后来变得挺大的。

So it turned out to be a pretty big project.

Speaker 0

我觉得现在的话,可能大概五个人干六个月吧,差不多这样。

I think nowadays it would be maybe, I don't know, five engineers for six months, something like that.

Speaker 1

那就是四分之一的时间,而且工程师人数还不到三分之一。

So a fourth of the time and or less than a third of the engineers as well.

Speaker 0

每个人都会同时跑一堆任务,让它自己跑几个小时,然后它就会提交一个代码审查请求,你再给它一个浏览器自动化工具之类的,让它能看到界面并调整。

Everyone would just have a bunch of quads running in parallel and just let it cook for a couple hours and then it comes back with a PR and then you give it puppeteer or something so it can see the UI adjust.

Speaker 0

我觉得基本上就是这样了。

I think that's pretty much all it would be.

Speaker 0

而且现在,从编程的角度来看,世界变化太大了,因为模型发展得太快,如果你三个月或六个月后再问我这个问题,我的答案会完全不同。

And then, nowadays, the world we're in is so different from a coding point of view because the models are moving so quickly that if you ask me this question in three months or six months, my answer will be totally different.

Speaker 0

六个月后,答案可能是:其实一个人就够了。

In six months, the answer might be, This is actually one engineer.

Speaker 0

现在发展太快了,真的很难做这些估算,或者预测它们未来会怎么变。

It's just moving so quickly now, it's really hard to do these estimates or to predict how they're going to change in the future.

Speaker 1

在你职业生涯的这个阶段,你之前提到过一些事情。

At this point in your career, you had mentioned something.

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

可能那只是开玩笑的。

Maybe it was tongue in cheek.

Speaker 1

我也不确定。

I'm not sure.

Speaker 1

你说过,这是我学到的,在VP评审时总是提供三个选项,因为80%的情况下,他们只会选中间那个。

You said, This was when I learned to always present three options in VP reviews, since 80% of the time, they'll just pick the middle option.

Speaker 1

然后括号里写着,你的VP选了中间那个选项。

And then it says, your VP picked the middle option in parentheses.

Speaker 1

这背后的想法是什么?

What's the thinking behind that?

Speaker 1

这非常

This is very

Speaker 0

开玩笑的,但当时在Meta这可能确实有点道理。

much tongue in cheek, but maybe this was actually kind of true at Meta at the time.

Speaker 0

我觉得那些离工作很远的决策者,他们想知道你做了功课,找到了合适的选项和权衡,并且你真的做了工作,但他们也想在决策中贡献点什么。

I think decision makers that are far away from the work want to know that you did the due diligence of finding the right options and the right trade offs and that you did the work, but they also want to contribute somehow to the decision.

Speaker 0

所以中间那个选项就是比较容易做到这一点的方式。

So the middle option is kind of the easy way to do that.

Speaker 0

这有点开玩笑,因为我觉得不是所有领导都这样。

It's a little tongue in cheek because I think not all leaders are like this.

Speaker 0

很多领导会自己去做功课。

A lot of leaders will do the work themselves.

Speaker 0

他们对团队的信任程度各不相同。

They trust their teams more or less.

Speaker 0

运营方式有很多种。

There's so many different ways to operate.

Speaker 0

但那时候,我记得我们有一个不太懂技术的领导,这样做是为了帮她做决定。

But at the time, I remember we had a pretty nontechnical leader and this was the way to help her make decisions.

Speaker 1

我觉得在你职业生涯的这个阶段,你离高层管理最近。

I think at this point in your career, you had the most proximity you've had to senior management.

Speaker 1

你说过你曾经向一位高级总监汇报,并且参与了很多大规模的范围讨论。

You said you were reporting to a senior director at some point and you were involved in a lot of huge scoping conversations.

Speaker 1

我很好奇,向这么高层级的人汇报,会带来哪些后续影响呢?

I'm curious what's the downstream effects of reporting to someone so senior like that?

Speaker 0

对,我觉得这要看工程师个人,也要看公司情况。

Yeah, I think it kind of depends on the engineer and it depends on the company.

Speaker 0

比如,我现在在Anthropic,我觉得在Anthropic这无所谓。

For example, now I'm at Anthropic, and I think at Anthropic it doesn't matter.

Speaker 0

你向哪个层级汇报都不重要。

It doesn't matter which level you report to.

Speaker 0

公司里一些最资深的人,汇报对象就是一线经理。

Some of the most senior people at the company report to line managers.

Speaker 0

很多一线经理以前都是CTO之类的。

A lot of the line managers are ex CTOs and things like this.

Speaker 0

所以其实真的无所谓。

So it actually doesn't matter.

Speaker 0

所以我觉得这是一个非常具体的、关于公司文化的观察。

So I think this is a very meta specific cultural observation.

Speaker 0

我觉得这里有两件事在同时发生。

I think there's sort of like two things going on.

Speaker 0

第一,在Meta,作为工程师,你总是需要找到自己的职责范围。

So one is, at Meta, as an engineer, you always needed to find scope.

Speaker 0

有些你可以自己找,有些你的经理、技术负责人,或者你身边一起工作的人会帮你找。

Some of this you can find yourself, and then some of it your manager helps you find, or your tech leader, or the people you surround yourself with.

Speaker 0

而且,你知道,Meta的绩效评估过程是出了名的折磨人。

And, you know, like, the POC process is, like, grueling, like, famously grueling at Meta.

Speaker 0

所以你必须不断地谈论你的影响力,而职责范围是其中最大的因素。

And so you just have to constantly talk about your impact, like, scope is, like, the biggest contributor to that.

Speaker 0

如果你有足够的职责范围并且执行得好,那就是影响力。

Like, if you have enough scope and you execute it well, that's impact.

Speaker 0

这就是公式。

That's the formula.

Speaker 0

我觉得另一部分是,在Meta,没有人有头衔。

I think the other part was at Meta, no one had titles.

Speaker 0

所以即使是最资深的工程师,他们的头衔也只是软件工程师,这一点我其实非常喜欢。

So even the most senior engineers, their title was software engineer, which I actually really love.

Speaker 0

你知道,贝尔实验室就是这样,比如技术人员,Anthropic 也是这样。

Know, like, Bell Labs had this with, like, a member of technical staff, and this is true at Anthropic, too.

Speaker 0

实际上,这里更进一步。

Actually go even further.

Speaker 0

在这里,每个人的头衔都是技术人员。

Here, everyone's title is member of technical staff.

Speaker 0

不管你是工程师、产品经理还是设计师,都没关系。

It doesn't even matter if you're an engineer or a PM or a designer.

Speaker 0

头衔都一样。

It's all the same title.

Speaker 0

我真的很喜欢这一点,因为回到之前说的,做自己职责之外的事,做那些应该做的事,不管别人期望你做什么,只要是好事就去做,我觉得这种文化正好促成了这一点。

And I actually really love it because back to this point of working outside your lane and doing stuff that just should be done and, you know, like are just good things to do regardless of what you are personally expected to do, I think this kind of culture just sets that up.

Speaker 1

我明白,无头衔制度确实有很多好处。

I mean, see a lot of the benefits of the no titles.

Speaker 1

不过我也能想到一种情况,也许只有大公司才会这样,就是你联系公司里的某个人,说,嘿,我想跟你合作做这个项目。

I could also see a case though where, and maybe this is only true for big companies, where you reach out to someone across the company and you say, Hey, I'd like to, do this collaboration.

Speaker 1

如果你的头衔是总监之类的,那对方就能很快明白该多重视你,或者该怎么跟你打交道,如果你是设计师或其他角色的话。

And if your title said director or whatever, it's a shortcut for them to understand how seriously to take you or how to interact with you if you're a designer or some other role.

Speaker 1

现在Anthropic规模也大了不少。

Now Anthropic has got a bit bigger at this point.

Speaker 1

你有没有遇到这种情况?

Do you see any of that?

Speaker 1

大家可能都认识你,所以你可能不太会碰到。

People probably all know you, so maybe you don't see it as much.

Speaker 0

对,我觉得这确实是缺点。

Yeah, I think this is definitely the downside.

Speaker 0

但我觉得好处更多,就是你必须去赢得信任。

I think the upside outweighs it, which is you have to earn trust.

Speaker 0

我觉得这是真的。

And I think this is true.

Speaker 0

不管你在哪家公司,都得靠自己赢得信任。

Regardless of what company you're at, you've got to earn it.

Speaker 0

而且,就算你以前做过很厉害的事,也不代表你就应该得到尊重。

And just because you did a cool thing before, it doesn't mean that you should deserve respect.

Speaker 0

当然,每个人都值得被尊重。

Well, everyone deserves respect.

Speaker 0

但这不代表你在新公司、新环境里就应该拥有权威。

It doesn't mean that you should deserve authority at a new company in a new setting.

Speaker 0

所以我觉得,即使是有经理头衔的人,也得靠自己赢得这些。

So I think even for people coming in with manager titles, you kind of have to earn it.

Speaker 0

而且某种程度上,有经理头衔反而更难赢得这种信任。

And in some ways, having a manager title makes it a little bit harder to earn this kind of trust.

Speaker 0

所以作为个人贡献者,无论如何都得这么做。

So as an IC, you got to do it either way.

Speaker 0

我觉得没有头衔反而让这件事变得更容易一些。

I think just the lack of titles makes it a little easier.

Speaker 1

在你职业生涯的这个阶段,你越来越像技术负责人或者Uber的技术负责人了。

At this point in your career, were becoming more and more of a tech lead or Uber tech lead.

Speaker 1

我记得你有几个故事,是为数百名工程师规划工作范围。

I think you had a few stories where you scoped out work for hundreds of engineers.

Speaker 1

我就在想,如果工作量这么大,而你只有一个人,你怎么做得到呢?

And I was just thinking about how do you do that if there's so much to scope and you're one person?

Speaker 1

你是如何为领导层处理如此大规模的范围规划请求的?

How do you go about doing such massive scoping requests for leadership?

Speaker 0

是的,那段时间简直疯狂。

Yeah, this was a totally insane time.

Speaker 0

我和Tina Schuchman合作了很多。

I worked a lot with Tina Schuchman.

Speaker 0

她现在在微软,但当时她是我的经理,之后Yifei接任了我的经理。

She's now at Microsoft, but she was she was my manager at the time, and then Yifei, who's who's my manager after.

Speaker 0

那时候,Facebook群组获得了更多的投资。

And there was a lot more investment going into Facebook groups at the time.

Speaker 0

所以我觉得我加入的时候,这个组织大概有一百五到两百人。

So I think the org was maybe a 150 or 200 people when I joined.

Speaker 0

等我离开去Instagram的时候,我觉得大概有六百到八百人,差不多那样。

And by the time I left to Instagram, I think it was like 600 or 800 people, something like that.

Speaker 0

所以扎克伯格有一种感觉,Facebook应用应该完全围绕社区,他就是希望我们越来越快地实现这个目标。

So there's this feeling from Zach that Facebook app should be all about communities, and he just wanted us to go like faster and faster to make that a reality.

Speaker 0

作为高管,你最大的办法就是把合适的人放在决策位置上,然后给他们资源。

And as an executive, your biggest way to do that is to put the right people in charge of decisions and then to give them resources.

Speaker 0

在Meta的情况下,就是工程师。

And so in the case of Meta, just engineers.

Speaker 0

这个不需要GPU。

You don't need GPUs for this.

Speaker 0

你需要工程师来做事情。

You need engineers to do stuff.

Speaker 0

所以我们向扎克伯格提出了这个项目,叫做“社区作为新组织”。

And so we pitched this project to to Zach, and it was called Communities as the New Organizations.

Speaker 0

那是内部的名字。

That was, like, the internal name.

Speaker 0

然后他就给了很多人手来做这个。

And he just, like, a a bunch of headcount to go towards this.

Speaker 0

所以我们只需要弄清楚这些人要做什么。

And so we just had to figure out what these people will do.

Speaker 0

对他来说,我理解。

And for him, I get it.

Speaker 0

就是说,如果事情重要,你就得派很多人去做。

It's like if the thing is important, you gotta put a bunch of people on it.

Speaker 0

现在回想起来,我会做得不一样,我会派更少的人,因为重要的是解决用户的问题,打造出色的产品。

In hindsight, what I would have done differently is I would have put way less people on it because what matters is solving people's problems and building awesome product.

Speaker 0

而且这实际上需要自下而上,你得随着新产品线找到市场契合点,慢慢加大投入。

And this actually has to kind of be bottoms up, you kind of want to slowly dial this up as you find product market fit for new product lines.

Speaker 0

你不能一下子全上。

You can't just do it all at once.

Speaker 0

对,我们当时就得把这些事情都规划好。

And yeah, we just had to scope out all this stuff.

Speaker 0

有段时间,我每周都得写一份范围文档,比如,好,我们要安排30个工程师做这个。

There were weeks where I had to do a scoping doc for, Okay, we're going to put 30 engineers on this.

Speaker 0

这里有三个技术方案。

Here's three technical options.

Speaker 0

我们选这个。

We're going to pick this one.

Speaker 0

下一个项目,我们安排20个工程师做这个。

Next project, we're going to put 20 engineers on this.

Speaker 0

这里有三个方案。

Here's three options.

Speaker 0

我们选这个。

We're going to pick this one.

Speaker 0

下一个项目,我们要做的是。

Next project, we're going to do.

Speaker 0

就这样一遍又一遍地做,只是为了对这件事不是完全离谱有点信心。

And just doing this over and over again, just to have some sort of confidence that this thing isn't totally crazy.

Speaker 0

我们做了一些基础的技术规划,大致按项目规模匹配了工程师人数。

We did some baseline technical scoping, roughly matching the number of engineers to the project.

Speaker 0

其实这里面有些挺有意思的东西。

And there's actually some pretty fun stuff.

Speaker 0

我记得有一阵子我们想在数据模型层面把Facebook群组和页面合并,那是一次非常棘手的迁移。

I remember we were trying to merge Facebook groups and pages at some point, like, in the in the data model side, and this was the this, like, very gnarly migration.

Speaker 0

要完全做完的话,你知道,得花好几年,而且大概需要几百个工程师,因为你得在数据模型、产品层、完整性系统、广告系统等各个层面都做。

It it would have been you know, to fully do it, this is, many years and, like, probably hundreds of engineers to fully do it because you have to do it across, like, the data model or the product layer, integrity systems, ad systems.

Speaker 0

有各种乱七八糟的东西都得合并。

There's just all sorts of stuff that has to get merged.

Speaker 0

那时候,Joseph Carver刚加入,我想他是从Profile或者Events那边来的,就是另一个组织,跟群组团队合并来推动这件事。

And at the time, Joseph Carver, he just joined I think he came from either Profile or Events, like a different org that joined forces with groups to make this happen.

Speaker 0

他当时在做这个,但他在一个决定上有点纠结。

And he was working on it, but he was kind of struggling with a with a decision at the time.

Speaker 0

而且我觉得他当时级别比我还高。

And I think he was even more senior than I was.

Speaker 0

但他就是一直没在数据模型上做决定。

But he just, like, wasn't making the decision on the data model.

Speaker 0

所以我就拉了一帮人,然后我说,行吧。

And so I just took a bunch of people and I was like, alright.

Speaker 0

整个组织的所有技术负责人,我们那天要花接下来的三个小时,基本上就是玩一个游戏,来做架构设计。

All the tech leads across the entire org, we're gonna spend the next three hours on this day, and we're gonna do this essentially game where we get to do architecture.

Speaker 0

然后我把大家分成了两个队。

And so I split everyone up into two teams.

Speaker 0

我记得是蓝队和绿队,还是什么来着,我忘了。

I think it was blue team and green team, or I forget what these were.

Speaker 0

我们把这个怎么合并数据模型的问题抛给了大家。

And we gave everyone this problem of how do you merge these data models?

Speaker 0

这是需求。

Here are the requirements.

Speaker 0

然后每个人有三小时在白板上,他们必须提出一个设计方案。

And then everyone had three hours in a whiteboard, they had to come up with a design.

Speaker 0

有趣的是,开始的时候我们完全不知道怎么做,因为这个问题看起来太疯狂了。

And what was cool is that going into it, we had no idea how we would do this because it just seemed too crazy of a problem.

Speaker 0

但结束的时候,我们得到了两个80%相同的设计方案。

But going out of it, we had two designs that were 80% the same.

Speaker 0

所以很明显我们可以执行什么,而那20%有差异的地方,风险点也非常清楚。

So it was really obvious what we could execute on, and then the 20% where the differences were, it was very obvious where the risk was.

Speaker 0

所以我们可以通过一些技术预研来提前处理一点风险,同时也能马上开始执行,因为我们完全清楚自己有什么。

And so we could kind of front load a little bit of that risk with a little bit of technical spikes, but also we can just start execution right away because we knew exactly what we had

Speaker 1

需要做什么。

to do.

Speaker 1

对,我看到那个的时候真的觉得很有意思。

Yeah, that was really interesting when I saw that.

Speaker 1

那就像是一场技术设计竞赛,所有资深工程师参加,你把人们分到不同的房间去设计方案,我从来没听说过这样的事。

It was like a technical design competition with all the senior engineers, and you just put people in separate rooms to come up with I've never heard anything like that.

Speaker 1

你当时在组织里提出这个设计竞赛的想法时,大家是兴奋呢,还是觉得这想法有点疯狂?

When you proposed that idea for this design competition within the org, were people excited about it or was it kind of a crazy idea?

Speaker 1

对,确实有点

Yeah, it was

Speaker 0

疯狂。

sort of crazy.

Speaker 0

我是说,这种事情,你就得直接去做。

I mean, this sort of thing, you just have to kind of do it.

Speaker 0

所以我就直接跟大家说,嘿,我们要搞这个。

So I just kind of told everyone, Hey, we're doing this.

Speaker 0

然后我就把它加到每个人的日程上。

And then I just put it on everyone's calendar.

Speaker 0

而且看起来挺有意思的。

And it just seems fun.

Speaker 0

所以作为工程师,你会想参加的。

So as an engineer, you would want to do it.

Speaker 0

但我觉得这种事情,有时候需要大家达成共识,有时候就得直接行动。

But I think this is the sort of thing where sometimes you need consensus and sometimes you just have to act.

Speaker 0

在这种情况下,因为方向不明确,行动就显得特别重要。

And in this case, because the path wasn't clear, it was important to act.

Speaker 0

但同时,我也不知道该怎么推进。

But at the same time, I didn't know how to proceed.

Speaker 0

所以我们得把大家聚在一起,达成共识。

So we had to get everyone together to build consensus.

Speaker 0

所以我觉得作为领导者,你总是在这两者之间权衡。

And so I think it's like as a leader, you're always juggling these two things.

Speaker 1

经历了那次之后,现在要管理几百个工程师,还要快速做规划,你有没有什么建议给那些需要快速做规划的技术负责人?

After that experience, just being given hundreds of engineers and scoping things out, do you have any tips for someone who's a tech lead who needs to do quick scoping?

Speaker 1

有没有什么对你特别有效的方法?

Anything that worked well for you?

Speaker 0

我觉得我见过最大的问题就是,大家花太多时间,陷得太深,纠结于细节。

I think I think the biggest failure mode that I've seen is people just taking too long and getting too into the weeds.

Speaker 0

细节总是无穷无尽的。

There's always an infinite number of details.

Speaker 0

先从宏观层面开始。

Just start with a high level.

Speaker 0

大多数技术评估,你可以在三十分钟内完成,非常粗略地。

Most technical scoping you can do within thirty minutes, very, very roughly.

Speaker 0

如果你不熟悉系统,现在你可以直接用代码搜索工具,在代码库里跑一下,然后问它涉及哪些系统。

And if you don't know the systems, nowadays, you would just use quad code, run-in the code base, and just ask it what are all the systems involved?

Speaker 0

它们其实可以帮你直接搞定。

They can actually just do this for you.

Speaker 0

这又是一个完全颠覆性的变化。

And this is another just totally insane change.

Speaker 0

我以前做这些事的时候,根本没想到现在AI能帮我做这些。

When I was doing this stuff, I never would have expected that AI could do this for me now.

Speaker 0

但现在它确实能了。

But now it does.

Speaker 0

不过我觉得以前我最大的建议就是,一定要限定时间。

In the past, I think that would have been my biggest advice though, is just time box it.

Speaker 0

大概花个三十分钟,最多几个小时,如果你需要翻代码什么的。

Spend maybe thirty minutes, maybe like couple hours max if you have to dig through code and stuff.

Speaker 0

一定要去找专家,列一个专家名单。

Definitely reach out to experts and just make a list of experts.

Speaker 0

跟他们每个人都聊聊。

Talk to all of them.

Speaker 0

把你的设计方案给他们看。

Run the design by them.

Speaker 0

不要只是问他们意见。

Don't just ask them for input.

Speaker 0

先给他们一个初步方案,这样他们才能真正给你反馈,你也有个讨论的基础。

Give them a straw man, Then they can actually give you feedback on it, and it's something to go off of.

Speaker 1

继续聊你的职业经历,我觉得让你升到高级员工或IC7的,是Facebook上的公开群组。

Continuing with your career story, I think the thing that got you promoted to senior staff or IC7 was public groups on Facebook.

Speaker 1

我很好奇你参与那个项目的背后故事,以及当时有没有什么有趣的事情发生。

I'm curious the story behind your involvement in that and anything interesting that happened at that point.

Speaker 1

公共群组是其中一个

Public groups was one of

Speaker 0

这些项目来自那次范围界定,目的是让 Facebook 群组更侧重于社区。

these projects that came out of this scoping for making Facebook groups more about communities.

Speaker 0

我们当时想做一个非常小的改动,表面看起来很简单,但背后却非常复杂。

There was this one very narrow change that we wanted to make that seemed so simple on the surface, but it was so complex under it.

Speaker 0

跟没经历过的人解释这件事,真的很好笑。

It's just funny explaining this to anyone that wasn't there.

Speaker 0

他们会说,等等,这不就是改一行代码的事吗?

They're like, Wait, this is a one line change.

Speaker 0

我说,不是的。

I'm like, No, it's not.

Speaker 0

要把它做出来真的非常难。

It was very difficult to pull it off.

Speaker 0

所以这个改动就是,要参与一个公开的Facebook群组,你不再需要先加入。

And so the change was, in order to participate in a public Facebook group, you no longer have to join first.

Speaker 1

所以你的意思是,你可以直接查看,基本上对所有群组都有阅读权限,或者说公开群组。

So you're saying you can just view, like you have read access for all groups essentially, or public groups.

Speaker 0

对所有群组有阅读权限,对某些群组还有评论权限。

Read access for all groups, and for some groups, comment access.

Speaker 0

你可以不用先加入就能评论。

You can comment without joining first.

Speaker 0

有意思。

Interesting.

Speaker 0

而且关键在于,这看起来像是一行代码的改动,实际上也确实是一行代码的改动。

And this is the thing, it feels like a one mind change, and it actually was a one mind change.

Speaker 0

但后面牵扯出的各种问题特别棘手。

But there's all these downstream implications that were so tricky.

Speaker 0

比如,在数据模型里,数据库里基本上有一个字段叫“群组成员”。

So one is, you know, in the data model, there's essentially a field in the database that was like group member.

Speaker 0

然后我们进行了一场非常激烈的技术讨论,比如那些在群里评论的人,他们算不算群成员?

And we had this, like, really intense technical debate about, like, these people that are commenting in a group, are they group members?

Speaker 0

而且模型也变了,以前要加入Facebook群组,需要管理员批准你。

And the model also changed where before to join a Facebook group, an admin had to approve you.

Speaker 0

所以这有点像一种信任投票,觉得你可以加入这个群。

So there's kind of a vote of confidence that you can be in this group.

Speaker 0

后来我们换成了这个模式,加入公开的Facebook群组,基本上就是按一下关注。

And then after we switched to this model where to join a public Facebook group, just essentially press like follow.

Speaker 0

我们其实反复讨论过,应该是加入还是关注?

And we actually went back and forth, should it be join or follow?

Speaker 0

就是说,用什么动词来描述这个动作更合适?

Like, what's the right verb to describe this?

Speaker 0

但基本上就是关注,因为没有什么双向的动作。

But it was essentially follow because there's no reciprocal action.

Speaker 0

如果你关注了一个群,你算是成员吗?

If you follow a group, are you a member?

Speaker 0

那这些人是不是也应该存在数据库的同一个地方?

Should you be stored in that same part of the database?

Speaker 0

然后我们就这个问题来回争论了好一阵子。

And we just went back and forth on this for a while.

Speaker 0

我记得当时有个特别资深的工程师,叫鲍勃。

And I remember at the time there was this really senior engineer, Bob.

Speaker 0

他当时算是整个组织里最资深的工程师了。

He was kind of the most senior engineer in org at the time.

Speaker 0

他非常坚持认为这两者不应该是同一个东西。

And he felt very strongly that it should not be the same thing.

Speaker 0

他逼我们逼得挺紧的,即使要迁移数据会带来一大堆工程上的工作量,也要把它们分开。

And he kind of pushed us pretty hard, even though it would be a ton of engineering work to migrate stuff, to make it a different thing.

Speaker 0

所以我们最后还是做了这个工作,因为他其实是Facebook群组早期的工程师之一,所以他对这块特别了解,而且他态度非常坚决。

And so we did this work because he was actually one of the early engineers on Facebook group, so he knew it really well and he felt pretty strongly.

Speaker 0

还有一堆下游的改动,比如审核机制,以及管理员需要新的管理工具来处理大量的垃圾信息等等。

There's a bunch of these other downstream changes around moderation and different new admin tooling that admins would need to handle the influx of spam and things like this.

Speaker 0

我记得当时在想,如果任何人都能评论,评论区肯定会被垃圾信息淹没。

And I remember at the time thinking, if anyone can make a comment, the comments are just going be filled up with spam.

Speaker 0

我很难说服别人相信这一点。

And I had a hard time convincing people of this.

Speaker 0

所以后来我建了一个蒙特卡洛模拟,来展示这种情况会怎么发展。

And so at some point I built this Monte Carlo visualization of how this would work.

Speaker 0

那其实就是一个很简单的草稿模型,比如一条评论进来,它有好坏的概率,然后评论实际会怎样。

And it was just this really simple scratch pad of, know, a comment comes in, there's a certain probability of it being good or bad, and then what actually happens to comments.

Speaker 0

我觉得这个模拟确实挺有效地说服了诚信团队,让他们参与进来帮忙。

And I think that actually did a pretty good job of convincing the integrity teams to jump in and help with this.

Speaker 0

所以当时,页面诚信团队就加入了,他们帮忙做了评论排名,因为把垃圾评论排到后面是让人们看不到这些评论的主要技术手段。

And so at the time, the pages integrity team jumped in and they helped with a comment ranking, because ranking spam comments lower was the main technical mechanism to make it so people don't see these comments.

Speaker 0

所以让用户参与进来,会带来一堆相当棘手的下游影响。

So there's a bunch of these pretty gnarly downstream implications of letting people participate.

Speaker 0

还有我们正在做的数据模型迁移。

There's also this data model migration that we're doing.

Speaker 0

所以为了完成这一切,我们得组建一个大团队来实现。

And so to do all this, we had to staff a big team to make this happen.

Speaker 0

于是我们聘请了一位新总监,亚曼,他招了一批

And so we hired a new director, Yaman, who hired a bunch

Speaker 1

的

of

Speaker 0

工程师。

engineers.

Speaker 0

还有不少内部调动,比如组织里一些最资深的工程师,有亨利·朗、乔·奇塔姆,还有其他几位工程师,他们都在做这个项目。

There's a bunch of internal transfers, so some of the most senior engineers from the org, there was Henry Long, Joe Cheetham, there was a few other engineers, and they were all working on this.

Speaker 0

我和他们同级。

And I was the same level as them.

Speaker 0

我当时是IC6,他们也是。

I was an IC6 at the time and so were they.

Speaker 0

我记得当时有种冒充者综合征,要指导他们、给他们分配工作,但心里清楚我们其实是同一级别。

And I remember just feeling this imposter syndrome of having to direct them and point them at work, knowing in my mind that we're the same level.

Speaker 0

虽然级别是保密的,但通过小道消息什么的,你还是能知道谁是什么级别。

Even though levels are hidden, you know through rumors and stuff who's what.

Speaker 0

现在回想起来,我觉得这种冒名顶替综合征是多余的,因为级别根本不重要。

In hindsight, I think this was misplaced impostor syndrome because levels don't matter at all.

Speaker 0

这是我现在的看法。

This is my current view.

Speaker 0

有些级别很低的人,表现可能远超预期,给你带来惊人的成果。

Some people that are very junior can shoot way higher than that and just give you amazing results.

Speaker 0

有些级别很高的人,也可能表现得很糟糕。

Some people that are very senior can give you terrible results.

Speaker 0

所以级别其实没那么重要。

And so the level actually doesn't matter that much.

Speaker 0

但当时,我记得自己确实一直在纠结这个,而且进入这个角色确实有点难。

But at the time, I remember just really thinking about this, and was just kind of hard to step into this role.

Speaker 0

最后,我还是做到了。

And eventually, did it.

Speaker 0

而且挺有意思的。

And it's funny.

Speaker 0

最后,让我升到IC7的,其实是推翻鲍勃做的那个决定,因为他想搞一个大迁移,我们做了。

Eventually, the thing that got me the promo to IC7 was reversing this decision that Bob did, because he wanted to do this big migration and we did it.

Speaker 0

然后就是,天哪,工作量太大了。

And it was just like, dude, it was so much work.

Speaker 0

花了六个月或者一年时间,就为了迁移成百上千个调用点,确保做对。

It six was months or a year of work or something just migrating just hundreds and hundreds and hundreds of call sites to do this correctly.

Speaker 0

然后从技术上讲,我觉得我们实际上就是在每个调用点加了个ifelse。

And then technically, I felt like actually what we did is we essentially just added an ifelse at every single one of these call sites.

Speaker 0

在这个过程中,我们审查了所有调用点。

In the process, audited all the call sites.

Speaker 0

我们大概知道是安全的,但实际上并没有改变逻辑。

We kind of knew that it was safe, but we didn't actually change the logic.

Speaker 0

所以我们真正学到的是,member确实是建模关注者和群组成员的正确字段。

And so actually what we've learned is that, yes, member is the right field to model both followers and group members.

Speaker 0

这个决定是对的。

This was the right decision.

Speaker 0

所以我让当初做这个迁移的那个工程师,又把它给撤销了。

And so I pushed the same engineer that did this to then undo it.

Speaker 0

让这个工程师来做这件事是对的,因为他愿意接受,而且能做好,这显示了他的成熟。

It was the right thing to push this engineer because it showed maturity on his part that he said yes and was able to do it.

Speaker 0

他技术上也最有经验,所以他能做得最好。

He also had the most context technically so he could do it the best.

Speaker 0

我觉得对Bob来说,他对我作为技术领导的感觉更好了,因为他知道我愿意收回成命,也愿意对资深同事的决定提出异议。

And I think for Bob, it made he felt better about me as a technical leader because he knew that I willing to pull back, to push back on decisions that even senior folks make.

Speaker 0

最后,这样做是对的。

And in the end, this was the right thing.

Speaker 0

我们撤销了那次迁移。

We reversed the migration.

Speaker 0

撤销也花了不少时间。

It also took a long time to do it.

Speaker 0

但最后,这让所有在这个基础设施上开发的人都能顺利工作,大家不用再老是纠结该用这个字段还是那个字段。

But in the end, it made it so everyone building on this infra could do it, and everyone wasn't always constantly bumping into this, should I use this field or this field?

Speaker 1

我对那部分很好奇,因为你跟Bob或者资深技术负责人有强烈的技术分歧。

I'm curious about that part because you had a strong technical disagreement with Bob or senior TL.

Speaker 1

但最终的结果似乎是关系反而加强了。

But the outcome at the end is actually it seems like it strengthened the relationship.

Speaker 1

他在你的晋升中成了你的支持者。

He was a champion for you in your promotion.

Speaker 1

所以我很好奇,你会怎么建议在强烈的技术分歧中不伤害关系呢?

So I'm curious, how would you recommend going about strong technical disagreement in a way that doesn't hurt the relationship?

Speaker 0

我觉得最重要的是你得先赢得这个资格。

I think the biggest thing is you have to earn it.

Speaker 0

你得先赢得信任。

You just have to earn trust.

Speaker 0

这可能就像我一开始做的那样简单,就是先表达不同意见,然后承诺执行,并且表现出我愿意这么做,如果别人觉得是个好主意,而且我尊重他们,我就愿意去执行。

And it could be as simple as what I did at the beginning, is just disagreeing and committing and showing that I'm willing to do that and I'm willing to just execute if someone else thinks it's a good idea and I look up to them.

Speaker 0

但你也得展现出你良好的技术判断力。

But also, you have to show that you have good technical judgment.

Speaker 0

但除非你已经建立了信任,否则你没法真正做到这一点。

But you can't really do that until you're on trust.

Speaker 0

所以先花时间建立信任。

So take the time to get that trust first.

Speaker 0

然后,

Then on

Speaker 1

关于冒名顶替综合征,带领那些同样非常强的工程师时,你有什么克服冒名顶替综合征的建议吗?

the imposter syndrome, leading those engineers that were also very strong, do you have any advice for overcoming imposter syndrome?

Speaker 0

对,别想太多。

Yeah, just don't overthink it.

Speaker 0

其实在任何层级,没人真正知道自己在做什么。

No one really knows what they're doing at any level.

Speaker 0

没人真正知道。

No one really knows.

Speaker 0

我们都在摸索着前进。

We're all just trying to figure it out.

Speaker 1

说起来容易做起来难。

It's easier said than done.

Speaker 1

有没有那么一个时刻,你突然觉得,其实我能行,或者这也没什么大不了的?

Was there an moment where you realize, Actually, maybe I do got this or this isn't that big of a deal?

Speaker 0

说实话,我觉得没有。

I don't think so really.

Speaker 0

没有一个特定的时刻。

There wasn't a single moment.

Speaker 0

它是随着时间慢慢消失的。

It kind of goes away over time.

Speaker 0

我觉得不管在哪个层级,你都应该有一点冒名顶替综合征。

I think at every level, it doesn't matter what level you're at, you should always feel a little bit of imposter syndrome.

Speaker 0

因为如果没有,那就说明你没有在逼自己。

Because if you don't, then you're not pushing yourself hard enough.

Speaker 0

在这个

At this

Speaker 1

职业阶段,你越来越像技术负责人,因此写的代码越来越少。

point in your career, you were more and more of a tech lead and therefore you were writing less and less code.

Speaker 1

你提到,尤其是在Meta,有些其他职能团队人手不足,而你把这看作是工程师的机会。

And you mentioned that at Meta especially, there's cases where other functions are understaffed and you view that as an opportunity for engineers.

Speaker 1

也就是说,要更有产品思维,也许还能帮忙分担一些产品经理的工作。

So to be more product minded and maybe help out with the PM opportunities.

Speaker 1

我很好奇,你觉得什么时候应该往那个方向发展,而不是升级问题,比如说‘嘿,我们需要更多产品经理的支持’,然后自己多写点代码?

I'm curious, when would you say that you should go that direction as opposed to escalating and say, hey, we need more PM support and trying to write more code instead.

Speaker 0

对,你得明白其中的权衡。

Yeah, you have to understand the trade offs.

Speaker 0

我觉得这是很多人在推动事情时不太理解的一点。

I think this is the thing that I think a lot of people don't really get when they push for stuff.

Speaker 0

一个很常见的失败模式是,工程师推动一个想法,然后因为没人支持、没人愿意投入资源,或者组织不理会、领导不理会而感到沮丧。

Think a very common failure mode is an engineer will push for an idea and then gets frustrated when no one else buys into it or wants to fund it, or the organization just doesn't listen or their leader doesn't listen.

Speaker 0

但你要做的是理解其中的权衡。

But what you have to do is understand the tradeoffs.

Speaker 0

无论你想说服谁,都要从他们的角度去考虑。

Whoever it is that you're trying to convince, think of it from their point of view.

Speaker 0

他们关心什么?

What do they care about?

Speaker 0

他们正在做什么项目?

What are the projects they're working on?

Speaker 0

这件事的代价是什么?

What is this trade off against?

Speaker 0

如果他们做了这件事,他们会觉得自己的工作成功吗?

If they do this thing, are they going to see their work as a success?

Speaker 0

所以我觉得这真的很重要。

So I think that's really important.

Speaker 0

有些组织有时候可能没有产品经理,因为项目可能不太吸引人,所以很难招到人,也许领导已经感受到了这种痛苦。

For some orgs at sometimes, they might not have PMs because it might just not be a very sexy project, and so it might be really hard to hire, and maybe the leader is already feeling that pain.

Speaker 0

有些组织可能想招产品经理,但实际上那些产品经理有更重要的事情要去做。

Maybe for some orgs, they are trying to hire PMs, but there's actually just much more important things those PMs should go to.

Speaker 0

而另一些组织呢,可能产品经理太多了。

For other orgs, they might actually have too many PMs.

Speaker 0

所以如果你去问的话,那其实是正确的做法,因为他们可以从一个不太重要的项目上抽调一个产品经理,放到你的项目上,因为你的项目更重要。

And so actually if you ask, that's the right thing to do, because they could just take a PM off a less important project and put it on your project because it's more important.

Speaker 0

所以我觉得,要了解自己所处的环境,理解决策者的想法,这一点非常重要。

So I think it's really important to be situationally aware, understand the context you're in, and understand how your decision makers think about it.

Speaker 1

到了这里,差不多是你故事第一部分的结尾了。你把很多成功归功于那些支线任务,还有那些副业项目,或者你称之为“20%时间创意”的清单。

At this point, and this is kind of the end of that part one of your story, you credit a lot of your success to, again, the side quests and having these side projects or a running list of you called them 20% time ideas.

Speaker 1

我很好奇,对于工程师来说,你有什么找到机会的建议吗?

And I'm curious, do you have any tips on how to find opportunities for engineers?

Speaker 0

我记得大概有5100名工程师吧,具体数字我记不清了,他们都在做我规划出来的那些支线任务,这些任务是从不同地方衍生出来的。

I think at some point, was probably I forget the exact numbers, but there was probably 5,100 engineers or something like this that were just working on these side quests that I scoped out and spun out of various points.

Speaker 0

所以几乎每周,我都会在跑步的时候或者写代码的时候,想到一些项目点子。

So pretty much every week, I would think of some project just on a run or something or maybe while I'm coding, I think of some idea.

Speaker 0

我会先做个基本验证,然后找个我认识的工程师,问一句:嘿,你对这个感兴趣吗?

I'll just do some basic validation, then I'll just ping an engineer that I know and be like, Yo, are you interested in this?

Speaker 0

然后我会把他们介绍给其他几个可能感兴趣的工程师。

And then I'll connect them with a couple other engineers that might be interested.

Speaker 0

这样一来,事情很快就积累起来了。

And this kind of added up very quickly.

Speaker 0

对我来说,我思考工作的一种方式是:我怎么能少做点?

I think for me, one way that I really think about my work is how can I do less of it?

Speaker 0

作为工程师,我们的超能力就是自动化。

And as an engineer, our superpower to do this is automation.

Speaker 0

最繁琐的事情你都可以自动化。

The most tedious stuff you can automate.

Speaker 0

这对其他领域来说其实很难,但对我们来说,这是我们能做的了不起的事情。

And this is something that's really hard actually for other fields, but for us it's this incredible thing that we can do.

Speaker 0

而且很多工程师出于各种原因并不这么做,但我们其实应该一直这么做。

And it's something a lot of engineers don't really do for whatever reason, but we should all be doing it all the time.

Speaker 0

这太重要了。

It's so important.

Speaker 0

这就是杠杆效应。

It's leverage.

Speaker 0

就像是免费的杠杆。

It's like free leverage.

Speaker 0

所以我经常做的一件事是,每次做代码审查时,如果我评论了某类问题,比如风格问题之类的,我真的有一个电子表格,我会记录那个问题,并附上那个拉取请求的链接。

And so a thing I often did was every time I did a code review, if I was commenting about a particular kind of issue, maybe like a stylistic issue or something, I literally had a spreadsheet where I would tally up that issue and I posted the link to that pull request.

Speaker 0

然后每次代码审查我都会这么做。

And then I would do this for every code review.

Speaker 0

当我对同类问题评论超过几次后,我就会为它写一条lint规则来自动化处理。

And then when I commented about the same kind of thing more than a few times, I would just write a lint rule for it to just automate that.

Speaker 0

所以这算是杠杆效应的一个例子。

So this is kind of an example of leverage.

Speaker 0

到后来,我自动化了大部分代码审查,因为我有一堆lint规则在帮我做这些工作。

And at some point, I automated most of my code reviews because I just had a flock of lint roles that were just doing all this work for me.

Speaker 0

我觉得这其实挺类似的,因为所有这些支线任务都在改进生产环境和开发环境的基础设施,而这些正是我日常编码中拖慢我速度的东西。

And I think this is actually kind of similar because all these side quests, it was improving prod infra and dev infra, and these are things that slowed me down in my day to day coding.

Speaker 0

这就是为什么我在做West编码时,这其实非常危险,因为作为工程师,你需要扎根于现实。

And this is why when I was doing West coding, this was actually very dangerous because as an engineer, you need to be anchored to reality.

Speaker 0

你需要那种直觉。

You need that intuition.

Speaker 0

如果你不再接触代码,很快就会失去这种直觉。

And if you're not in the code anymore, then you lose it very quickly.

Speaker 0

那是一个非常危险的状态。

It's it's a very dangerous place to be in.

Speaker 0

所以对我来说,当我经常接触代码时,从中涌现出了很多很棒的想法。

And so for me, when I was in the code a lot, there was all these really cool ideas that came out of it.

Speaker 0

这些想法不仅对我有用,对整个工程团队都有帮助。

And it was leveraged not just for me, but for the whole eng team.

Speaker 0

因为还是那个原则:如果你遇到了问题,很可能其他人也有同样的问题。

Because again, of this principle that if you have a problem, probably other people have it too.

Speaker 0

而且,你知道,我以前参加过YC,YC教你的第一件事就是先为自己做东西。

And, you know, I did YC back in the day, and in YC they teach you that first you build for yourself.

Speaker 0

你得做出很棒的东西。

You have to build awesome stuff.

Speaker 0

你得做出人们喜欢的东西。

You have to build stuff people love.

Speaker 0

但如果你想找一个市场来为之打造,那就从为自己打造开始。

But if you're trying to find a market to build for you, start by building for yourself.

Speaker 0

这是个很好的指标。

And that's a pretty good indicator.

Speaker 0

其他人很可能也有同样的问题。

Other people probably have that same problem.

Speaker 1

你写过一句话,我觉得特别好。

There was a quote that you wrote that I thought was really good.

Speaker 1

你说,更好的工程能力是工程师扩展人脉和提升影响力的最轻松方式。

You said, Better engineering is the easiest way to grow your network and gain influence as an engineer.

Speaker 1

所以我完全能看出来,你的影响力范围远远超出了你写的代码,因为你把这么多好点子传递给了别人,并且指导他们。

So I could totally see you had Your scope of influence was so much further than just the code you're writing because you're passing people all these great ideas and overseeing them.

Speaker 1

这种杠杆作用真的很惊人。

Leverage is really insane.

Speaker 0

绝对是的,对。

Absolutely, yeah.

Speaker 0

而且这其实也是一个例子,说明要具备情境意识,或者说对局势的敏感度。

And it's also just an example of being contextually was it situationally aware?

Speaker 0

因为当时我遇到的情况是,工程师在绩效评估周期里被考核。

Because I met at the time engineers were evaluated in the performance cycle.

Speaker 0

我们看的是项目影响、人员。

We looked at project impacts, people.

Speaker 0

你还记得其他的吗?

Do you remember the others?

Speaker 1

方向。

Direction.

Speaker 1

方向。

Direction.

Speaker 1

还有工程卓越。

And edge excellence.

Speaker 0

对,工程卓越。

And eng excellence, yeah.

Speaker 0

很多工程师在工程卓越方面都挺挣扎的。

And the eng excellence is a thing that a lot of engineers struggled with.

Speaker 0

所以就有个人过来跟你说,嘿,如果你想做到工程卓越,这儿有个项目。

So was one of the people that came along and was like, Hey, if you want to do eng excellence, here's a project.

Speaker 0

大家本来就有动力去做,所以他们会把这看作一个机会。

And people are already incentivized to do it, so they see it as an opportunity.

Speaker 0

我觉得这对我来说是个机会,可以磨练我跟人合作的技巧,就是无论在什么情况下,你永远都不该直接命令别人做什么。

And I think this is just like, I don't know, I think it was a chance for me to kind of hone my skills about working with people where you never ever want to tell anyone what to do in any context.

Speaker 0

不管是私人场合还是工作场合,没人喜欢被人指挥。

In a personal context, in a work context, everyone hates being told what to do.

Speaker 0

但如果你了解一个人想要什么,那你就能带着合适的机会去找对的人,他们就会把它看作一个机会。

But if you understand what a person wants, then you can go to the right person with a right opportunity and they see it as an opportunity.

Speaker 0

这样对每个人来说总是更好。

And this just always works better for everyone.

Speaker 1

当我想到这些20%时间项目时,我是说,最上面是找想法,然后才是真正去执行,找人来干,不管是自己还是别人。

When I think about these 20% time ideas, I mean there's the top of funnel finding the ideas, and then there's actually executing on them, getting someone to do it, or whether it's yourself or someone else.

Speaker 1

我感兴趣的是最上面那部分。

The thing I'm interested in is the top of funnel.

Speaker 1

作为工程师,你怎么找到这么多有影响力的副线任务的想法?

How do you source so many ideas as an engineer for these side quests that are impactful?

Speaker 1

就是常识。

Just common sense.

Speaker 0

我不知道,也许是直觉吧。

I don't know, maybe spidey sense.

Speaker 0

不知道。

Don't know

Speaker 1

对的,就是那种蜘蛛感应。

the right Spidey sense.

Speaker 1

怎么说?

How so?

Speaker 1

能举个具体的例子吗?

What's a concrete example?

Speaker 0

一个很具体的例子就是,想想 lint 规则,这个挺好的。

A really concrete example is think lint rules are a good one.

Speaker 0

还有一个例子,就是有很多次我们遇到 SEV,因为 Facebook 群组没有用非常大的 ASOC 集合来测试。

Maybe another one is there were all these cases where we had SEVs because Facebook groups were not being tested with very large sets of ASOCs.

Speaker 0

所以,比如说,ASOC 有点像 Facebook 里说的数据库行。

And so, for example, an ASO kind of like this is kind of like a Facebook way of saying, like, you know, rows in a database.

Speaker 0

你可以想象一个有一千万成员的 Facebook 群组。

So you could imagine, like, a Facebook group with, 10,000,000 members.

Speaker 0

从来没有人测试过这种情况。

Like, no one's ever tested this.

Speaker 0

这根本没有单元测试。

There's no, like, unit test for this.

Speaker 0

只有在生产环境里才能看到问题。

You only see it in production.

Speaker 0

当我纵观整个组织时,我开始看到类似的情况。

And when I looked across the org, I started seeing similar cases of this.

Speaker 0

比如,一个有两千万粉丝的账号,很多东西都会出问题。

There's, for example, like, you have a profile with, like, 20,000,000 followers, a lot of stuff breaks.

Speaker 0

但显然,没有人用自动化方式测试这个,因为写一个包含这么多数据的单元测试挺麻烦的。

But, obviously, like, no one tests this in an automated way just because it's kind of annoying to write a unit test with this much data.

Speaker 0

所以有很多这样的例子,然后我向工程师提议,建立一种为大数据集编写单元测试的方法。

And so there there's a bunch of instances of this, then I pitched an engineer to build a way to write unit tests for large datasets.

Speaker 0

比如,一个非常大的对象,像有很多成员的群组,有很多粉丝的账号,有很多参与者的活动。

So, you know, like a really big object, like a group with a lot of members, a profile with a lot of followers, an event with a lot of attendees.

Speaker 0

我觉得这个基础设施现在还在用,并且避免了很多问题。

And I think this infra still exists, and prevents a lot of issues.

Speaker 0

这件事是可以把控范围的,然后他拉了一帮其他工程师来帮忙干活。

And this is something where you can scope it, then he brought in a bunch of other engineers to do the work and help him out with it.

Speaker 0

所以我觉得,就想想你每天实际遇到的问题吧。

So I guess just think about the problems that you actually hit day to day.

Speaker 1

明白了,好的。

Got it, okay.

Speaker 1

所以,想想这些问题,如果你反复遇到同一个问题,那就是时候自动化了,这也是一个很好的、更高级的工程项目。

So think about the problems and if you're experiencing that problem repeatedly then it's time for automation and that's a great, better engineering project.

Speaker 0

对,没错,就是这样。

Yeah, exactly, exactly.

Speaker 0

如果你两三次都碰到同样的问题,你大概应该四处看看,是不是其他人也遇到这个问题了。

If you hit the same problem two or three times, you should probably look around and see if other people are hitting that problem too.

Speaker 0

你在Meta职业生涯的最后一段,是你

The last leg of your career at Meta is where you

Speaker 1

拿到E8晋升的时候。

got the E8 promo.

Speaker 1

我知道你换了部门。

I know that you moved orgs.

Speaker 1

所以你在Facebook群组里完成了所有的晋升,然后你转到了Instagram。

So you did all of your growth in Facebook groups and then you moved to Instagram.

Speaker 1

我很好奇,你转到Instagram部门背后的故事是什么?

I'm curious, what's the story behind you moving orgs to Instagram?

Speaker 0

那时候,我正在谈恋爱。

At the time, I was dating.

Speaker 0

我和我妻子当时还在约会。

My wife and I were still dating.

Speaker 0

她住在伯克利,我住在旧金山,后来有一天她说,我找到了梦想中的工作。

And she was living in Berkeley, I was living in SF, and at some point she's like, I found my dream job.

Speaker 0

我说,太好了,真棒。

And I was like, Sweet, awesome.

Speaker 0

然后她说,我们得搬家了。

And then she's like, We're gonna have to move.

Speaker 0

我当时就说,好,没问题。

And I was like, Okay, great.

Speaker 0

那时候我们才交往了大概三个月。

We've been dating like three months at the time.

Speaker 0

我们当时也在考虑,要不要继续在一起。

And we were kind of deciding like, should we like keep dating?

Speaker 0

她说,如果你想继续在一起,我们就得搬家。

So she was like, yeah, we'd have to move if you want to like keep dating.

Speaker 0

我说,好,我愿意。

And I was like, yeah, okay, I do.

Speaker 0

那就这么定了。

Let's do it.

Speaker 0

结果那份工作是在日本的乡下。

And then so the job ended up being in like rural Japan.

Speaker 0

那地方挺偏的,算是荒郊野外吧。

It was sort of, like, middle of nowhere.

Speaker 0

我当时在想,这到底该怎么弄呢?

And I was trying to figure out, like, how do I do it?

Speaker 0

因为我真的很喜欢我当时做的工作。

Because I really like the work that I was doing.

Speaker 0

所以一开始,我跟Facebook群组的领导层谈了谈,想试着在日本那边给Facebook群组设个办公室。

And so first, I talked to, like, Facebook groups leadership and tried to set up, like, a Japan office out there for for Facebook groups.

Speaker 0

但这事儿因为一堆组织上的规矩,没怎么成。

That didn't really work for, you know, a bunch of kinda organizational rules.

Speaker 0

然后我又试着跟VR部门那边弄,其实都快成了,但后来赞助这事的人走了,好像是去了YouTube还是哪儿。

Then I tried to do this with the VR org, and it was actually working, but then the person that was sponsoring it left to go to, I think, like, YouTube or something.

Speaker 0

那时候,Will Bailey联系了我,他在Instagram东京办公室。

And then at the time, Will Bailey reached out, and he was in the Instagram Tokyo office.

Speaker 0

他是Instagram那边落地团队的一员。

He was part of this, like, landing team for for Instagram.

Speaker 0

他就跟我说,嘿。

And he was like, hey.

Speaker 0

我有点想把办公室扩大。

I kinda wanna grow this office.

Speaker 0

你想参与进来吗?

Do you wanna be part of that?

Speaker 0

我说,好啊。

And I was like, yeah.

Speaker 0

那我们就干吧。

Let's let's do it.

Speaker 0

其实我什么都不懂。

And I didn't know anything.

Speaker 0

我当时连Instagram都没装。

I I didn't even have Instagram installed at the time.

Speaker 0

我从来没用过。

I'd never used it in my life.

Speaker 0

所以我说好之后,马上下了Instagram,然后大概下个星期就搬过去了。

And so I I said yes, then I immediately downloaded Instagram, and then, like, I moved, like, I think, like, next week or something.

Speaker 0

所以基本上,其实我觉得我在美国就待了几个星期。

So pretty much or actually, I think it was like a few weeks that I had in The US.

Speaker 0

但我很快就搬走了。

But I moved out pretty quickly.

Speaker 0

而且我真的很喜欢Instagram的文化。

And I actually really fell in love with the Instagram culture.

Speaker 0

它和Facebook的文化很不一样。

It was very different than Facebook culture.

Speaker 0

它非常注重打造出色的产品,注重发布人们不用的东西,注重从数据角度思考问题,同时也从人性和体验的角度去思考。

A big emphasis on building awesome products, on shipping stuff that people don't use, on thinking about things not just from a data point of view, but also from a human point of view and an experience point of view.

Speaker 0

你可以从应用本身和投入其中的工艺中看到这一点。

And you can see this in the app and in the craft that goes into it.

Speaker 0

这两家公司的工程、产品和设计文化完全不同。

It's just completely different engineering and product and design cultures between the two companies.

Speaker 0

所以我在那个团队学到了很多,那是一段非常有趣的旅程。

So I learned so much being on that team, was such a fun journey.

Speaker 1

你提到了“卸载”这部分。

You mentioned the unshipped part.

Speaker 1

那是什么?

What is that?

Speaker 0

卸载功能的意思是,如果你只是给应用添加功能,对一小部分用户来说很酷,但实际上对大多数不使用该功能的用户来说是不好的。

Unshipping is the idea that if you just add features to an app, it's cool for some small percent of users, but it's actually bad for most users that don't use the feature.

Speaker 0

所以你可以想象一个应用,你只往里面添加功能,随着时间的推移,功能会积累起来,越来越多。

And so you can think of an app where you only add features to it, and over time the features accumulate and they add up.

Speaker 0

如果每个功能只有大约10%的人使用,那么普通用户会看到一堆他们不用的功能,所以看起来杂乱无章,让人困惑。

And if every feature is used by like 10% of people, the average user sees a bunch of features that they don't use, and so it seems cluttered and confusing.

Speaker 0

当他们打开应用时,不知道该怎么办。

And when they open the app, they don't know what to do.

Speaker 0

对于软件来说,从根本上讲,屏幕的大小是有限的。

With software, fundamentally, the screen is of limited size.

Speaker 0

这就是有限的资源。

That's the limited real estate.

Speaker 0

这是一个有限的资源,所有不同的功能都在争夺它。

It's a limited resource that all the different features are competing for.

Speaker 0

所以增加一个功能,就会夺走用户可能使用的另一个功能的机会。

And so by adding a feature that's taking the opportunity away from a different feature the person could have used.

Speaker 0

所以“去功能化”就是你必须设定一个使用门槛,如果一个功能达不到这个门槛,就直接删掉它。

And so unshipping is the idea that you have to meet some sort of usage bar, and if a feature doesn't meet that bar, then we just delete the feature.

Speaker 0

虽然一小部分用户会不高兴,但对大多数用户来说其实是很好的,而且平均来看,对所有人都是非常好的。

And a small percent of users are going to be pissed, but it's actually great for the majority of users, and on average, it's really great for everyone.

Speaker 1

在你职业生涯的这个阶段,你不仅仅是换了部门。

At this point in your career, you didn't just move orgs.

Speaker 1

你跨越了半个世界,去Instagram工作。

You moved across the world to work at Instagram.

Speaker 1

我觉得当你是一个资深技术负责人,在原来的部门有很高的信誉时,做事或者影响别人会容易得多,因为大家会说,哦,我认识Boris,我知道他过去的工作。

And I think when you're such a senior tech lead with a lot of credibility in your existing org, it's much easier to get things done or at least influence others because they say, oh, I know Boris, and I know his past work.

Speaker 1

但我很好奇,你在Instagram,离大家那么远,是怎么建立起信誉的?

But I'm curious, how did you build up credibility at Instagram when you were so far away from everyone else?

Speaker 0

我觉得早期很多功劳要归功于Nam,就是Nam Guian,他现在还是Instagram的活动副总裁,还有Jeff Huang,他当时是我的主管,现在已经是副总裁了。

I think a lot of the credit early on, this goes to Nam, who was Nam Guian, he was the he's still the VP of events at Instagram and and Jeff Huang, who was my director at the time, but now he's a VP.

Speaker 0

Will,我觉得这些人帮我们建立了很多联系。

Will, I think there was a lot of connections made by these people.

Speaker 0

比如说,Nam就跟我说,嘿,你真的很喜欢做代码质量和减少技术债务,这在Meta我们叫更好的工程实践。

So for example, Nam was like, hey, you really like working on code quality and tech debt reduction, which we call, you know, better engineering at at Meta.

Speaker 0

然后他就帮我联系了做这方面工作的人。

And he kinda connected me with the people working on it.

Speaker 0

就是像Lucas Camera和Gabe,还有一堆其他在做这些事情的人。

This was, like, Lucas Camera and Gabe and a bunch of this bunch of these other folks that that were working on this stuff.

Speaker 0

所以这些联系真的很有用。

So so those connections were really useful.

Speaker 0

然后我觉得很大一部分就是我得重新赢得信任。

And then I think a lot of it was I just had to earn the trust again.

Speaker 0

说实话,这是一件很健康的事情。

And honestly, this is a healthy thing to do.

Speaker 0

我觉得这是Meta工程文化中非常棒的一点,就是没有头衔。

And I think this is one of the really awesome things about meta engineering culture, that there are not titles.

Speaker 0

所以你得不断地重新赢得别人的信任。

And so you kind of have to constantly re earn your trust.

Speaker 0

即使我以前是个优秀的工程师,在Instagram上也不一定优秀。

And even if I was a great engineer in the past, I may not have been a great engineer at Instagram.

Speaker 0

如果我不优秀,那我就不配拥有影响力。

And if I wasn't, then I don't deserve influence.

Speaker 0

我不配拥有一个大家愿意听的大嗓门。

I don't deserve to have a really loud voice that people listen to.

Speaker 0

所以我必须和其他人一样,去赢得这份信任。

So I had to earn it along with everyone else.

Speaker 0

所以最初几周,我花了很多时间见人、梳理组织结构、明确目标,还写了很多代码来熟悉代码库。

And so my first few weeks, I spent a lot of time meeting people, mapping out the org, mapping out goals, writing a lot of code so I can get to know the code base.

Speaker 0

但在日本就完全不同了,因为东京时间下午4点,也就是东京时间早上9点,相当于纽约时间晚上7点。

But then in Japan it was totally different because like 4PM Tokyo time was like, it was like 9AM Tokyo time, it was like 7PM New York time.

Speaker 0

就是完全没有时区重叠。

There was just like no time zone over.

Speaker 1

确实挺辛苦的。

It was rough.

Speaker 0

但这也很好,因为我觉得在那之前的几年里,我开了太多会、写了太多文档,都没怎么写代码。

But it was also great because I think in the few years before I was doing so many meetings and docs and all this stuff, I just wasn't coding.

Speaker 0

所以我开始觉得很不开心,因为作为工程师,我们就是写代码的,这就是我们的工作。

So I just started to feel pretty unhappy because like as an engineer, we code, that's what we do.

Speaker 0

这也是我们选择这份工作的原因。对我来说,写代码的时候,我和代码之间有一种情感上的联系。

That's the reason we picked this job For me, when I write code, have an emotional relationship with the code.

Speaker 0

这是我一直在思考的事情。

It's something that I think about.

Speaker 0

当我深入解决一个问题时,我甚至会梦到它。

When I'm really deep in a problem, I dream about it.

Speaker 0

所以写代码对我来说真的太重要了。

So it's just so important for me to code.

Speaker 0

而当我好几年都没这么做的时候,确实挺难受的。

And when I wasn't doing this for years, it was sort of rough.

Speaker 0

我觉得自己开始有点倦怠了。

I think I was starting to burn out a bit.

Speaker 0

其实,能待在这个时区算是种恩赐,因为我根本没法开会,要么别人还没醒,要么人家不想为了聊天而开晚上九点的会。

Actually, was a gift to be in this time zone where I literally couldn't do meetings because people weren't awake or didn't want to do 9PM meetings just to talk.

Speaker 0

我不再参加任何一对一的会议了,而且到现在我也一直没恢复。

I didn't do any more one on ones, and this is actually still something I don't do.

Speaker 0

所以我现在依然不参加任何定期的单独会谈。

So I still don't do any standing one on ones.

Speaker 0

我就能花大量时间写代码。

And I just could spend a lot of time coding.

Speaker 0

我意识到,当时在Instagram,我是少数几个写这么多代码的工程师之一。

And what I realized is I was one of a few engineers at Instagram at the time that was coding this much.

Speaker 0

大家都会写代码,但不会写那么多,因为总有各种事情占满你的时间。

People code, but people don't code that much because there's all the stuff that fills up your time.

Speaker 0

有会议、文档,还有其他各种杂事。

There's meetings and docs and all these other obligations.

Speaker 0

而我却做了很多别人想做却没时间做的事。

And I was able to do a lot of stuff that I think everyone else wanted to do, but just didn't have time.

Speaker 0

在那个组织里,这算是一种超能力。

This was kind of a superpower in that org.

Speaker 0

很早的时候,NAM就把我介绍给了Joe Paymer,他现在还是我的好朋友和导师。

Pretty early on, NAM connected me with Joe Paymer, who's still a good friend and mentor.

Speaker 0

他现在在谷歌工作。

He's at Google now.

Speaker 0

我们开始聊起来,当时代码库是用Python写的,因为各种原因,情况有点糟糕。

And we just started talking about, at the time the codebase was written in Python, it was sort of rough for a lot of different reasons.

Speaker 0

其实代码库应该迁移到Hack上,那是Facebook的主要单体代码库。

Really the codebase should have been moved over to Hack, which is the main Facebook monolith.

Speaker 0

那里有所有的语言支持。

This is where all the language support is.

Speaker 0

基础设施太多了。

There's so much infra.

Speaker 0

HHVM 真的是一个非常出色的网络服务栈。

HHVM is just this absolutely phenomenal web serving stack.

Speaker 0

在效率方面,没有其他东西能比得上它。

There's nothing else like it in terms of efficiency.

Speaker 0

如果你用 GraphQL,你绝对得用它,因为它对这些东西优化得太好了。

If you're using GraphQL, you absolutely have to use it because it's just so optimized for this stuff.

Speaker 0

而 Instagram 根本没有用这些,工程方面很受影响。

And Instagram just wasn't using any of this and engineering was suffering.

Speaker 0

比如在很早的时候,你知道,就像 Mikey 在 Instagram 那会儿,最基本的决策原则就是做简单可行的事。

Like in the really early days, you know, like when Mikey was at Instagram, really basic decisions were The basic principle for decisions was do the simple thing that works.

Speaker 0

这当时效果很好,但后来某个时候就不行了。

And this worked really well, but then at some point it stopped working.

Speaker 0

当代码库有一千、两千个工程师在开发,而且多年的技术积累和产品层层叠加,你就得做出和刚开始时不同的决策了。

Once you get to like a thousand engineers, 2,000 engineers working the code base and many, many years of tech ed and products built on top of each other, you have to make slightly different decisions than you would have made at the start.

Speaker 0

所以即使一开始用Python是完全正确的决定,但等到我去的时候,它已经不再合适了,作为工程师,这一点显而易见。

And so even if Python was absolutely the right decision at the beginning, it was not the right decision by the time I was there, this was painfully obvious as an engineer.

Speaker 0

我觉得很多其他人也看到了这一点,但阻止他们的是把东西迁移过来所需的工作量。

And I think a lot of other people saw this, but what stopped them was just the amount of work it would have taken move the stuff over.

Speaker 0

于是我就开始规划这件事,弄清楚需要做什么。

And so I just started scoping this and figuring out what it would take.

Speaker 0

所以我一开始就去找那些最可能反对的人。

And so I started by finding the people that would disagree the most.

Speaker 0

有一批基础设施的老前辈,他们觉得这个想法很糟糕,根本行不通。

And there's a bunch of these infra old timers that just thought this was a terrible idea and would never work.

Speaker 0

所以我先去找他们谈了谈。

And so I went to talk to them first.

Speaker 0

就像在纽约吃美食一样,我们买了一些啤酒,先了解他们作为人的一面,然后才讨论技术问题。

Like food in New York and we got a bunch of beer and just got to know them as people before we even talked about the technical problem.

Speaker 0

你必须建立信任。

You have to build trust.

Speaker 0

所以我得先了解他们作为人,这真的很有价值。

So I had to kind of get to know them as people and this was so valuable.

Speaker 0

这些人现在很多还是我的朋友。

And this is still a lot of my friends today.

Speaker 0

在建立了信任之后,我还发现其实有很多人也想做这件事,只是不敢说出来。

And after building this trust, I also learned there was a bunch of other people that actually did wanna do this and were kind of afraid to say it.

Speaker 0

所以这些人也都冒出来了。

And so these people came out of the woodwork too.

Speaker 0

最后我们开始规划这个项目,然后它就独立出来了。

And eventually we started scoping this, and this project spun out.

Speaker 0

这个项目现在还在进行,有很多工程师在参与。

It's actually still going today, there's many engineers working on it.

Speaker 0

但有趣的是,在Facebook,这种问题很少发生,因为组织非常以工程为导向。

But it's funny because at Facebook, think this kind of problem rarely happens because the org is so engineering driven.

Speaker 0

在Instagram,有很多类似的问题,因为组织非常以产品为导向。

At Instagram, there were many problems of the shape because the org is very product driven.

Speaker 0

所以其实没有太多时间去做那些工程驱动的项目。

So there isn't just a lot of time for those engineering driven initiatives.

Speaker 0

这个项目,在

This project, at

Speaker 1

某个时候,我是说,你把它搞起来了,算是那种自下而上的倡议。

some point, I mean, you got it off the ground, kind of this bottoms up initiative.

Speaker 1

然后到了某个时候,它的优先级变得很高,需要有人亲自支持,而且那个人不能在日本。

And then at some point, it became high pry enough where it needed that in person support of someone that wasn't in Japan.

Speaker 1

我知道Jake Bolam是你帮忙拉进项目的,他后来更像是主导角色,但他在地理位置上是靠近大家的,所以能帮忙推动项目。

I understand that Jake Bolam is someone that you helped onto the project and he kind of took more of a lead role but location based and close to everyone else so he can help shepherd it along.

Speaker 1

我很好奇你对这个委派节点的看法。

I'm curious your thoughts on that point of delegation.

Speaker 1

你什么时候决定把这么大的事情委派出去?

When do you decide when to delegate something so big?

Speaker 1

你什么时候决定,哦,我还得继续参与?

When do you decide, oh, I need to still be around?

Speaker 1

那你又是怎么处理这种权衡的呢?

And how do you navigate that trade off?

Speaker 0

Jake 非常棒。

Jake is amazing.

Speaker 0

我们是朋友。

We're friends.

Speaker 0

每次我去西雅图,我们都会聚一聚,他是我认识的最优秀的工程师之一。

Every time I go to Seattle, we hang out and he's just one of the best engineers I know.

Speaker 0

所以很明显,他是负责这个项目的最佳人选。

So it was obvious that he would be a good owner for this.

Speaker 0

授权的规则和平时一样。

The same rules of delegation apply as always.

Speaker 0

你知道,你永远不会把你自己不想做的事情交给别人。

So, you know, you delegate you never delegate the thing you don't wanna do.

Speaker 0

这大概是最重要的一条规则了。

That's kind of the most important rule.

关于 Bayt 播客

Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。

继续浏览更多播客