0

我的“逆向工作”实践

 1 year ago
source link: https://wangwei1237.github.io/2023/07/09/My-practice-of-working-backwards/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
1.png

2023 年 4 月 1 日,我在 LiveVideoStack 2022 北京站 大会上,以 《百度视频质量评测的实践之路》 为题介绍了团队在视频质量评测方向的思考与认知。回首向来萧瑟处,金戈铁马,苍山如海。

站在后验结果的视角来审视这个过程,发现有很多的地方——尤其是“逆向工作”思路对整个事情的推动,值得进一步思考与总结。同时,最近和同事在讨论其他方向的工作思路时,我发现“逆向工作”这个词频繁的出现。再加上,近来又在读贝佐斯的 24 封“致股东信”,在 2008 年的“致股东信”中提到的“逆向倒推”深深启发了我。因此,更想对过去的这一段工作进行一番总结。

虚拟摄像头——逆向初体验

时针回拨到 2019 年的夏天,那个时候,抖音、快手提供的可以使用手机拍摄视频并实时增加各种特效的功能蔚然成风。在鹏寰国际大厦的一个会议室中,有一群人正在诉说着工作中那令人“烦恼”的快乐,这群人是当时“全民小视频”测试团队的同学,他们刚刚完成了拍摄器特效功能大改版的测试。

  • 为了测试这次增加的“拍天空”特效,我都晒黑了……
  • 为了测试张嘴特效,我的下巴都脱臼了……

我意识到我有必要做点什么来改变这种局面,然后问了一句:如何才能做到一次拍摄,次次可用?这样咱们就不用害怕晒黑和下巴脱臼啦~

一时间,大家都沉默了,一是因为这确实是个好主意,二是因为这个问题超出了我们能回答的范畴。确实,在当时,我们在技术上确实没有办法做到这一点,否则我们就不会下巴脱臼了。片刻沉默之后,大家又热烈的讨论了起来,我们天马行空的想了很多方案,但是在谈到谁可以来跟进的时候,事情又开始变得非常微妙。

讨论之后的工作又恢复了往日的忙碌,大家似乎都忘记了有过这样一次讨论,不过我依然兴奋不已。为了实现“一次拍摄,次次可用”的目标,我和几个志同道合的同事开启了一段难忘的时光,在这段时光里,我们疯狂汲取大量的各类新知识:

  • 音视频基础知识,数字视频基本概念
  • Android 相机系统原理
  • FFmpeg,OpenGL
  • Xposed框架,Android逆向破解

令人欣喜的是,在 2019 年的国庆节前,我们还真的就实现了“用指定视频替换摄像头采集到的画面”的功能,我们称之为“摄像头 HOOK”。昨日之深渊,今日之浅谈。的确,当我们跨越种种困难实现目标之后,回头想想,整个事情好像也没有那么困难。

我们将核心的思路公开到了 GitHub,在 GitHub 上,我们遇到了新的朋友,基于我们的思路,我们的新朋友实现了能力更丰富的 虚拟摄像头项目。后来,我们也基于这个核心思想,实现了:贴纸测试自动化,高精准肢体、人脸识别,高精准直播延迟测试……等技术,彻底改变了原有的工作方式,极大提升了工作效率。

在虚拟摄像头的项目上我尝到了一丝丝的甜头,我惊奇的发现,原来还可以这样解决问题,我开始重新思考这种工作方式的有趣之处:

  • 不以现有的技术为出发点去确定问题可以解决的程度
    2.png
  • 以问题的最终解决为目标重新思考需要做何种准备
    3.png

直到最近一口气读完了亚马逊 CEO 贝佐斯的24封致股东信 之后,我才意识到,原来这种思维模式就是贝佐斯在 2008 年致股东信 中提到的“逆向倒推法”。

从用户需求出发的“逆向倒推法”,可与利用现有技术和能力推动商机的“技能正推法”形成鲜明对比。

  • “技能正推法”的理念是:我们非常擅长 X,利用 X,我们还能做些什么呢?这的确是一种实用且有效的做法。然而,如果仅仅依靠擅长的技能,那么公司便永远不会有动力去开发新的技能,而既有的技能也终将过时淘汰。
  • 以用户为出发点进行倒推的方法,往往会要求我们锻炼新的技能并动用平时不常练到的肌肉,绝不要将迈出第一步时可能出现的不适与尴尬放在心上。

亚马逊逆向工作法 这本书中,作者写到:

