03 终端技术:浅谈小程序与客户端的发展 因为玉伯在前端领域的名气,我们原本计划请教很多关于前端的问题,但玉伯表示他其实可以多聊聊小程序和客户端的内容,目前这也是他比较关注的话题。除了蚂蚁的前端团队,他目前也在带领小程序团队,因此这一节,来看看玉伯对小程序及客户端发展的一些看法吧。

极客时间:很多媒体和工程师对一些技术名词的解读都不一样,包括不同企业的讲法也不太一样,比如终端、客户端、桌面端、跨端、大前端它们的概念,你是怎么理解的?蚂蚁的标准是什么?

玉伯:确实业界有各种解释,蚂蚁这里,客户端比较清楚,客户端就是 iOS 加 Android,也可以叫移动端。有时候也会把 iPad 端也当成客户端,不过 iPad 端现在也不怎么提了,兼容一下就好了。这里有另外一个词叫做桌面端,桌面端目前更多指的是 PC 桌面端。

终端就等于客户端 + 前端 + 小程序 + IoT 等等技术,有时间我们也会用大终端来称呼。终端其实英文名字有两个翻译,一个是比较挫的翻译 Terminal,比较复古。还有一个更好的翻译是 Device(设备),也就是设备端。PC 端就是 PC 设备端,手机端就是手机设备端,IoT 端就是 IoT 设备端。从硬件角度看,刚才说的 PC 端、手机端、IoT 端、iPad 端等,是各种设备端。

从技术角度来看,我刚才说的终端技术主要等于客户端技术 + 前端技术 + 小程序技术,也包括 IoT 端的技术,以及 VR、AR 等技术。终端很多时候就简称端,在目前我们常说的语境里面,端就是终端。

但遇到“端到端”这个概念大家一定要谨慎,谈到端到端的时候,一定要搞清楚是哪个端到哪个端。PC 端到手机端是一种端到端,但我们有时候说用户界面端到数据库这一端,或者接口端,也叫端到端。它的含义太泛了。因此当你听到“端到端”的时候,可能什么都没听到。

大前端这个概念其实很好玩,经常会把前端团队和客户端团队放一起,然后叫大前端。还有一个词叫做泛前端,很多中小企业都是前端跟客户端在一个团队,这个团队就叫大前端团队或者泛前端团队。目前泛前端也不怎么提了,我个人也不太喜欢大前端这个词。蚂蚁这边,我们并不叫大前端,而是统一叫做终端,是前端加客户端一起融合成为了终端技术,是大终端的概念。

前端还常提的一个词是前端工程化。工程化的本质就一句话:让一群人做好一堆事。前端工程化就是前端基础设施层,会提供一些工具和平台,然后让前端同学基于这些平台能更好地协同工作,这就是工程化。

极客时间:现在你更多会关注小程序和客户端,你觉得客户端、小程序技术重要性在哪里?

玉伯:回到蚂蚁侧,虽然前端本身的创新也还在继续,但真的要往前突破,做下一代技术的创新,这跟客户端、小程序、浏览器内核等技术是息息相关的。

无论在 PC 时代还是移动时代,前端的代码都要有一个运行容器,在 PC 时代这个容器就是浏览器,那个时候的前端代码运行容器都是由国外公司提供的,比如 Chrome、IE、Firefox 全是国外的公司在掌握。然后发展到小程序这个阶段,变成我们逐步有机会提升更多可控性。

小程序和客户端技术对于整个终端来说最大的价值点是它能拓展技术的大量可能性。国产化和自主可控是中国软件发展的一个重要方向。如果我们能够聚焦投入一些资源,基于开源项目,是有机会去做出一些关键基础技术的。

极客时间:从产品和技术两个方面来说,你是怎么理解小程序的?从大家的视角看,它首先是一个产品。

玉伯:目前业界谈的小程序,一般是指微信小程序和支付宝小程序。回到小程序的语境,小程序首先是块业务。比如说支付宝小程序,是基于支付宝小程序技术的生态开放业务。从技术视角看支付宝,支付宝的技术本质是一个 SaaS 服务平台,通过小程序这个载体,提供各种服务。

支付宝上的数字生活服务非常丰富:水电燃气缴费、市民中心、线下支付、公共出行等等,有大量是三方的 ISV(独立软件服务商)提供的。这些服务在支付宝上的载体都是小程序,所以小程序首先是一块业务。

也因为有小程序,支付宝才真正能做到生态开放。别人开发的小程序,能放在支付宝上跑,这就是支付宝的开放性。从技术视角看,小程序是生态开放的一个最好的技术和业务载体。目前中国是走在世界前沿的。这是小程序作为业务的理解。

