We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
People
E
Eric Seidel
P
Philip Korn
Topics
Eric Seidel: 我在技术领域的职业生涯始于20多年前,曾在 Apple 工作,参与了 Safari 的 SVG 和 Windows 版本的开发。之后,我参与了 Y Combinator 的创业项目,但由于没有构建用户真正想要的产品而失败。在 Google,我加入了 Chrome 团队,参与了 WebKit 和 Blink 的开发。Flutter 项目源于我们长期以来希望世界停止重复编写代码的愿望,以及在 Web 开发中遇到的性能和保真度问题。我们尝试在 Web 上复制原生应用,但发现难以实现完美的动画和视觉效果。Razor 项目最初旨在优化 Chrome 的性能,但最终演变成了 Flutter。Flutter 团队从最初的几个人发展到一百多人,这让我学习到很多关于人员管理的知识。我于 2022 年离开 Google,并于 2023 年创立了 Shorebird 公司。Shorebird 为 Flutter 提供代码推送功能,这解决了我在 Google 工作期间无法解决的问题,并满足了企业与 Flutter 建立业务关系的需求。我们的代码推送服务对小型开发者是免费的,并提供不同等级的付费方案。我对 Flutter 的未来发展非常乐观,因为企业有动力跨平台开发应用。Google 目前专注于 AI,但这不会影响 Flutter 的发展,因为越来越多的公司和开发者将为 Flutter 的发展做出贡献。大型公司对 Flutter 的采用将推动 Flutter 的创新和发展。Flutter 的良好开发者体验源于早期团队成员在 Web 开发领域的经验和对开发者体验的重视。Shorebird 提供的代码推送服务可以帮助开发者解决应用更新问题。 Philip Korn: 我非常感谢 Eric 为 Flutter 做出的贡献,Flutter 的成功一部分源于其趣味性。在访谈中,我了解到 Eric 的职业背景,以及他之前创业公司失败的原因。我也对 Flutter 的发展历程、Flutter 与 Web 开发的关系,以及 Shorebird 公司的代码推送服务有了更深入的了解。我个人非常喜欢 Flutter 简洁的错误提示和良好的开发者体验。

Deep Dive

Chapters
Eric Seidel's career started with an Apple internship, followed by roles in Safari development and a Y Combinator startup experience. He shares insights into his time at Apple working on Safari and SVG, and discusses the challenges and lessons learned from his unsuccessful clothing e-commerce venture.
  • Apple internship and full-time role
  • Safari development (SVG, Windows port)
  • Y Combinator startup experience
  • Lessons learned from startup failure

Shownotes Transcript

Eric is the founder and CEO of Shorebird. Shorebird makes code push for Flutter. Before Shorebird, Eric co-founded the Flutter project and lead Flutter and Dart at Google.

https://www.youtube.com/watch?v=xqGAC5QCYuQ

https://handbook.shorebird.dev/ceo

<raw_text>0 您好,感谢您的收听。这是“Flutter真奇妙”播客。我的名字是Philip Korn。每一期节目,您都有机会与Flutter社区的另一位杰出成员交谈。难以置信,这是播客的第50期。我希望找到一位特别的嘉宾,我认为我们成功了。我很荣幸地欢迎Eric,Flutter的最初创建者之一。欢迎。嘿,你好。

你好,Eric。非常感谢您抽出时间参加这个播客。我也要感谢您帮助创建Flutter。我只想首先代表我自己和社区,感谢您对我的生活以及未来成千上万,甚至数百万开发人员产生的巨大影响。太棒了。我认为Flutter会成功,仅仅因为它很有趣。所以谢谢您。首先,您能否分享一下加入Google之前的背景?当然。是的,我20多年前开始从事科技行业

作为职业生涯。嗯,在我想去攻读密码学博士学位之前,我在苹果公司实习过。嗯,但最终我非常喜欢硅谷和苹果的实习,并且成功地获得了秋季的全职工作。呃,我在苹果公司待了几年,呃,做过几个不同的团队。嗯,但我认为对我来说,最具影响力的还是我在Safari团队的经历。嗯,