自 2004 年起,亚马逊推出的所有重要产品和计划,大都具有一个共同的、非常鲜明的亚马逊特色:他们的诞生都经历过我们所说的“逆向工作”流程。

“逆向工作”对公司的成功起着关键作用。“逆向工作”是一种审查想法、创造新产品的系统性方法。其关键原则是:

  • 首先思考客户体验
  • 然后由此反复逆向工作
  • 直到团队对要建造的产品拥有清晰的想法

因此,当我第一次读到关于“逆向工作”的内容后,这引起了我内心深处强烈的共鸣。同时我又庆幸,自己当时能够突破自我,勇敢的闯了下去,毕竟在事情没开始之前,谁能预知自己就能解决所有的问题呢?

度知了的成长——逆康威定律

工作依然在平凡而又偶尔充满惊喜的节奏中前行,2020 年,基于在“虚拟摄像头”项目中补足的音视频专业技能,我又启动了新的方向:视频质量评测。那个时候,视频质量评测还没有引起大家足够的重视,但是我朦胧中认为评测终将会在音视频领域占据一席之地。那个时候,LiveVideoStack 已经在音视频领域非常火,我怎么也不会想到,有朝一日,我也能站在 LiveVideoStack 大会的讲台上,向业界朋友介绍我们在视频质量评测工作上的认知和实践。

随着时间继续往前推移,在 2021 年的时候,我们的视频质量评测平台在内部也取得了不错的应用效果,很多其它业务线的同学也慕名而来,希望可以一起合作。然而,随成长而来的不只有内心的兴奋,在平台不断成长壮大的过程中,烦恼也会随着而来:

  • 如果让评测结果更符合线上用户的实际感知?
  • 如何才能让评测的结果更置信?
  • 如何才能实现规模化的评测系统?

恰巧,在这个时候,我读到了一本至今看来都让我受益匪浅的书:Team Topologies: Organizing business and technology teams for fast flow,这本书的中文译本就是非常有名的 《高效能团队模式:支持软件快速交付的组织架构》。这本书中的两个核心观点给了我思路:

  • 团队而非个人是组织的基本构件单元,要把团队摆在第一位,并将认知负荷作为建立团队边界的有力工具
  • 逆康威定律

康威定律&逆康威定律

  • 1968 年,梅尔·康威发表了一篇论文:How Do Committees Invent?,在这篇论文中,康威研究了组织结构和最终系统设计之间的关系。这也就是后来的康威定律设计系统的组织由于受到约束,这些设计往往是组织内部沟通结构的副本

  • 2015 年,ThoughtWorks 的技术总监 James Lewis 突发奇想地提出应用逆康威定律组织要根据他们想得到的软件架构来设计团队结构,而不是期望团队盲从一个被设计好的团队结构。

如今一直火得一塌糊涂的“微服务架构”就是 James Lewis 在一次架构峰会上提出来的,具体可参见 “微服务”一词的历史

实际上,“逆康威定律”本质上是一种特殊的“逆向倒推法”,根据合理的软件架构来调整组织结构,而不是让软件架构受制于组织构成。在组织与技术架构这个特殊的领域中,“逆向倒推法”有了一个更为高大上的说法,仅此而已。

于是我开始重新进行思路调整:

  • 以视频质量评测的最终目标(置信、效率)重新调整技术路径
    • 端到端的视频质量评测能力,打通PC、Android、iOS三端能力
    • 各种算法的深入分析和深度优化,并集成到现有的平台能力
  • 以提供一站式评测服务的最终目标来重新调整团队的结构
    • 明确团队的认知负荷,不再一味强调自研,转而寻求其他团队的优秀人员,协同共创价值
    • 遇水搭桥,逢山开路,自建众测团队

更多的细节也可以参考另一篇文章 如何突破资源限制,创造更大的价值? 以及 《百度视频质量评测的实践之路》

基于这样的思路,我们慢慢建设并不断优化视频质量评测系统:度知了。时至今日,度知了依然在各个视频业务中发挥着非常重要的作用,我们也依然在路上——今天依然是第一天。

基于目标的全局最优解

在 Sam Newman 的 Monolith To Microservices 一书的第 5.9节局部优化VS.全局优化 中写道:

假设团队对自己的本地决策负有更多的责任,团队或许会拥有他们所管理的微服务的整个生命周期,那么我们需要考虑在本地决策与更多的全局指标之间做出平衡。