回到技术侧去理解小程序技术,要回到整个软件的发展史去看。上个世纪 90 年代很多软件是 C/S 架构,现在用的很多软件比如 Photoshop、Sketch、Office 这些都是 C/S 的。然后到了互联网时代,互联网的前十年开始用大量 B/S 架构,典型的比如淘宝, PC 互联网的时候并不需要装载一个淘宝的软件,你只要打开浏览器访问“taobao.com”就好,浏览器加服务端就能搞定。到移动互联网时代,B/S 架构又往前进化到移动 App,这时候淘宝购物大家也不去网站了,而是用手机淘宝。

从 App 再往前演进是什么?在中国就是小程序。目前航母级的应用,无论是微信还是支付宝,其实都希望自己的 App 里还能够跑 App,App 里面跑的 App 就叫小程序。

极客时间:国外在小程序这块的尝试你有关注么?

玉伯:小程序在国外其实目前没有怎么起来,因为它缺少航母级的应用,Facebook 其实有机会,但是目前看起来也没有搞成。国外更多是走向 PWA(Progressive Web Apps,渐进式 WebApp),PWA比较适合海外的应用形态,没有我们做得这么极致,一定程度上微信和支付宝是走在世界前列的。

但是小程序的下一代是什么?我自己的答案,真正的下一代可能是微应用。其实一个公司要开发一个小程序,再怎么节省成本,如果想要好用,还是得花费几十万甚至上百万的。是否能够把小程序的研发成本降低到你只要写一篇文档就可以了?这是有机会的,叫“Document as an App,文档即应用”,我们也在探索。像低代码的本质,也是降低软件研发成本。这些演进的核心都是为了降低成本,同时降低门槛,能让技术普惠。

极客时间:所以现在做小程序开发还是很有前途的。

玉伯:很有前途,也是趋势使然。我前面说了前端价值是降本增效,小程序技术本身的核心也是降本增效,它不光能够降低整个业务移动化或者业务应用化的成本,同时在数字化转型升级的浪潮里,也非常需要小程序。开发一个小程序和开发一个网站应用相比,小程序的成本能更低同时更方便。

为什么要有小程序,要搞低代码,甚至无代码,很大程度上是因为整个软件化或者数字化的大趋势非常明显,在中国有大量中小企业都需要把业务线上化,但这过程中程序员又是有限的。中国的程序员加起来不到 1000 万,真的要做数字化,只用写代码的方式去实现的话,可能至少需要 5000 万甚至更多程序员。这几千万的差距,意味着需要通过一些方法一方面让大家快速上手,一方面继续降本增效。小程序的核心优势是便捷、快捷,我感觉小程序的数量只会越来越多。

极客时间:现在大家再去做 App,是不是已经不是个很好的选择了,因为用户不太喜欢去装更多的 App。

玉伯:这也是最近几年比较明显的趋势,一方面 App 数量会逐步收敛,但也要看行业,不少行业还是有做 App 的需求。比如说在金融行业,在蚂蚁有个产品还卖得挺好的,叫 mPaaS。mPaaS 就是一个移动开发平台。基于 mPaaS 可以快速开发一个独立的 App。我最开始知道这个东西居然卖得很好,我也挺惊讶的。

但后来我发现确实还有好多金融机构、银行有很强的做自己独立 App 的需求,这涉及用户心智问题,App 可以给用户一种正规平台的感觉,给人安全感,比如转账操作在小程序很多人觉得不放心,毕竟大家对 App 的信任感也培养了好多年。除了金融行业之外,还有一个行业也对 App 有强需求,那就是偏工具性质的服务,如果做真正的工具,小程序的体验很难像一个独立的 App 做得那样好。

刚刚说小程序可以降本增效,除此之外它还适合做用户增长,因为微信是一个海量的用户池,所以现在流行很多私域运营,微信的公众号、直播、视频号、朋友圈都是它的私域工具,都去微信薅用户,把用户圈过来之后,他们还是想往自己的平台上引流,把小程序作为增长工具。独立 App 依旧会长期存在,至少在未来 5-10 年依旧会有不少需求量。

极客时间:当时咱们聊到阿里”All in 无线”的时候,有人选择转 iOS,有人选择去做创新产品,也有人留下。现在你可以说谁的选择更好吗?

玉伯:很想说都一样,这样显得比较正确。认真来看,我觉得比较好的选择,还是坚持做前端的和去做产品的。当时转 iOS 的,从整体发展来看,后续不少同学遇到了一些瓶颈。接触过不少客户端同学,会发现客户端在当下对于职业的迷茫和困惑会比前端大多了。

前几年蚂蚁这边有一批客户端转回前端,包括淘宝那边也是一样。这还是需求问题,目前前端需求量远大于客户端,而这个局面也是两个技术栈不同带来的。前端技术栈和客户端技术栈相比,最大的特点就是快和灵活。客户端写一个东西是很慢的,客户端的变更也很慢,但前端分分钟能给你做个页面出来。打个比方,目前支付宝这边客户端发版应该算快的,但再快也是周级别的,前端可以做到小时级别。