我在Safari上工作,我为Safari带来了SVG。我帮助将Safari带到了Windows系统。在那里从事性能和其他各种工作。然后我离开并加入了一家Y Combinator的创业公司一段时间。我们是Y Combinator的第二或第三批学员。我们试图在互联网上销售服装,我不建议这样做。然后,当我经过大约15个月的努力后筋疲力尽时,我去了

我徒步穿越了阿巴拉契亚山脉一段时间,然后回到了科技领域。我被谷歌招聘,并参与了Chrome项目。这就是我加入谷歌之前的经历。哇,太酷了。我必须说,我有点迷恋YC。我很想知道更多关于这个商业想法的信息,以及为什么您认为它没有成功。我的意思是,我们YC的业务失败的最大原因是我们没有

我认为YC自从那时起在这方面做得越来越好了,但请记住,我们当时非常早。我们从YC学到了很多东西,但YC也从我们的一些失败或成功中学习了很多东西。但我认为我们没有做的一件大事,而他们现在非常擅长告诉你去做的事情是,我们没有构建人们想要的东西。我们甚至没有构建我们想要的东西。我们想象了一个客户,并构建了一堆很酷的技术

呃,但是,你知道,如果没有人在乎我们正在构建的东西,它就不会,呃,我们从未与我们的客户交谈过。呃,所以最后,你知道,我们只是,我们努力工作了很长时间,然后失败了。嗯,或者至少我失败了,我离开了公司。我知道我的联合创始人之后继续工作了一段时间,嗯,但我需要在连续工作15个月后进行重置。这很难,很容易筋疲力尽,这是一个很好的教训。

所以你来到了谷歌,我想你最初并没有参与Flutter项目。我不知道当时Flutter是否存在。是的。我被招聘加入Chrome团队。我记得招聘我的副总裁告诉我,他不能告诉我我要从事什么工作,但如果我不喜欢,他会为我在谷歌找到一份我愿意做的工作。

嗯,呃,我接受了他的提议。呃,然后我,我在第一天开始工作时听说Chrome项目,那就是我要参与的项目。嗯,呃,这很有趣。你知道,我是谷歌的第一位WebKit审核员。嗯,所以我帮助启动了谷歌的WebKit团队。

是的,只是致力于让网络变得更出色,这正是我在苹果公司工作时在Safari上从事WebKit工作时一直在做的事情。但我们只是试图让网络变得更出色。我认为,你知道,我们以后可能会更深入地讨论这个问题,但我们最终意识到我们做不到,至少在我们使用WebKit进行Web开发的方式下做不到。因此,我们最终分叉了WebKit来创建Blink。

这是一个我深度参与规划和执行的项目。然后几年后,我们再次分叉Blink来创建Flutter,我可以详细介绍一下。

那太棒了。我快速说一下,在准备这次播客时,你与我分享了一个很棒的视频。我认为这是你播客的第100期。我们更详细地介绍了这段历史。我相信我们不会在本期节目中详细介绍所有细节,但我会在节目说明中添加链接。我强烈建议观看它。它提供了对开发过程的更深入了解,特别是为什么引入某些功能以及它们解决了什么问题。是的,Flutter源于……

在许多方面,这与我近二十年来一直在追求的目标相同,那就是我希望世界停止编写那些该死的重复代码。而Flutter是我们最终选择的工具。它并非我最初为此设想的工具。我认为网络会获胜。我非常努力地尝试让网络成为最佳方式。

为了非常非常长的时间为用户构建应用程序体验。因此,当我从事Chrome项目时,附近有很多志同道合的人。但当我们从事Chrome项目时,我们相信你手机上的所有应用程序都应该是网络应用程序,或者几乎所有应用程序都应该是网络应用程序。

我们从事的工作之一就是试图消除一个又一个障碍,以实现这一目标。在我们进行这些实验时,我们一次又一次遇到的问题是性能。

与原生应用程序相比,至少在当时,要获得一款感觉流畅、动画完美、像素完美、启动可靠等的网络应用程序非常困难。也许现在的网络在这方面已经有所改善。我已经离开网络超过10年了。但我们在性能方面进行了尝试。它也在保真度方面。我们进行的一个导致Flutter诞生的项目