很难期望在微服务迁移的早期旅程中就发现这种问题,随着时间的推移,每个团队将越来越专注于自己的本地问题,并将基于本地问题来优化他们解决问题的方式。

2022 年春天的时候,我们遇到了评测效率的问题。这个时候,参与到“度知了”项目中的角色也越来越多,大家也都卯足了劲儿,在各自的工作范畴内做各种优化来提升评测效率。虽然会有改善,但总也无法满足业务方越来越多的评测需求。

这个时候,我们基于评测目标的全局视角对评测全流程各环节进行了详细的梳理,对不同的环节进行了归并、删减,对不同环节的时序进行了全局最优调整,最后在每个环节内部操作进行各种优化手段。在全局层面,我们增加了任务自动拆分,任务自动调度执行,结果自动聚合等能力;在算子内部,我们还通过优化算子来提升算子的计算效率……

在 2022 年的夏始春余之际,“度知了”从整体服务流程上变的面貌全新了,这个时候,整体的评测效率也有了非常大的突破,我们也解决了之前存在的评测效率的问题。

4.png

结构优化是核心

如果你问我,在效率提升的过程中,做的最成功的决策是什么?我想,这个答案会是:基于目标而进行的系统结构的调整。

我们现在都在讲“端到端”的优化,“端到端”的含义非常广泛:

  • 系统的层级架构
  • 系统的流程架构
  • 用户的全流程声明周期

有时候,我们确实是在做“端到端”优化,但是却是在既有的架构、流程下来进行的“端到端”优化,而这种层面的“端到端”优化,有时候收效甚微,就像我们在 2022 年春年遇到的困境那样。

“逆康威法则”的本质意味着,如果要实现质的飞跃,端到端优化首要的、也最核心的首先是系统结构的调整。首先要从基于目标,从全局视角对结构进行调整,然后在深入到每个具体环节中进行局部调整,最终才会实现“端到端”的最优解。

系统之美 这本书中,对系统作出如下的定义:

系统并不仅仅是一些事物的简单集合,而是一个由一组相互连接的要素构成的、能够实现某个目标的整体。

对于实现特定目标的系统而言,要素很重要,但是连接更为重要。结构决定性质,性质决定用途,就是这个样子。同样都是由 CCC 原子构成,石墨和钻石的结构不同决定了其性质存在非常大的差异。

7.png

图片中的结构模型由 molview 工具生成。

当基于效率目标对“度知了”系统进行了结构调整和优化之后,我们惊奇的发现,评测效率问题不但就这样迎刃而解了,而且整个系统看起来还更加紧凑。忽然间,想起了多年以前和同事闲聊,谈到为什么系统总是出问题时的场景:

我们的系统,其原型是一个“三角形”,但是随着时间的推移,用户需求变成了“水桶”。所以,这个“水桶”其实是用“三角形”不断地逼近的结果,而其本质上并不是“水桶”。无论我们在构成水桶的每块“三角形”上做任何的优化,最终还是会出现问题。

基于目标的拆解与整合

不知不觉,时针指向了 2022 年的秋天,北京的秋天是一年之中最美丽的季节。而此时,度知了也已经成为规模比较大的视频质量评测服务。

忽然有一天,我开始以后验视角回顾这整个过程。我发现,整个过程中,始终基于目标的自顶向下的拆解与自底向上将各种优化手段再次整合成为目标的正反双循环的思路,在整个度知了的成长历程上,发挥着举足轻重的作用。

5.png

贝佐斯在 2007 年致股东信 中介绍 Kindle 时写道:

任何事情,只要降低难度和减少阻力,便会遍地开花。

基于目标的自顶向下的拆解,可以使得目标难度最小化,只有这样优化才会成为可能,路径才会得以实现,否则就容易造成望而却步的窘境,尤其是当团队成员正在突破自己的认知负荷的前提下。

拆解是能力,整合是控制力,当所有事情拆解完毕后,我们需要确保所有的优化最终能够整合到一个具体的产品上,这有这样,使用这个产品的门槛才会降低。当整个过程的正、反双循环打通之后,这个事情自然而然也就成功了。

在整个拆、合的过程中,目标是其背后的最核心的关节点。早在 2020 年的时候,还没有明确 “视频质量评测产品化” 的目标,虽然那个时候,我们也在优化各种算法,但是最终也就是仅仅优化了而已。因此,我们始终在优化各种问题的层面转圈,最终又很难将所做的所有优化进行整合并阐述其价值。现在想想,那个时候还是很焦虑的:技术上确实有进步,但是说不清楚技术的价值。直到我们明确了目标之后,事情才变得好了起来,所有的优化都可以体现到“度知了”的产品上了。