互联网对速度的要求,以及对可控性灵活性的要求,使得前端技术栈在人机交互层比客户端更受欢迎,到现在为止这个趋势都还在演进。客户端更多下沉做容器、网络等基础技术。

前端的快是研发效能快,但是客户端也有核心竞争力,就是性能快。目前会在对性能真正有要求的产品中才会采用客户端技术,比如支付宝首页,以及扫一扫、收付款、出行、卡包等核心模块,我们叫四大金刚。这四大金刚里,有很多动态化需求,也是用大前端技术栈去做的。

快速灵活,这是一个很大的技术趋势。前端的灵活,印证了在前端圈很有名的一句话,“凡是能用 JavaScript 编写的应用,迟早都会用 JavaScript 编写”,从我入行以来到现在,这句话还在发挥作用。

极客时间:现在客户端工程师遇到的困境也比较明显,你觉得现在这一批人应该往哪个方向去发展呢?

玉伯:我目前看到的现状是,客户端有三拨人在往不同的方向发展。有一拨转向了前端,都是写代码的,其实让自己多一门技能,学前端去做业务,也是一个不错的选择,就跟阿里当时“无线 All in”的时候,很多前端转 iOS 一样。

还有一拨人目前在做一些对性能要求很高的业务。比如说支付宝扫一扫,扫一扫如果用前端去做,体验永远不会有客户端做这么好的。所以这时候客户端好好地去做扫一扫的业务价值是很大的,挑战也很高。对性能要求很高的业务是客户端的第二条路。

第三个方向,其实是往整个终端的基础技术走,比如做小程序的容器、下面的网络,做端智能、容器等方向,其实这块有很大发展空间,需要高精尖的人才不断去做深做厚。

真正从技术深度,从纯粹狭义的技术角度来讲,客户端技术深度其实比前端要大。目前我们也在鼓励前端工程师,如果他还处于一个爱学习的阶段,那就应该去学客户端技术,这样他有更宏观的视野。

极客时间:曾经你也说过前端的天花板低,现在你对所谓的天花板问题怎么看?无论是新人选工作方向,还是换工作方向,都会考虑五年、十年的发展前景,很多从技术转到业务的应该也会这么考虑。

玉伯:有时候这是一种认知偏差,因为人是在变的啊。大家很多时候讨论天花板的话题,其实在讨论人的发展,不是讨论某个职业的发展。因为职业的发展要结合人来看,很多时候你是在假设一个人一辈子从事某一个职业,这肯定是非常少见的。

之前大家一直说前端的天花板比后端低,谈到三年、五年甚至到十年的某个职业的发展速度,或者说哪个职业天花板更高,背后只有一个因素,是需求。供大于求就发展慢,供不应求就发展快。如果什么时候企业说不缺前端了,那就可以不做前端了。但是实际经验告诉我,从 2008 年,一直到目前为止,都是缺前端的。还没有哪个团队说前端会富裕。甚至之前我通过一些数据,能够判断公司哪块业务做得好。当某个业务嚷着叫着缺前端的时候,这块业务是很不错的。但当某个业务我给他推简历,他不要的时候,那这个业务可能增长遇到了点问题,或者它才刚起步。

小结时刻

小程序和客户端技术对于整个终端来说最大的价值点是拓展技术的可能性,小程序降本增效的价值、开放平台价值,以及与航母级应用的连接关系,使得投身做小程序的人越来越多,这也是需求使然。客户端技术下沉,对客户端工程师提出更高的要求,但目前 App 还是强需求。就像玉伯建议前端同学也要学习客户端知识一样,时刻把握技术风向,具备学习能力的人,才是能走得更远的人。

另外,关于国内外小程序发展的话题,在极客时间曾有一篇文章也做过精彩的论述,在此推荐给你: Web开发:浏览器、小程序与PWA ,可以与本文结合,加深你的理解。

最后,你所感受到的客户端趋势、前端趋势是什么样的呢?欢迎在评论区发表想法。我们下一讲见!

参考资料

https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/%e8%b6%85%e7%ba%a7%e8%ae%bf%e8%b0%88%ef%bc%9a%e5%af%b9%e8%af%9d%e7%8e%89%e4%bc%af/03%20%e7%bb%88%e7%ab%af%e6%8a%80%e6%9c%af%ef%bc%9a%e6%b5%85%e8%b0%88%e5%b0%8f%e7%a8%8b%e5%ba%8f%e4%b8%8e%e5%ae%a2%e6%88%b7%e7%ab%af%e7%9a%84%e5%8f%91%e5%b1%95.md