之前负责移动端基础架构相关的工作,并做了一段时间 ToB 的移动技术框架输出,所以对移动端的现状以及移动端开发这个行业有一定了解,与大家分享下。
移动端开发时代已结束?
过去两年里,移动端开发一直在被唱衰,Objective-C 的语言热门度逐年下降,可参见 TIOBE 发布的排名。
2017~2018 开发语言排名变化 图片来源: TIOBE
Objective-C 做为开发 iOS 应用的最主要语言,排名在 3~5 年前时也是前五的存在,如今已基本位于十名开外,过去一年兜兜转转,进入了前十名。
Objective-C 兴起于乔帮主带来的 iPhone 所开启的移动端时代,随着移动端互联网的发展,对 App 的需求井喷,大公司需要从 PC 转型到移动端,创业公司也基本都是开发各种各样的 App,很容易就可以从投资人那里拿到钱,移动端开发人员也随着这波需求大潮迅速增长,培训班也出了大批移动端开发人员,基本会写点页面就可以拿到很不错的工资待遇。
几年过去了,这个市场已经拥有了大批移动端开发者,但由于钱开始紧张起来,投资人在投资时更加谨慎,这个市场由于缺乏热钱流入,开发一个 App 的成本居高不下,并且小程序时代的来临,造成了移动端开发者需求大量减少,由于供求关系的改变,移动端开发再不像之前几年那么火爆。
在风口上时,猪都能飞,但风口过去,当一个就业市场不再那么火爆时,等待的必然是弱者的淘汰。
从上面的语言排名可以看到 python 的迅速兴起,开发者都去哪里了呢?都去搞算法、人工智能、区块链等当前所认为的风口,这必然会造成这块市场开发人员的过剩,所以在可见的未来,必然也会经历移动端开发同样的阶段。
这让我想起来之前农民种地,什么赚钱种什么,直接导致了前一年挣钱,第二年就过剩,一地鸡毛。
前段时间今日头条发出来的希望应届生转换岗位的邮件引起了一波关注。
移动端开发这个市场目前不是合格的开发人员太多了,而是太少了,注意,我这里说的是合格的,现在招到一个能干活的移动端开发人员非常困难,面过的 90% 的开发者水平还是远远达不到能做事的水准,培训班出来的 95% 以上都达不到要求,这些开发者基本都是做业务,对底层的了解非常少,更有甚者完全没有意识到还需要关注底层,没有求知欲的开发者不是合格的开发者,必然会被时代所淘汰。
高水平的开发者薪资待遇依然很高,基本不受影响,那些冲着风口赚钱的开发者必然被会随着风的停下摔得很惨,所以不要随意追赶风口。
移动端时代的发展
当年在手机淘宝实习时,和一个高P聊怎么看移动端未来发展趋势,这个高P是经历过 PC 时代的,给了我下面的答案。
PC 时代时,百家争鸣,大家都做门户,最后剩下了四大门户,流量都被这几个门户网站吃掉。移动端时代也是如此,各种各样的 App 出现,而最终会出现几个超级 App,吃掉几乎所有的流量。
过去几年里大厂移动端的发展大致可以分为三个阶段。
2013年以前 单体应用
这个时期的应用主要是将 PC 上的功能搬到手机上,有些甚至就是 App 内部嵌入 WebView 容器,然后网页对移动端做适配。这个时期 App 的代码量和工程大小还比较小,通常一个工程,负责开发这个工程的人员也较少,这个时期衍生出来的主要是一些工具库之类,属于移动端的萌芽于初始阶段。
2013~2015年 平台型应用
这个时期是将上一代的应用进化成一个平台型应用,在一个 App 上承载多应用。
这几年是移动端开发人员幸福度最高的几年,随着苹果提供的 SDK 功能日益强大和稳定,而移动端技术上正处于一片蓝海中,有太多事情可做。
随着移动端应用上的业务迅速增长,开发人员越来越多,之前的单工程应用再也满足不了需求,所以诞生了各种各样模块化、服务化的解决方案,移动端也有了真正意义上的多模块开发框架。
为了解决协同开发的问题,提高多人开发效率,衍生出一系列的开发工具链以及打包、集成平台。
移动端的各种基础建设也在这个时期完成,例如网络、埋点、开关、热修复、ABTest、升级、灰度等一系列基础技术。
2015年至今 超级App
这个时期平台型应用进一步进化成为超级 App。作为超级 App 承载了大量的业务,更加强调动态化、生态,对 App 的性能、高可用等方面也提出了更高的要求。
这个时期也衍生出性能框架、动态化解决方案(RN、Weex、离线包)、高可用保障方案等。
小程序技术是在前面的基础上更进一步发展,现在微信、支付宝、百度、美团都有了自己的小程序,都希望将自己的 App 做成一个航空母舰,承载所有的业务,成为操作系统之上的操作系统。
从这三个时期的发展可以看出,对移动端开发人员水平的要求是不断变高,开发人员必须要掌握一定的底层技术,熟悉基础架构等,只甘心浮于表面的开发人员必然会被时代所抛弃。
ToC 到 ToB
随着人口红利的逐渐消失,流量逐渐见顶,移动端 App 在国内 ToC 这条路上已经很难像之前那样保持高速发展,所以才出现了国际化、科技赋能这样的战略,本质就是国内流量见顶,要维持高速发展,就必须谋求新的流量。
国际化不用多说,走向国际,继续扩大 App 的用户来增大 App 的流量,现在各大公司都在做这个事情,这里有很重要的一点是 App 在国际上直接做本地化是非常困难的,所以不能简单的把 App 搬到国外,这是另一个话题了,有机会再单独写。
在流量逐渐见顶的情况下,超级 App 希望能够掌控更多对流量占比,腾讯作为一个将流量视为最大战略,希望能够连接一切,在用小程序不断提升占据用户在手机上的时间,其余 App 正在与此做对抗,超级 App 在 ToC 上会进入僵持阶段。
而另一块战场则是 ToB,ToB 相对于 ToC 有什么区别呢,ToB 是面向公司、企事业单位等而非个人,有钱、消费能力强,且愿意消费,单子可以做到很大,虽然量没有 C 那么大,但是蛋糕可以做的很大,并且有一个很重要的特点是,当拿下了一个行业中的标杆时,会在这个行业迅速传开然后呈滚雪球般发展,因为任何一家单位都不希望在本行业中落后于别的单位。
我们所熟知的 ToB 的公司就是阿里云,提供各种各样的云服务,其他云服务公司也基本类似,但 90% 以上都是服务端的服务,所以在这个时候,出现移动端基础架构整套的解决方案。
目前主要有 mPaaS、EMAS、MobileLine、APICloud 以及各大 ISV 自主研发的解决方案。前三个都是大厂出品,质量有保障,都提供了移动端整套解决方案,使用这些解决方案时,只需要根据文档步骤即可在短时间内迅速搭建起具备大厂基础架构的 App,想象一下,只需要几个小时的时间,就可以拥有大厂多年研发的协同开发框架、网络、热修复、埋点、性能、H5 离线包等等各方面技术的 SDK 组合起来的框架,直接省掉了大量的移动端基础技术研发时间与人力。
所以未来会变成几个大块:
- 互联网大厂基本都自主研发
- 银行、铁路、航空、公交、政府等国企或事业单位外包自主研发或选用大厂的解决方案
- 小公司开发小程序或自主研发轻量级 App
所以 ToB 的市场主要面向没有自主开发能力但同时有足够预算的单位,这些单位有做自己 App 的强需求,之前大部分都是找外包,然后搭配一点自己的研发人员,做出来的产品惨不忍睹,90% 以上还处于大厂 4~5 年前的水准,在当今这个时代已经逐渐被淘汰,如果处于非垄断行业,会被淘汰的更迅速,如果选用已经成熟的解决方案,可以迅速将自身 App 的能力拉到一个非常高的水准,前面说的解决方案就是面向这批用户。
多年以前这块市场被外企和 ISV 所占据,随着大厂的解决方案横空出世,必然会冲击这个市场,将各大 App 的水平迅速提高,进一步惠及我等普通用户。
做 ToB 的市场远比 ToC 苦的多,需要一家一家谈,一家一家啃,一家一家的去落地。ToC 在这个时代新做出来的产品很难建立起壁垒,因为别的公司大部分功能都可以模仿,而线下不同,线下的事情越难做,那么建立起来的壁垒会越深厚,接触的 ISV 多了,就会知道大部分开发者其实是水平远远不够的,在大厂里待久了很容易会有大部分开发者水平会到一个基准线的错觉,所以 ToB 的产品要足够简单易用且功能强大。
ToB 的服务分为公有云和私有云:
- 公有云是指服务都部署在大厂的机房,所有数据和流量也会过去,这样成本也比较低
- 私有云是指服务都部署在使用的单位自己的机房,可以自己管控,数据也只在自己的机房,这样成本较高
公有云是目前大厂提供的主流方式,但国企、事业单位会有严格的要求,必须要使用私有云,这个是mPaaS 解决方案比较大的优势,支持私有云,并且有很多落地方案,EMAS 也支持私有云,但没有落地方案,其余则只有公有云解决方案,有没有落地是一个产品成熟的重要标志。
所以未来很大一部分低水平开发者会因为移动端整体解决方案的出现和推行而进一步被淘汰。
结语
后面会继续介绍一个完整的客户端基础架构体系有哪些部分,并对每部分做简析,欢迎拍砖。