移动开发者的冬天
# 前言
我父亲在中国电信工作,平日很关心我的工作情况,大到深圳的各种人才培养政策、户口迁移相关事项、公租房等的福利,再到互联网行业的发展趋势,小到工作上的一些项目,比如 顺丰大当家 这个项目,为了支持我们他特意走完一遍测试流程,买了一箱乌鸡蛋感受一下顺丰快递的实力,确实是隔日就完好无损地送到,但在 APP 上却出现了一些 BUG 并反馈给我。
我父亲就是一个如此爱我,支持我并呵护着我的人。
昨晚跟我父亲打了一通电话,又聊到了现在的工作前景,最后我父亲感到十分担忧,因为我觉得,移动开发者的冬天真的来了。
# 背景
几年前,客户端开发热门得一塌糊涂,以至于在国内涌出一大片培训班。以 iOS 为例,花个1、2万去培训班学大个半年,出来后在面试时就可以声称自己已有2-3年开发经验并且能蒙混过关,月薪拿个1W5毫无压力。这导致近几年国内客户端开发者数量非常多,且能力参差不齐。
而现在放在市场上看,先不说以培训班出身的水平即 UI 拖拽师已经很难找到工作,而一些稍有资历的客户端开发者也已经感觉到市场已经明显饱和。
这里的原因有很多,列几个我认为比较关键的:
- 开发的门槛越来越低,得益于日渐完善的开发套件以及学习资料
- 供大于求,App 创业潮的冷却导致岗位减少
- 大前端的概念推出,以 Weex 和 React Native 为主导的多端复用以及 Hybrid 架构的流行
# 开发的门槛越来越低
在 iOS 最火热的年代的开始,大约是在2013到2014年之间吧。那时候,客户端其实大部分处于一个白板期,开发资料的欠缺,大家还是再以 PC Web 的模式去玩客户端。在那个时候,作为纯 UI 开发是很容易找工作的,甚至不需要了解底层、操作系统、网络等等,只要你能快速画上 UI,满足业务需求迭代,就能很轻易收割到 Offer。
再后来,我们慢慢发现曾经只有“大神”才会的 hook、编译原理、逆向等等都成了标配,这就是技术领域成熟所带来的结果。在 Facebook 的主导下,客户端玩起了 Three20,Hybrid 模式架构由此产生。同时慢慢衍生出 WaxPatch、JSPatch 等等高难度的框架。在 H5 流行的年代,由 PhoneGap、AppCan 等等一些跨平台或者说比较综合的解决方案冒出,但是使用的范围不大,最终被现在的 Weex / RN 所取代。
在这样的背景下,国内 App 巨头开始形成规模,手淘、微信、支付宝、百度等等会因为业务的场景不同出现客户端的中间件,可以说2015年是客户端最光鲜的一年,因为那一年客户端的技术成长是最快的。
客户端的开发成熟了,学习资料也多了,公司对人才的要求也高了。
# 供大于求
在过去几年的时间里,互联网界掀起过 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 关于图形学的知识要学多久,这些都是问题。
# 正能量
其实也不是如此悲观,做程序做一定时间后,都会有一个感觉,就是语言只是工具,不同的语言解决相同的问题基本还是类似的套路,融会贯通。
移动开发者不懂前端、后台,反过来,做前端和后台的他们也不懂 iOS、Android。如果说移动开发的冬天来了,那么前端、后台早已经 N 年前就在冬天里冻僵了,但事实证明他们还是活下来了。
浪潮从 PC 到移动到现在 AI、ML、大数据、云计算等集群服务,谁站在浪尖上谁就火。90年代国企员工不吃香了,摇身一变成个体户照样吃香的喝辣的,人最大的本领就是适应环境。
举个例子,我们学校有一个移动互联专业的老师,叫赖红,现在教我们 Android,他以前是做塞班的,现在一样可以在这个行业贡献自己的一份力量。
(什么?没听过塞班?symbianOS,是诺基亚上运行的操作系统。) (什么?没听说过诺基亚?...)
# 未来
未来一定属于 T 型人才的,何为 T 型人才?
即在某一领域有很强的能力,并且有技术广度。
怎么理解这句话,其实就是偏向于客户端的全栈。不,应该说偏向于大前端的全栈,光会客户端是没用的。
而我的选择是,保持客户端深度的同时,摸索前端,着重在后端领域深入下去。任何一个时代都不会缺后端的,并且基础技术方案的迭代是很缓慢的。最起码,学完 SSH 或者 SSM 三大框架后,了解一些设计(比如不是所有项目都要要 IOC,hadoop 就是例外),蹭蹭热点(虚拟机 & docker)。如果客户端真的没落了,也能转向后端。
# 总结
文章中的见解完全是我的个人想法,并非故意挑起党派之争,我好像也没有说哪个语言是世界上最好的语言吧,嘿嘿。如果有思想上的碰撞,也无所谓,当我没说。
不管你接不接受,移动开发者的冬天确实已经来了。对于大部分3年以内工作经验的开发者而言,还有谁以为跳槽能涨工资呢,没有3-5年的工作经验,没有一身的装逼特技,谁会要你?
端正心态,跟随时代的潮流不断学习,提升自己,抓住机遇,迎接挑战,选定扩展的方向,争取做 T 型人才,学会思考,才是有未来的开发者。