在16年底我写过一篇谈未来的文章《2016年末闲谈iOS开发的未来》,当时刚参加完秋季的Qcon,整理了一下写了出来。到现在17年的春,过去四个月,社区里讨论气氛已经从《从入门到放弃》变成了《从入门到转行》、《从上架到上吊》。
你们这些人啊,中国有一句古话叫做富贵险中求。不要见风就是雨,这么来皮皮虾也遭不住。
移动开发市场很稳定
我们先从需求方看起。移动开发市场其实在过去半年里并没有太大的变化(就像股票一样,跌20%也算是正常的波动区间)。运营的朋友喜欢用“下半场”、“回归理性”这样的词来形容。
早期这个市场从无到有,赶上中国一批手机换代潮,大家都是野蛮成长。当一个市场在增长时,就算你做的不好,也可能因为市场总量在增加而活下来。又刚好赶上国家大力号召创业潮,给人一种到处是金子的感觉。我和扎克伯克之间只差一个点子,那我在沙县小吃吃混沌的时候有了个点子,就只差一个程序员了。
但是商业本来就是逐利的,万恶的资本主义先进性和我们社会主义当然不能比。所以这些没有商业模式的公司持续一段时间后终将退出舞台,就像前些年的跑马灯大功放山寨机一样,只是快了一些。
在16年里已经没有一个平台级的产品出现了。原本从web时代就有产品转移到app的就不列举了,比如优酷土豆。举几个例子:
- 饿了么在11年拿的A轮
- 滴滴在12年拿的A轮
- 斗鱼在14年底拿的A轮
直播是因为刚好刚上中国的网络升级,带宽明显变高,价格也变低。不过说起来秀场这种模式原来在pc也存在已久。
我只是想说明,移动市场已经不是风口了。什么样的市场才能算是风口呢?我觉得就像雷军说的,猪都能飞。显然,现在猪飞不起来了。不然你飞个我看看。
但是中国目前大约有7亿的智能手机用户,这个流量已经够大了。只是增长有限。这些用户的计算能力依然通过手机实现(有些计算可能在云端,手机只是一个连接设备)。如果你看清了这个事实就能明白现在行业处于健康发展状态。并不是像某些行业在坍塌式的衰退。
好像都找不到工作啊
有的时候遇到问题真的要先想清楚是你的问题,还是这个世界的问题。
我现在到拉勾上搜一下10-15k的职位,把职位数量列出来:
上海 | 北京 | 杭州 | |
---|---|---|---|
iOS | 104 | 152 | 70 |
Android | 156 | 252 | 89 |
PHP | 228 | 349 | 134 |
前端开发 | 500+ | 500+ | 268 |
Java | 500+ | 500+ | 500+ |
我觉得如果公司发展健康的话,10-15k的这部分程序员应该是中坚力量。有的公司可能业务简陋,堆几个5k程序员就够了,这种职位没有参考意义。
假设你在上海是个iOS程序员想换一个工作,你有104个职位可以选。只是没有几年前有好多个offer可以选,但是我觉得这也是一个可以接受的水准。当然还是没有前端和java吃香。当然如果你在三线城市选择做移动开发确实是情怀值max,我敬你是条汉子。
那么我如果是一个新手呢?这个行业正常发展,就肯定也会需要对应数量的新人,当然这个比例是多少我无法估计。只是原来可能及格线是60分,现在标准提高到了80分。只是需要过滤掉后面的人。那是不是变难了很多?
如果你只是为了就业你就找最容易就业的岗位啊,比如前端和Java,赚钱还考虑什么姿势喜好。
如果你就是想做移动开发,宁愿选择一条稍微难一点的路。移动开发就算入门难度提高了,IT行业的付出收入比还是比其他行业高。你可以看下同个公司同样待遇的运营或者其他岗位需要什么样的要求。你也可以参考下其他系的同学,比如新闻、外语要获得一个类似的工作需要付出多少努力。讲真他们毕业时也就是有个工作就满足了,哪里敢奢求什么皮皮虾。之前培训三个月就出来月薪就上万也这就是了赶上了多少年一遇的黄金时代,哪能每天都是黄金时代。就知足吧,程序员这个职业几乎不看出身,你可以是大专,可以是没考上大学,可以是三流本科,只要花足够多的时间去提高自己。你要是真像那些考研的人那么努力依然不用担心就业的问题。
正题:移动开发的大前端时代
现在我们来谈下app开发的趋势。
在过去的半年多了,最大的变化就是js to native(rn & weex)开始逐渐变的强势。印象中rn是15年10月左右的开放的安卓sdk。为什么要强调安卓的sdk呢?因为本来这个技术的主要优势就是提高开发效率,原来两个端的代码只需要写一份。热更新这件事对于大多数团队而言只是锦上添花,并不是选择这个技术的主要原因。
在经过一些团队的实践后,无论是RN和Weex在实际项目中的使用已经没有太大的风险。虽然还是有诸多不尽如人意的地方,但是现在看那些用了这些技术的公司,比如携程、去哪、QQ、阿里似乎都没有回头的意思。
摘录一些一线公司的招聘上面写的要求或加分项:
- 有React Native或者Weex的实战经验
- 掌握一些前端开发技术,HTML/JavaScript/CSS等
- 有ReactNative开发经验或者兴趣
- 负责iOS APP原生及跨平台相关的关键模块定义和开发
- 有跨平台开发经验和工具开发经验者优先
- 了解HTML5,JS相关技术者优先
虽然现在还只是一部分公司在尝试使用这个技术,然而我认为他们开始在主营业务大部分应用这个技术已经说明了这个技术体系的成熟,只是早期在最佳实践或者一些工具链会有所欠缺,但是这不会影响这个趋势,只是快慢而已。
有句话叫语言决定世界观,我把这个阶段称为大前端时代。
因为业务代码主要由js构成,而这部分一开始的动力来自传统前端。但是从大一点的角度看,离开了服务器和桌面都可以称为前端也没有不妥。不过看到有的公司称为“大无线”,这个叫法也好理解,不过猜测可能直接带“前端”会让原来一些native的开发者不适应所以这样称呼吧。
接着我们来思考一个问题:假设js to native是半壁江山,那么代码是前端写还是app程序员写?
这里要意识到一个点就是:JS Native不能完成native所有的功能。也许是性能的原因,也可以是其他一些客观的原因。比如逐帧动画,在RN体系下肯定就是要native,不然掉帧掉成狗。再比如一些第三方的sdk,可能人家就是写好的native给你,你需要native调用。
在大前端的时代下,一个合格的开发者显然是 js + iOS / Android 。可以是一个熟练的前端学习一点native,或者是native程序员会js。如果考虑到现在公司状况进行转型,一个合理的路线是app开发者开始学习以js为主要开发语言的开发状态。
如果此时公司业务没有增长保持现状,因为这套技术提升了开发效率,肯定要进行“人员优化”,淘汰掉不能适应新体系的程序员。其实就算按照劳动法的规定,赔偿N+1,假设你做了2年,也就是赔你3个月的工资。如果公司想省这笔钱,就会故意把你调到不相干的部门,比如你是iOS,就让你去后端写php,让你难受自己辞职或者以你后端工作绩效不合格逼走你。当然了。以我国管理者的智慧,想逼程序员走的方法肯定是很多。
当然比这更值得思考的是:从这里离开以后你又要从哪里开始呢?不过是更举步维艰。聪明的做法是顺着时代的浪潮。而不是固执的被拍死在沙滩上。
转...转...转行?
我有一句话不知当讲不当讲。。。
没有金刚钻别揽瓷器活。
我有一个朋友,有次一起吃饭我问他最近在干嘛。他说在看python,我说怎么想到看python了。他说看了python打算转行去做大数据或者机器学习,感觉这个比较来钱。其实很多盲目涌入的开发者就是这样的素质。我只想告诉你们,如果21天就能搞大数据了,那你怎么不去报个一周的速成培训班?原来培训iOS还要几个月呢。
多年前有一个畅销书,中文翻作《大数据时代》,英文名叫《big data》。
这本书写于2012年。其实摩尔定律已经算是失效了,回想一下桌面端的CPU的计算能力与五年前的2012年相比并没有太大的进步。作为开发人员请想一下,从大数据这个概念被社会理解,到我们开发中真正开始大规模的应用在身边的企业中(Map/Reduce 在 06 年被引入hadoop项目),中间过了多久?即便现在扣掉体量巨大的公司一般规模的公司里又需要几个大数据工程师?有iOS和安卓想凭几个视频几个21天上手转行拿高薪的多吗?
现在开始热的VR,大家都觉得是下一代计算平台,问题是,这个你等的到吗?你又怎么为一个没有统一技术标准和框架的平台做准备?如果你有这个能力,你根本就不用担心就业的问题。大多数人不具备这样的能力。
当然转行也可以是一个务实的选择,如果你愿意的话:离统一世界只差500年的JS,最好的语言php,还有:
欢迎关注我的微博:@没故事的卓同学