有很多,正如你所说,我们在那个旧的播客剧集中讨论过Summon。但导致Flutter诞生的项目之一是,我们试图逐像素、逐手势、逐动画地复制当时的Google日历和Android计算器。所以这两个都是Android应用程序,我们只是试图在网络上制作完美的复制品。我们发现这是不可能的。

你无法让动画完全正确。你无法拥有完美的墨水飞溅效果等。它告诉我们,我们最终需要构建不同的东西。再说一次,这是多年来的事情,但正是这种思考和模式最终导致了Blink,创建了谷歌将用于Chrome的WebKit的分支。然后再次,

分叉Blink来创建Flutter。Flutter并非旨在成为一个单独的东西。它旨在成为一个……最初,该项目启动时被称为Razor。

Razor的目的是从Chrome中去除所有减慢速度的旧Web部分。因为请记住我说过,制作这些优秀应用程序的问题之一是性能,以及从你的网络应用程序获得一致的良好性能。因此,我们对Chrome进行了精简,将其切成碎片,并删除了所有20年来未曾使用过的旧的缓慢内容,但这些内容却使

网络变得非常缓慢。我们将基准测试提高了20倍。或者更确切地说,我应该说,我们将基准测试的速度提高了20倍。这足以证明谷歌管理层确实存在一些东西。我们花了一段时间探索是否可以只让文档类型变快。如果你可以在你的HTML页面中添加一些小东西,那就会关闭网络的所有缓慢部分。

并提供快速模式。我们探索了一段时间。这就是Razor项目。最终我们发现我们必须删除一些部分,然后我们需要添加一些东西回来。我认为文本编辑是罪魁祸首。一旦我们不得不添加一些东西回来,我们就意识到我们不再从事网络开发,或者至少我们不再从事多年来可以成为网络的东西。每当你添加一些东西时,你都必须经历标准化流程。

这导致团队出现裂痕。大约一半的团队成员回到Chrome项目工作。我们其余的人则继续构建一个不再是网络的新事物,但它可以为构建应用程序提供真正高质量的多平台体验。这是一个非常不可思议的故事。那么管理Flutter团队的体验如何?我假设一开始这是一个非常小的团队。随着时间的推移,它发展到数百名开发人员。

是的,Flutter最初只有大约六个人,我认为,他们离开了Chrome团队来做Razor项目。然后大约一半的团队离开了,我们只剩下三个人左右。然后又有一批婴儿出生和陪产假。所以有一段时间,办公室里只有我们几个人,或者一段时间内只有我们一个人在办公室。是的。

但是,呃,所以是的,我们一开始是一个非常小的团队,然后我们发展壮大,呃,在Dart和Flutter之间超过一百人。嗯,对我来说,这需要学习很多关于管理的知识。嗯,我做过很多技术领导工作,但我没有做过很多人员领导工作,你知道,你读了很多书,你参加了很多课程,你,嗯,你只是,你只是弄明白了。嗯,

但是是的,这就是Flutter。Flutter教会了我很多东西,但其中之一就是如何照顾人。呃,即使有很多需要照顾的人。很好。然后你与团队合作了多久?呃,Flutter始于2014年10月,我认为我应该知道这个日期,但它是2014年9月或10月,这是第一次提交。你可以在GitHub上公开找到它。然后我离开了团队,嗯,大约在2022年同一时间,呃,

然后我在2023年1月左右创立了我的现任公司Shorebird。所以我要说,看到你离开Flutter团队我很伤心,但与此同时,看到你仍然留在Flutter社区,这让我感到非常欣慰。所以我很想了解更多关于Shorebird的信息。你想花时间讨论一下吗?是的,Shorebird是针对我在领导Flutter团队时无法解答的许多问题的答案。

呃,首先,我应该说,我们做什么?Shorebird现在为Flutter构建代码推送功能。代码推送是一种更新应用程序、将更新推送到现场应用程序的方式。因此,所有用户都可以立即获得它,呃,而无需等待他们按下更新按钮等。呃,这是一项技术或一系列技术,所有大型应用程序都在使用,你知道,TikTok、Facebook、YouTube等,嗯,

