Meta技术负责人详解Orion AR的突破、挑战与未来
Meta技术负责人详解AR眼镜的突破、挑战与未来
(映维网Nweon 2025年11月27日)Jinsong Yu是一位经验丰富的软件工程师,曾在谷歌、微软和Meta等公司领导过多款产品的开发。例如在Meta,他负责了智能眼镜Ray-Ban Meta和AR眼镜Orion项目的软件开发工作。日前,InfoQ分享了他在QCon London的演讲,主题是Orion AR眼镜的深层架构见解,详细阐述了为散热而使用的11个定制微控制器、实现世界锁定渲染所需的SLAM/VIO技术,以及输入融合。他最后为技术领导者总结了关于设定方向、通过测试管理复杂性以及战略性软硬件协同设计的关键经验。
以下是Jinsong Yu发言的整理:

今天我们要谈论的是Orion。在讨论AR眼镜之前,我想先引用一些术语,一些基本的东西。你们可能听说过VR,虚拟现实。你们可能听说过MR,混合现实,以及AR,增强现实。让我简单介绍一下这些术语是什么。
从VR,虚拟现实开始。你们很多人可能玩过VR游戏。你可能身处一个走廊里射击外星人,或者在一艘潜艇里。当你玩VR游戏时,你实际上并不想看到物理环境,你希望完全沉浸在那个虚拟世界中。VR设备的设计,就是会阻挡你对物理环境的感知。这就是VR。
MR,混合现实,比VR更进一步。设备仍然会阻挡光线,但有时你想看到环境里发生了什么。你所做的就是在设备前面安装几个摄像头,然后信息通过摄像头,经过电子设备处理,显示在屏幕上,这就是穿透式显示。你会看到环境,但实际上是经过摄像头传到显示屏的。物理设备仍然阻挡着光线。这就是混合现实。
AR,增强现实,则完全不同。我们说的是眼镜。你实际上是在没有任何电子设备介入的情况下看到你的物理环境,镜片是透明的,然后你在显示屏上叠加增强内容。想象一下,你的房间里有一堵物理墙,你可以在那里放一个虚拟电视,或者你有一个物理沙发,你可以在沙发上放一个虚拟垫子。这就是增强现实。这就是我们在这里要讨论的。
在我们深入技术细节之前,我想介绍一下产品。我不是产品经理,我是工程师,所以我想我们可以请Meta最好的产品经理来介绍产品。我们最好的产品经理是扎克伯格。我录了一段他的视频。虽然他本人不在这里,但他会为我们做产品介绍。
这是Orion,我们的第一个全功能原型。如果让我来说,这是世界上迄今为止最先进的眼镜。大约十年前,我开始组建一个由世界上最好的人才组成的团队来打造这款眼镜。要求其实很简单,但实现它们的技术挑战是巨大的。它们必须是眼镜。不是头显。没有线缆。重量低于100克。它们需要广视场角、全息显示。清晰度足以呈现细节。亮度足以在不同光照条件下观看。足够大,可以显示影院屏幕或多个工作显示器,无论你走到哪里,无论是在咖啡店、飞机上,还是任何地方。你需要能透过它们看到现实世界。
别人也需要能透过镜片看到你的眼睛,并与你进行眼神交流。这不是穿透式显示。这是物理世界,上面叠加了全息图。如果有人给你发消息,你会看到它。你不需要掏出手机,只会出现一个小小的全息图,通过几个微妙的手势,你就可以回复,而不会打断你当下的状态。或者,如果你想和远方的人在一起,他们能够以全息图的形式”传送”到你的客厅,就像他们就在你身边一样。你可以动动手指,调出一局卡牌游戏、象棋或全息乒乓球,或者任何你们想一起做的事情。你可以工作、玩耍,做什么都行。
就是这个产品。非常神奇。每个试用过它的人都对其体验感到惊叹。你们很多人可能有个疑问,那Quest呢?或者,甚至Apple Vision Pro呢?我真的很喜欢Apple Vision Pro。我真的很喜欢Meta Quest。它们只是不同的产品。因为它们是不同的产品,所以有不同的目标。它们做出了不同的设计权衡。
例如,如果你看Apple Vision Pro,那头显几乎有600克重。你简直就像在头上顶着一块砖。即使有600克重,还有一根线伸出来。为什么?因为有一个电池包。电池包本身又有350克。他们没法把它放在头上,太重了。而对于Orion,我们做出了非常不同的权衡。如果你戴上AVP,你会得到极棒的显示效果。他们的目标是获得最好的显示效果,他们也做到了。毫无疑问。这款眼镜,如果你比较显示效果,它不如Apple Vision Pro。甚至不如Meta Quest。这里的关键是100克。你可以舒适地戴在脸上。你实际上看到的是物理世界。这就是我们想要的产品体验。它们只是非常不同的产品权衡。
我们将讨论产品的三个部分。显然,你有眼镜。这是一切的亮点,是焦点。我们还有EMG腕带。我会详细讨论。我们用它来输入。最后,我们有计算模块。我们设计计算模块的原因是我们希望尽可能多地从眼镜上卸载计算任务,这样可以使眼镜保持轻便,佩戴舒适。
Orion眼镜
让我们把注意力转向最令人兴奋的技术。这里的显示技术,我们实际上花了数年时间才完善。它极其困难。当我们开始时,不仅仅是Meta不知道如何做,世界上根本没有人知道该怎么做。我们最终采用的是Micro LED投影仪。它们位于镜腿(太阳穴臂)上,镜腿的前侧。我们实际上自己定制了Micro LED投影仪。我们自己做是因为我们需要极小的像素,全世界最小、最精细的像素密度。以前没有人这样做过。我们必须自己做Micro LED投影仪。这仅仅是光子旅程的起点。你可以想象光子由Micro LED投影仪产生,但它需要进入你的眼睛。
投影仪不在你前面,实际上在你后面。过程是这样的:在镜片里,有一个波导。波导的工作方式是,光子从侧面的Micro LED发出,进入镜片,并在镜片内来回反射多次,直到在正确的时机和正确的位置,光子击中你的眼睛。
然后它从波导中出来进入你的眼睛。你可以想象需要多么精确地控制精度。对于像我这样戴眼镜的人来说,你可能知道,普通眼镜的折射率相对较低。为了获得更高的折射率,你实际上会使用高折射率塑料,就像我现在戴的这样。即使那样,也不够高。如果我们用这样的高折射率塑料来制造显示器,显示器会变得非常大和非常厚。你不想把那样的东西戴在脸上。我们最终使用了碳化硅。同样,这也是世界上没人知道如何做的事情。碳化硅并不新,但使用碳化硅来制造镜片和波导,这完全是新的。我们花了数年时间完善这项技术、工艺,使其真正可行。
最终的结果是我们拥有了这个非常大的视场角,70度视场角。每个试戴眼镜的人都对此印象深刻,感觉就像你真的把增强内容放在了现实物体上。这是一个令人惊叹的因素。眼镜上有很多摄像头。你可能看得见,也可能看不见。有四个朝外的摄像头。它们的目的是弄清楚环境的几何形状以及眼镜相对于环境几何形状的位置。我稍后在谈论世界锁定渲染时会谈到这一点。还有朝内的摄像头用于眼动追踪。它可以弄清楚你在看什么。你所看的东西实际上成为了系统的一个重要输入信号。还有扬声器、电池。就像我说的,所有东西都是无线连接的。没有线缆伸出来。它有2小时的电池续航。这非常了不起。
这是同一个设备。我们制造了少数几个透明外壳的设备,这样你可以看透并看到里面的东西。里面没有一毫米的间隙是没有被有用的东西填满的。每个地方都塞满了微电子元件。我想特别指出一点。通常,当你想到这种设备时,你会把它比作一台电脑。当你想到电脑,你有一个CPU。通常,当你想到像手机、手表这样的小型设备时,有SoC,片上系统。你把CPU塞进去,把GPU塞进去,可能还把DRAM和I/O控制器等一堆东西放进去。我们这里的情况不同。我们没有单一的CPU。我们没有单一的SoC。
相反,我们用了11个微控制器单元。它们是定制设计的芯片。你可能会问,为什么?为什么要做到这种程度?问题是散热和热管理。想象一下,我们有一个像手机或手表那样的单一SoC。这些眼镜上有很多计算任务。我刚说了有四个朝外的摄像头在计算环境几何形状。有两个朝内的摄像头在计算你的眼球位置。有很多计算正在进行。
如果我们将所有计算负载放在一个CPU或SoC上,那么会发生的情况是,那个小小的方块会产生大量热量,而我们不知道如何散掉这些热量。那会成为一个热点,任何围绕那个方块的东西都会融化。相反,我们在里面放了11个微控制器单元。你可以想象这带来的复杂性。就像在这个头显上,在这副眼镜上,你是在和一个分布式计算机集群打交道。一切都变得复杂了。你想调试,想弄清楚发生了什么。你在这里调试的是分布式计算。甚至连启动都很复杂,仅仅是为了让这11个微控制器启动、协调并开始相互通信。一切都很复杂。性能工作很复杂。软件更新很复杂。我们花了很多时间处理那里的问题。
你可能会问,”你在这里撒谎。因为你刚说了有三个部分。其中之一是计算模块。计算模块存在的全部原因就是为了卸载计算。为什么你这里还有11个微控制器?为什么不把所有东西都发送到计算模块?让计算模块去做工作。搞定”。还有另一个问题。处理来自摄像头的信号并进行计算,这成本很高。事实证明,如果你想将数据无线传输到计算模块,根据工作负载的不同,无线传输的成本实际上可能更高。假设计算模块完全免费。没有电池续航问题。没有散热问题。什么都没有。它完全免费。
仅仅是为了优化眼镜本身的热管理,你实际上希望最小化从眼镜传输到计算模块的信息量。我们计算过。没有可比性。我们必须在眼镜上进行计算。如果我们把所有东西都传输到计算模块,无线传输将消耗如此多的电量。即使所有计算都发生在眼镜上,我们已经最小化了两个单元之间的传输。事实证明,在眼镜上进行无线传输的芯片组仍然是眼镜上最热的热点。这只是为了让你对我们谈论的东西有个直观感受。
EMG腕带
下一个,EMG腕带,表面肌电图。肌电图或EMG的工作方式非常有趣。假设你想做一个像这样的手势。用拇指点击食指,就像这个手势。你的大脑通过神经系统发送一个信号,即指令。它传递到手和手臂。它激活肌肉。肌肉的收缩实际上会产生微小的电信号。如果你有足够灵敏的传感器来拾取这个信号,你就可以逆向工程,弄清楚你的手试图做什么。我说了表面肌电图。”表面”部分是这里的关键词。
为了使用这个产品,我们不是邀请你到手术室,让一位好医生切开你,植入一些电极。我们不那样做。你就像戴手表一样把腕带戴在手臂上。没有侵入性。没有任何东西刺入你的皮肤。我们只是从皮肤表面拾取电信号。就是这样。皮肤上的电信号实际上极其微弱。它们是超级微小的。我们说的是微伏级别的电信号。我们有多个传感器,因为我们需要从不同的肌肉群拾取信号。传感器超级敏感。我们进行放大。放大后,我们进行大量信号处理,输入到机器学习模型中。
机器学习模型将弄清楚你试图使用什么手势。这里还有另一个挑战。这是一个非常小的设备,就像一块手表。里面的电池很小。我们希望那块小电池能续航一整天,18小时的电池寿命。每一毫瓦的电池消耗在这里都至关重要。在数据中心训练一个运行良好的模型并不难。但将模型提炼到能在腕带上以微瓦级的功耗运行,并且仍然能够进行所有的机器学习推理和分类,这真的很难。为了缩小模型、提高模型能效,同时保持高精度,我们投入了大量的工程和科研工作。
计算模块
这是三部分设备中的最后一部分。这是一个计算模块。它展示了同一设备的三个不同视图。在某种程度上,与其他两个相比,这是最不性感、最无聊的一个。它是一个标准的计算架构。我们只是运行没有显示器的Android。你可以把它看作一个没有屏幕的Android手机。实际上这种看法是错误的。因为如果你考虑用户体验,这才是大脑。你实际上可以把眼镜和腕带看作外围设备。所有重要的东西实际上都发生在这里。所有的业务逻辑,所有的呈现逻辑,一切都运行在计算模块上。我给你讲个有趣的轶事。
一年前,2024年4月,我们还在紧张地进行软件开发和优化。开始时,我们认为眼镜上的散热问题将是一个主要挑战,我们没有预料到计算模块的散热会那么糟糕。去年这个时候,计算模块运行得极其热。当我们需要做演示时,我们实际上必须把冰冷的苏打水罐放在上面以防止它融化。当然,我们花了几个月时间进行非常严肃的性能优化,减少内存拷贝,重新思考组件边界和API,在调度和信令方面进行优化,所有这些事情。大量的工程打磨才把温度降下来。然后我们才能在一个合理的温度下运行它。
架构亮点
关于设备就说到这里。我现在想换个话题,谈谈两个架构上的亮点,即这三个部分如何协同工作以构建AR体验。
第一部分是世界锁定渲染。这是非常AR特有的。在我们讨论计算、讨论AR眼镜之前,让我们先想想人眼和大脑是如何工作的。想象你正看着我,然后你把头向左移动。想象一下,当你移动头时,看到我就那样神奇地被传送到舞台那边去了。这非常令人困惑,非常令人惊讶。会让人迷失方向。在眼镜上实现显示的简单方法,就会发生这种情况。简单的方法是,我只需显示图像,无论我需要显示什么在眼镜上,我就完成了。如果眼镜移动,图像随眼镜移动。这称为头部锁定渲染。
如果你做头部锁定渲染,那么如果你移动头部、移动身体,任何渲染的内容都会随之移动。这非常令人迷失方向。世界锁定渲染的工作方式则非常不同。你实际上让虚拟物体锚定在物理世界中。经过数百万年的进化,人眼和大脑已经知道如何使其工作。如果你看着我,然后移动眼睛和身体,你毫不费力,但你的眼睛会持续看着我,即使你的头动了,身体动了,你的眼球会移动以补偿身体和头部的运动。世界锁定渲染就是我们将虚拟内容放在显示屏上,锚定在物理世界中。
仔细想想,为了实现这一点,实际上相当复杂。我们谈到SLAM。SLAM代表即时定位与地图构建。建图是你如何弄清楚房间的几何形状。比如,那里有一堵墙。那里有一张桌子。那里有一个沙发。你建立一个点云来代表墙壁、沙发、桌子、家具、人。建图是绘制出环境的几何形状。定位是你在物理环境中的相对位置。VIO与SLAM非常相关。VIO代表视觉惯性里程计。你所做的是实际上使用多个摄像头。一个摄像头不够。你需要多个摄像头。同时,你使用你的IMO传感器。结合起来,你构建VIO。VIO会在运行时实时计算出你相对于环境的位置,你的相对角度是多少。
有了这些完整的信息,你现在就可以进行世界锁定渲染了。它的工作方式是你将物理环境的相对位置传达给计算模块。计算模块会考虑到相对位置来渲染内容。它渲染3D内容,并假设摄像头位置、眼睛位置就在这里。然后这些信息以相对较高的频率推送到眼镜,但还不够高。我们实际上发现,为了使运动非常平滑,在你观看时不会产生任何不适感,我们需要以90Hz的频率重新计算。这是非常高的频率。记住,我刚说过通过无线链路推送比特和字节的成本很高。我们实际上无法承受以90Hz的频率推送这些信息。我们最终做的是以较低的频率推送这些信息。它仍然相对较高,但不是90Hz。
然后我们进行另一轮计算。眼镜以高频,即90Hz,进行SLAM和VIO计算。如果你的头移动了一点点,它依然会使用从计算模块计算出的旧帧,然后以90Hz实时进行重新投影,以调整你的眼睛应该如何看到内容。这样,内容就能以非常平滑且不令人意外的方式保持在原位。记住,在一开始,我谈到了广视场角,70度视场角。通常,我们实际上并不使用整个70度视场角。实际上使用的是更小的视场角。原因就在于世界锁定渲染。想象你感觉那个视图,然后你稍微移动一下头。
那么发生的情况是,当你向左移动时,右侧被切断了。当你向另一个方向移动时,左侧被切断了。这实际上不是好的体验。你想要做的是将你的内容放在外侧留有一定边距的位置,这样当你移动时,什么都不会被切断。这也是你想要一个真正广视场角的部分原因。否则,当你移动头部或身体时,你会得到非常令人惊讶的伪影,这不是好的体验。
到目前为止,我一直在谈论显示、视觉方面。我还想谈谈音频方面,空间音频。想象有人打电话给你,你有一个视频通话,那个人待在某个位置,并且是世界锁定的。你也希望音频感觉像是从那个人那里传来的。如果视频显示那个人在那个方向,而感觉音频来自另一个方向,或者如果你戴普通耳机,有时音频感觉来自你的头部内部,那会让人迷失方向。这实际上不是好的体验。
空间音频的工作方式是我们进行计算,并可以精细调整两耳之间的时序和信号强度。它感觉就像音频来自特定的方向和特定的位置。然后你可以想象,如果你在房间里放置了多个增强内容,它们都会产生音频。你实际上可以识别音频的来源。空间音频实际上也是极其有趣且非常重要的,如果你希望体验感觉自然的话。
以上就是世界锁定渲染。这在AR眼镜领域非常相关。
另一部分是输入。通常当我们想到计算时,你会想到键盘、鼠标、触摸屏,当然,对于AR眼镜,你没有任何这些。你没有键盘可用。你当然不能像这样操作触摸屏。你如何进行输入?你如何与设备交互?我们最终使用了四种不同的输入模式。我们使用眼动追踪、手部追踪、EMG和语音命令。事实证明,没有单一的输入模式是最好的。最好的实际上是你把它们融合在一起。它们协同工作。你实际上获得了最佳的用户体验。这是最自然的。
眼动追踪的工作方式是你有一堆红外照明器将红外光照在眼球上。然后你有一个朝内的摄像头读取图像并找出红外照明的模式。从图像中,如果你进行足够的计算机视觉和机器学习,并持续多年改进模型和算法,你实际上可以获得非常高的精度来弄清楚你的眼睛在看哪里。这很棒。通过眼动追踪,我们可以弄清楚你在物理世界中看的是什么物体。如果你有虚拟显示器,假设你有一个面板,显示屏上有一些按钮,你实际上可以弄清楚,这个人正在看那个按钮。因此,按钮可以高亮显示,表明获得了焦点。眼动追踪非常适用于识别用户正在关注什么。
我们已经讨论过EMG。使用EMG,我们可以识别不同的手势,比如点击这里、点击这里、点击并按住,甚至是一些精细的动作,比如上下或侧向滑动等手势。将其与眼动追踪结合使用非常好,因为眼动追踪提供了目标和焦点信息。但很难用这些信息来激活某些东西。它知道你在看按钮,但你什么时候想点击按钮呢?相信我,你不想用眨眼来点击按钮。你使用EMG。手势可以触发动作。EMG很棒,因为你的手实际上可以藏在背后或口袋里。非常隐蔽。你可以这样做而不会让你的邻居知道你在做什么。
另一种输入模式实际上是手部追踪。就像我说的,有四个朝外的摄像头。它们可以弄清楚环境的几何形状。事实证明,这些摄像头也非常擅长弄清楚用户的手在哪里、手指位置等等。你可能会问,你已经有EMG了,为什么还需要手部追踪?手部追踪可以提供非常精确的位置信息,而EMG可以提供非常精确的肌肉运动信息。
它们的组合实际上是非常互补的。如果你考虑眼动追踪、手部追踪加上EMG,它们都是低带宽的通信通道。你可能以每秒几位数的速率进行通信,而语音命令,特别是近年来AI的进步,可以传达和发出任意复杂度的命令。你使用手部追踪、眼动追踪和EMG进行相对机械的交互,而使用语音命令进行开放和任意的交互。所有四种模式结合在一起,就是我们让AR眼镜以自然方式与人交互的方式。这就是我们最终所做的。
AR的未来
AR的未来在哪里?这是我个人的解读。我家里有一个水晶球,我只是窥视它,看看未来几年会发生什么。我的猜测是,未来几年是关键时期。实际上会有不同的外形规格占据市场。并不是一种外形规格会保留下来。我的意思是将会有一系列的产品。最简单的是纯音频眼镜,只有一个麦克风,一个扬声器,几乎没有别的。它甚至没有摄像头。你可能在市场上见过一些这样的产品。尽管如此,它仍然有用。你可以播放音乐。你可以用语音与AI交互。它仍然有用。这种设备很棒,因为这样的设备你可以做得很轻。你可以将设备的克数减到最低限度,而且使用起来非常舒适。你可以获得很长的电池寿命,因为音频不会消耗那么多电量。从那里,你可以再进一步。你可以添加摄像头。有了摄像头,你可以拍摄风景,但也可以很好地与AI交互。
例如,当我在伦敦漫步时,有很多历史建筑。我想知道它们是什么。我想了解背后的故事。如果你有带摄像头的智能眼镜,你实际上可以问AI,这座建筑是什么?告诉我它的历史。AI会使用摄像头拍照,用照片来识别这座建筑是什么。它实际上可以讲述关于这座建筑的故事。这很棒。再进一步,你可以添加一个简单的显示器。不是我们刚才谈论的3D、全息显示,而是一个简单的显示器。它仍然有用。你可以以不显眼的方式接收通知。你可以获取一些信息,例如,如果你在走路,想获取行人导航方向,你必须不时地掏出手机。
如果你有一个带非常简单显示器的眼镜,那么你就不需要掏出手机了。你可以直接在那里看到方向。最后的领域就是我们一直在谈论的,全息3D AR眼镜。它们的制造成本很高,但我认为它们是未来。在未来几年,将会有来自各种公司的多种设备覆盖整个产品谱系。我们将看到谁能赢得市场。这是我的预测。
经验教训
我想谈谈我们做这个项目时获得的经验教训。我认为这里的经验教训可以相当广泛地适用于任何复杂的项目,而不仅仅是AR眼镜。
我学到的第一点是:要有雄心,但要有选择地雄心勃勃。意思是,如果你在做工作、运行项目、生产产品,而你只是在做枯燥的工作,那么产品出来也会是枯燥的。如果你有一些雄心,做一些全新的东西,这才是我们都想做的。但你确实希望最小化新技术投入。你听到扎克伯格说了,Orion花了10年时间开发,整整十年。之所以花了10年,是因为有很多NTI,新技术研究。如果你有一个,你有合理的机会。如果你有两个,机会就越来愈小,越来越小。这是一个几何级数。你不想有太多。来自横井军平,他是一位日本技术先驱,他有一句名言。他说:”成熟技术的横向应用”。这是什么意思?意思是,你找到一项发展成熟、众所周知、制造成本超低的技术,但你找到了这项技术的令人惊讶和新颖的应用,然后你用这种方式构建你的产品。这是构建产品的最佳方式。当你构建产品时,专注于你必须解决的挑战,而不是你想解决的挑战。同时,保持精简、高效,并尽可能重用。
在开发或运行AR眼镜项目后,我经常被问到的一个问题是,你们真的需要一个新的操作系统吗?我的回答是,让我来剖析一下。你所说的操作系统是什么意思?如果你说的是内核、设备驱动程序,那么,不,我们实际上不需要。我们使用Linux内核。我们实际上运行Android。如果你把操作系统看作是一组API和应用程序开发者需要用来构建业务逻辑的契约,那么答案是肯定的。为什么?因为没有眼动追踪的标准API。没有手部追踪的标准API。没有EMG输入的标准API。没有将所有这些输入融合在一起并弄清楚如何触发3D全息输出以世界锁定渲染的格式呈现在你的世界中的标准API。我们需要构建新的API。我们需要建立一个新的契约。从这个意义上说,是的,我们必须构建一个新的操作系统。这是其一。
Orion超级复杂。我们有数百名工程师长时间为之工作。管理复杂性的一种确定方法是通过测试。你可能熟悉单元测试、集成测试、端到端测试的区分。在很多方面,它们像是过于简化了。有时你实际上希望在不同的层级切断依赖链,所以你最终可能得到一系列集成测试。有时你实际上希望以不同的方式进行端到端测试,所以你最终会有许多不同的端到端测试套件。
我说通过测试管理复杂性的原因是,如果你能清晰地定义组件边界和工作单元,那么你就有办法简化并允许管理复杂性。测试是唯一的方法。根据我二十年的经验,这是真正定义的唯一方法。所有的API都会过时。所有的文档都会失效,它们会过时。测试是唯一的事实来源。你还可以运行压力测试、故障注入、模糊测试,它们都是非常有趣和优秀的测试技术。
最后,如果你运行硬件项目,那么除了你实际使用的硬件之外,弄清楚如何使用开发板、代理设备(这些设备不真正属于你,但你可以运行一些代码来弄清楚某些事情)以及模拟器,是非常重要的。不要为了省钱而跳过这方面的投资。它们会救你的命。迭代速度极其重要。你可能比竞争对手起步晚,但如果你的竞争对手以月周期迭代,而你以周周期甚至日周期迭代,那么你可以很快赶上。为了提高迭代速度,保持简单。坚实的基础设施和工程质量确实有帮助。
很多时候你无法快速迭代的原因实际上是,我们签入了一些代码,现在产品坏了。你有工程质量问题。保持高工程质量。不要等到代码质量实际很高了才运行。使用测试作为护栏。谈到工程质量,我可以告诉你,原型代码总是会以某种方式进入生产环境。别假装,”我只是写一些原型代码。不用担心测试。不用担心代码覆盖率。不用担心API的整洁性。没关系”。不,不是的。它会变成生产代码,你会后悔的,相信我。决定使用多个代码仓库或多个构建系统是件大事。即使一开始你不觉得,它总会回来困扰你。
语言选择真的很重要。我自己在C++上花了超过二十年时间,但无论你对C++有什么经验,你总会遇到内存安全和线程安全的问题。总是如此。没有例外。我不是说不要用C++。我只是说,如果你用,就要有计划。计划花时间调试那些棘手的问题。如果你使用像Python、Java、JavaScript、TypeScript这样的语言,你可能在内存安全和线程安全方面问题会少一些,但性能可能是你需要关注的问题。同样,使用它们,只是要意识到优缺点,并计划好在性能上花时间。Rust是一种有趣的编程语言。如果你不熟悉Rust,我实际上建议你花点时间了解一下。你不一定非得用它,但要知道它能做什么。它提供了像C++一样的裸机性能,但它在编译时消除了C++中一大堆安全问题。
过度简化的总结是,如果Rust代码编译通过,如果代码编译了,那么你的代码中就没有未定义行为。这太棒了。另外,无论你做什么,总是要投资于静态分析、性能分析器等工具。
硬件-软件协同设计很重要,但成本也很高。在决定引入自己的硬件组件之前要三思。如果你能只构建一个应用程序,如果你能保持纯软件,那就那样做。这样便宜得多。你可以迭代得更快。很可能你会构建出更好的产品体验。如果你必须引入硬件,那就做。确保你的硬件团队和软件团队每天相互沟通。进行软件-硬件协同设计确实能在一些不可改变的障碍上取得进展。
例如,我们谈论Orion。我们绝不可能把它做成一个纯硬件项目。我们也绝不可能把它做成一个纯软件项目。唯一的方法是我们同时在硬件和软件上打磨并进行协同设计。它们从彼此的进展中受益,并使其成功。
性能始终是一个难题。延迟,吞吐量。你想要做的是系统地在仪表板中跟踪性能。你需要了解系统的性能。你需要构建强大的工具和基础设施来真正理解你的代码和系统的性能特征。如果你看到一个性能问题,你只需要集中精力专门处理。你可能实际上必须停止程序的所有其他工作,让团队专注于性能一段时间。
技术领导力。你们中许多人已经处于技术领导职位。对于年轻人,你们可能渴望以后成为技术领导者。根据我二十年的经验,这四点是最重要的。
设定正确的方向。如果你设定了错误的方向,让团队朝着错误的方向奔跑,他们跑得越快,离目标就越远。设定正确的方向。
聚焦极其重要,尤其是当你有一个大团队时。每个人、每个团队都有他们自己喜欢的功能。人性使然,他们会做自己喜欢的事情,而不是做重要的事情。如果你在项目接近尾声时,你的产品每小时崩溃一次,却有一个团队在周末花时间在他们内置的彩蛋上,那你就有问题了。你需要整个团队专注于最重要的功能和工作。
清晰,尤其是沟通的清晰。我们都是经验丰富的专业人士,但有时我们仍然沟通不清晰:有时、或经常、或几乎总是。尝试写简短的文档。如果你看到一份30页的文档,想想如何把它缩减到3页。如果你看到一份3页的文档,想想如何缩减到1页。确保阅读文档的人确切知道发生了什么。确保决策被清晰地传达。
愿意做出权衡。我们总是处于”战争迷雾”之中。信息总是不完整的。优先级总是相互冲突的。如果你不做权衡决策,你的产品就会变得一团糟。要愿意做出权衡选择。