6.png

从问题切入有利于解决眼下的事情,而基于目标的思维,可以避免被眼下的错综纷扰而迷惑。不识庐山真面目,只缘身在此山中,这是如此。有很多的时候,从更高一层的目标出发,当前的问题可能已经不是问题了。

我们已经走得太远,以至于忘记了为什么而出发。——《先知》,纪伯伦

我们过于自信,总认为我们的优化肯定是最完美的方案;同时我们又过份的忧虑,总担心如果采用新的方案会对现有业务带来非预期的影响。

我们即追求创新,又害怕承担创新可能带来的损失局面(创新总要付出代价),在自信与害怕的矛盾心理下,我们选择了一种比较折中的方案:试点。我们会先在一个小的、可控的范围内对优化进行试点,如果试点结果不好,那么这项优化就可以提前结束了;而如果试点结果很好,那接下来怎么办呢——“To do or not to do,that’s a question”。

面对一个庞杂的软件系统,如果想使用更高级的语言来重构这个系统,并验证重构的效果,我们会采取怎样的路径?我们可能会先对外围不重要的模块进行重构试点,以增强我们的信心。最终,我们会发现,多年以后,这个系统最核心的 20% 的部分分,依然还在使用着更古老的语言。

试点一直在路上,但未全面取而代之或者引发质的变革,这种现象我称之为——试点陷阱。

关于试点陷阱,整体而言,我遇到了如下几种情况:

  • 从不重要的模块启动新技术的试点,导致对于系统总体而言,新技术没有体现其优势。
  • 从不重要的项目启动新技术的试点,导致对于团队而言,新技术没有发挥其优势。
  • 在系统全流程的部分流程启动新技术试点,导致对于全流程而言,新的技术没有体现其优势。

对于数字化转型,麦肯锡的研究发现,大量制造企业在数字化转型初期的试点非常成功,但在全面推广并取得财务、运营和可持续绩效方面持续改善的过程中却困难重重,74% 的企业在启动数字化项目不久后就泥足深陷。

还好在“度知了”的发展过程中,我们没有踩到“试点陷阱”。这并不是我们不想踩“试点陷阱”,而是优化的紧迫性以及资源的限制并没有给我们留下“试点”的机会,我们必须全力以赴,所有的优化必须在下次的全流程评测中得以应用,以保证最终结果的高效和置信。

瞅准目标,不留后路,全力以赴,all-in,往往会有意想不到的收获。一旦我们有 Plan B,在前行的路上,一旦我们遇到风吹草动,我们就会不自然的想到 Plan B进而陷入“试点陷阱”,我们就会在纷繁错综的环境中错失机会。

先验与后验

时间在悄然间流逝,年华在匆匆中而过,不经意间,时针已经悄悄指向了 2023 年,机缘巧合,我的工作范围也在不断扩大,也慢慢学会了以后验的视角来审视自己工作的技巧。

最近,在刷抖音时,惊喜地收到一条关于介绍“运算放大器”的视频推送:​将“运算放大器”的输出和负输入相连接时,会产生非常美妙的特性曲线,而这个曲线也奠定了“运算放大器”在电子世界中的地位。

忽然在想:如果将后验的认知输入到先验作为一种负反馈闭环,那么打通正向、反向双循环之后,工作的事项岂不是可以像“运算放大器”那样更有价值?

于是,在最近的团队核心工作上,我和相关同学对这种先验、后验双向闭环的方式进行了实践,最终也发现确实这是一种非常有效的方式。

后来想想,这种先验、后验和“逆向倒推”也有一定的相似之处,“逆向倒推”让我们开启行程,而后验会让我们在行程中不断调整步伐和方向,以使得我们可以更好的达到终点。

先验是能力,后验是执行力。站在当下看未来,我们将如何行动,这需要强大的先验能力;而站在当下看过去,我们又有哪些得失,这些得失是否可以作用于未来,为我们前行做出指导,这需要强大的执行力。

8.png

道理纵有千千万万,实践总是一件非常难的事情。我们总也无法预知未来,因此更需要我们认准目标,以逆向工作的思路,乘着后验之风,在谨慎而又快速、不断调整的实践中创造未来,创造价值。

凡是过往,皆为序章。今天,仍然是第一天。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK