几年前,客户端开发热门的一塌糊涂,以至于在国内涌出一大片培训班。以iOS为例,花个1、2万去培训班学大个半年,出来后在面试时就可以声称自己已有2-3年开发经验并且能蒙混过关,月薪拿个1W5毫无压力。这导致近几年国内客户端开发者数量非常多,且能力参差不齐。
而现在放在市场上看,先不说以培训班出身的水平即UI拖拽师已经很难找到工作,而一些稍有资历的客户端开发者也已经感觉到市场已经明显饱和。这里的原因有很多,列几个我认为比较关键的:
- 开发的门槛越来越低,得益于日渐完善的开发套件以及学习资料
- 供大于求,App创业潮的冷却导致岗位减少
- 大前端的概念推出,以Weex和React Native为主导的多端复用以及Hybrid架构的流行
开发的门槛越来越低
在iOS最火热的年代的开始,大约是在13到14年之间吧。那时候,客户端其实大部分处于一个白板期,开发资料的欠缺,大家还是再以PC Web的模式去玩客户端。在那个时候,作为纯UI开发是很容易找工作的,甚至不需要了解底层、操作系统、网络等等,只要你能快速画上UI,满足业务需求迭代,就能很轻易收割到Offer。再后来,我们慢慢发现曾经只有“大神”才会的hook、编译原理、逆向等等都成了标配,这就是技术领域成熟所带来的结果。在Facebook的主导下,客户端玩起了Three20,Hybrid模式架构由此产生。同时慢慢衍生出WaxPatch、JSPatch等等高难度的框架。在H5流行的年代,由PhoneGap、AppCan等等一些跨平台或者说比较综合的解决方案冒出,但是使用的范围不大,最终被现在的Weex/RN所取代。
在这样的背景下,国内App巨头开始形成规模,手淘、微信、支付宝、百度等等会因为业务的场景不同出现客户端的中间件,可以说15年是客户端最光鲜的一年,因为那一年客户端的技术成长是最快的。
客户端的开发成熟了,学习资料也多了,公司对人才的要求也高了。
供大于求
在过去几年的时间里,互联网界掀起过App创业流,几乎到了任何一个创业团队都会有自己的一个App的阶段。那时候股市也好,新三板上随处可见PPT概念公司。因为有钱,给客户端开发者开的工资也非常高,大家都涌向客户端开发。而现在是一个通货膨胀的年代,客户端需求大大减少。除非你真的有一技之长,否则将会淹没在广大的客户端开发者人群中。
大前端的出现
前端的框架变化实在是太快了,当你还活在JQuery的年代,了解着bootstrap时候,有人已经在玩AngularJS了,而更有人已经开始玩React了,再甚至已经出现Vue来结合AngularJS和React了。Weex和React Native的出现,已经足以动摇客户端开发的地位了。在这个年代,你说不懂点前端,怎么好意思说自己是客户端开发呢。那要了解的东西太多了,webpack你得懂吧?babel也要知道吧?MVVM databinding ES6 ES7 promise等等,讲真,脑子不太够用,而且我相信绝大多数客户端开发者对前端领域很陌生。
Weex和React Native在大公司的流行,必然有它的道理。热部署、跨平台都是优势,但最重要的是它们俩减少了客户端的重复工作,结果就是能让公司少招点客户端开发。
机器学习 & AR
也许你会说今年WWDC给客户端打了强力一针,机器学习+AR。不得不泼冷水,机器学习跟做普通的App有啥关系吗?AR也是同理,有多少App需要用的到?再说机器学习的学习成本有多大,AR关于图形学的知识要学多久,这些都是问题。
未来
未来一定属于T型人才的,何为T型人才?
即在某一领域有很强的能力,并且有技术广度。
怎么理解这句话,其实就是偏向于客户端的全栈。不,应该说偏向于大前端的全栈,光会客户端是没用的。
而我的选择是,保持客户端深度的同时,摸索前端,着重在后端领域深入下去。任何一个时代都不会缺后端的,并且基础技术方案的迭代是很缓慢的。最起码,学完SSH或者SSM三大框架后,了解一些设计(比如不是所有项目都要要ioc,hadoop就是例外),蹭蹭热点(虚拟机 & docker)。如果客户端真的没落了,也能转向后端。