并且存在于其他语言和平台中。显然,网络就是这样工作的,但在我们为Flutter创建它之前并不存在。正如我所说,ShortBridge是针对我在谷歌工作时无法解答的许多问题的答案。CodePush实际上就是其中之一。我们会经常收到关于CodePush的问题。实际上有几个问题。

我们的实现、CodePush的变体、不同的技术基础,但想法相同,我们在谷歌已经做过了,但从未发布,或者只为谷歌内部应用程序发布。当我领导Flutter团队时,另一个不断出现的问题是,我会经常被叫到这些云销售会议上。

我认为,这实际上是企业与谷歌进行他们想要购买东西的会议的唯一途径,就是参加云销售会议。在这些对话中,很多时候,桌子另一边的人想与我签订合同,也就是说,他们想与Flutter团队签订合同,而这并不是谷歌的做法。这些决定远超我的权限范围。但我想为那些想要与

Flutter建立业务关系的企业构建一个答案。当您是一家企业并使用Linux时,您可以做到这一点的一种方式是购买Linux。您可以去Red Hat公司说,我想使用Linux,我希望您能支持我的努力。许多其他技术也是如此。但这对于Flutter来说并不存在。

人们不断向我询问此事。所以我在这里创建Flutter公司。我说这话并非为了排斥,而是像一家公司,希望最终能成为Flutter的代名词,并被视为企业使用和消费Flutter以及获得成功所需的产品和支持的可靠途径。

太好了。我会告诉你,在为本期节目做研究时,我在谷歌搜索Flutter CodePush,Shorebird是第一个结果。绝对在该功能以及未来可能的其他功能方面占据主导地位。你能分享一下未来的其他开发计划吗?你是否考虑过桌面支持?

是的。一件有趣的事情是,我们在谷歌几乎完全公开地运行Flutter,或者尽可能公开地运行。我们完全公开地运行Shorebird。因此,如果您想了解我们正在从事的工作或我们计划做什么,您可以直接加入我们的Discord,您可以观看我们讨论它。您可以在GitHub上阅读我们的计划。所以没有太多秘密。关于CodePush的桌面支持,我们肯定会做到。这只是一个关注度的问题。

因此,我在构建团队和构建产品中学到的一件事是,在你拥有大型可运行产品之前,你必须拥有小型可运行产品。现在我们非常专注于小型可运行产品,对吧?一个非常有限的产品,它只适用于iOS和Android,并试图使其变得出色。然后,当我们到达那里时,将其移动到Windows、Mac和Linux将非常容易。

很好。通常,在观看YouTube视频、比较框架时,人们经常对Flutter提出的一个批评是缺乏CodePush支持。我认为挑战的一部分只是教育社区。人们意识到,有了Shorebird,CodePush实际上支持Flutter。

哦,我只能强调一百遍。我会告诉你,到目前为止,我们现在最大的问题,也是你和你的听众可以帮助解决的问题是,我认为90%以上的Flutter社区不知道我们的存在,对吧?Flutter每月活跃用户数量约为一百万。嗯,我不知道确切的数字是多少,但当我离开时,它就是这个数量级,谷歌之前也说过类似的话。嗯,

也许有5万多人知道我们Shorebird的存在。所以我现在面临的挑战是接触其他一百万Flutter开发者。显然,除此之外,我很想接触更多其他开发者。但让我们首先接触所有Flutter开发者。太酷了。如果你是小型开发者,定价是否合理?是否有针对小型应用程序或大型应用程序的流计划或计划?

是的,Shorebird CodePush是免费的。对于……我们销售的实际上是补丁的分发。所以……

如果您是小型开发者,我们会免费为您提供5000次补丁安装。然后,我认为我们有一个相当慷慨的升级层,我们增加了团队支持。例如,如果您想拥有多个协作者,然后我们会为您提供50000个补丁,每月20美元。然后我们的定价从那里开始扩展。但是是的,我们基本上是在销售这些补丁的网络交付。

我们免费提供构建它们的软件。很好。听起来非常慷慨。然后我想讨论的另一个领域是Flutter本身,它的当前状态以及它未来的发展方向。像许多人一样,它面向Google I/O。Flutter受到的关注相对较少。也就是说,你在社区中看到了惊人的发展。你有什么见解可以分享吗?是的。我对Flutter非常看好。这有很多原因,但其中最重要的是激励措施。

所以我已经在这个问题上奋斗了数十年,帮助世界停止编写所有重复代码。我只是相信,当我们远离所有平台公司和平台公司的赢家通吃游戏(你只为他们编写代码)的激励措施时,我们退一步思考驱动企业的激励措施是什么?企业希望能够在任何地方接触到他们的客户。

无论他们使用什么屏幕。就像我们在网络响应桌面时看到的那样,突然之间,对企业来说,在网络上比编写Windows应用程序更好,我认为我们最终会在其他屏幕上实现这一点,包括移动设备。因此,我认为多平台的未来(我认为Flutter是我们拥有的最佳工具)非常光明。

关于谷歌对Flutter的参与,我无法代表谷歌发言。显然,我已经离开几年了。我的感觉是,谷歌目前非常关注人工智能,至少在他们的公开信息中是这样。而且

你知道,这可能会掩盖他们可能谈论的其他事情。我认为我们将继续看到谷歌Flutter团队的许多优秀工作。那里有很多优秀的人才。我还认为,我们将开始看到来自更广泛社区的其他更多优秀工作。我的意思是,部分原因是,

一些大型参与者,我认为,已经开始达到这个点。而大型参与者,我的意思是拥有数十甚至数百名Flutter开发人员的人,他们已经开始达到拥有Flutter知识、经验和基础设施的程度,可以以越来越大的方式为Flutter社区的方向做出贡献。

我认为随着大型应用的采用,例如,我们最近看到LG宣布他们将把他们的智能屏幕迁移到Flutter。我们今年早些时候看到MGM宣布他们将把所有公园迁移到Flutter。你知道,我们看到,我认为现在已经是几年前了,丰田宣布他们将把所有汽车迁移到Flutter。还有很多其他类似的例子没有被广泛宣布。但随着越来越多的公司转向Flutter,我认为我们将看到

Flutter和多平台相关的有趣创新,这不仅仅来自谷歌。我认为Flutter的未来也许联邦化是错误的词,但它肯定比仅仅是谷歌团队更广泛地分布。我认为我们才刚刚开始达到这一点。

我完全同意。看到这一点令人兴奋不已。但就我个人而言,我喜欢Flutter的一点是它的错误信息多么清晰。编写有效的代码很容易,编写无效的代码则具有挑战性。其他平台可用。然而,它们都存在抽象泄漏的问题,无论是层层叠加,无论是Java和另一层,JavaScript和另一层。当出现问题时,在有机会修复它之前,可能需要花费大量时间来找出问题所在。我发现使用Flutter,99%的时间都是Dart错误。但我认为我从未见过C++错误

正是这种简洁性使我发现开发者体验如此令人愉快。

我的意思是,我认为这是早期一些非常幸运的选择和意外事件的结果。我的意思是,Flutter同样来自网络。它很大程度上是由在网络上工作过的人编写的,例如RTL十年或其他什么。编写HTML5的是Ian Hickson,对吧?他精通网络以及网络的所有错误和优点,并且对事物的设计方式有非常强烈的看法。同样,你知道,Adam Barth和我,你知道,我们是开发者。我们一直都是开发者。我们非常关心开发者体验。是的,它只是,我……

这从来都不是一个人,对吧?你知道,Flutter是由数百甚至数千人以他们自己独特的方式做出良好、有益的选择而构建的。但我确实认为我们有时间、空间和资金来奠定一些良好的初始层。然后,你知道,多年来,人们在这个基础上构建了非常好的东西。最终结果很好。恭喜你。还有什么想补充或推广的吗?

是的,我想我如果不推广我们今天正在做的事情,那就错了,对吧?所以我们,我离开了谷歌,我们正在做Shorebird。Shorebird试图成为企业的Flutter,对吧?我们试图成为您Flutter产品的来源。我们今天为您提供的产品是CodePush,对吧?所以如果您曾经有过这样的经历,您在现场遇到了一些问题,