参加GMTC大会,第一个议题就是《移动开发的未来展望》,有些启发整理记录一下。
编程神作《代码大全》提过,在技术浪潮中找到自己的位置。编程技术的更迭越来越快,当进行技术选择时,思考当前的技术方向和自己应该要处的位置很有必要。古语云:知而慎行,君子不立于危墙之下,焉可等闲视之。
移动开发大浪已退
在2014年,如果你问有哪些工作门槛低,前景好?
|
|
|
|
|
|
答案除了这个之外,
多半有人还会告诉你,做iOS开发啊。培训三个月,月薪上万轻轻松,就业率高达百分百。那年夏天史称资本盛夏,移动创业大潮来袭,相关开发人员大量缺口。于是一大批人就接了拐:
我不知道TCP/IP,我不懂多线程,我不知道Core Animation,不懂runtime,但是我能一天做五个界面,两周能写一个app,我知道我是个好程序员。
去年年底开始资本退去,大量商业模式只存在于ppt中的创业公司纷纷倒闭。大量民谣程序员失业了。如果你稍微查下现在iOS一个岗位能收到多少封简历你就知道了。举个例子,一个在上海的普通公司(不是互联网公司)五天就能收到超过600封的iOS简历。我只能说:要啥自行车?
但是即便如此,优秀的工程师依然难觅。
潮水退去,优胜劣汰,在移动互联网领域,可以预见,靠谱的公司比例越来越大,半吊子的民谣程序员只能听着iphone5中传来的音乐:你在南方的艳阳里大雪纷飞。
如果只是觉得薪水高,自己找不到工作才来做iOS开发的人,我只能说,醒醒吧,快点转行吧。真没你什么事了。如果你还是带着投机心理,要学也得学PHP啊。
swift
其实这事吧,苹果爸爸一句话的事。
好消息是这事最近不会发生。
我在这里抛出一个问题:苹果为什么要在已经有一个成熟的语言,成熟的编译器,成熟的OS后顶着风险花大量精力开发一门新语言?
苹果这种纯商业公司可没有情怀。在swift之前,chris已经完成了LLVM,对编译器可谓炉火纯青,我猜测他在完成LLVM之时,拍桌子后怒喊了一句:还有谁!
结果就是你所知道的事,动态语言的瓶颈就在那。就算你骨骼再清奇,还是要按照基本法嘛。于是swift应运而生。
如果你明白苹果对于swift的野心,我想你就不会对它熟视无睹了。
再谈下我所知道的一些现状。几个月前在上海某业余居委会组织的swift会议上我和一些同行进行了交流。基本都已经开始准备或正在转向swift开发。从利益上讲,swfit是一门比oc更优秀的语言,苹果也在不遗余力的推广它。如果你不用支持iOS7,同事不是那种弱鸡民谣程序员,几乎没有理由拒绝swift。你的疑问只是我该什么时候转。
wwdc前曾放过消息会ABI稳定,结果现在3.0中依然没有稳定。但是这次连foundation都和OC彻底分离了。我认为ABI稳定是一个重要的标志,只有ABI稳定第三方的Lib才能毫无压力的使用swift,否则大厂为了稳定只能隔岸观火。
不过我觉得怎么看现在上swift都是一个合适的时机。
但是电商类app除外。swift摒弃了oc的runtime,动态化对电商app中太重要了。
动态化&hybrid
动态化这个词就跟互联网+、H5、互联网思维一样都是国内特色名词,最初是为了让外行一听感觉很专业的样子,其实就是。。。
先说说静态指什么。我们app一个版本放出去,这个页面按照设计图,代码写好就是这个样子。一动不动,稳如泰山,这就是静态。如果ceo下午朝你走来说,我有一个需求,下个月搞一个大新闻,首页改成酱紫酱紫,下下个月投资人儿子两周岁,我们再搞个活动,改成酱紫酱紫。需求一动,我们就乱动,只能打开xcode改来改去。
如果说开发时间,还可以通过加人解决,但是版本审核的时间和有多少用户能够升级到最新的版本这就不可控了。
除非你像某家公司,周流失率接近百分百,这样后台统计一看,百分百的用户都是新版本啊,一片盛世。
所以动态化的需求是很明显的:
- 运营有需求,竞争对手发了个活动送5块,我们app里马上来个送6块的。
- 产品有需求,有个功能需要移除(某宝偷偷开启摄像头拍照片),这个功能就关了。
- growth也有需求,这个页面来个A\\B Test。
- 或者,我就想每次改了用户马上就能看到,不要更新app。
数年前有家网络巨头facebook,把宝全押在了html5上。只需要写一份代码(丝毫不提浏览器兼容真是骗死新手),效率也高,放一个webview,要啥有啥,包括自行车。facebook phone失败的轰轰烈烈,facebook那个时期的app也是惨不忍睹。
对于这种先烈行为,我们鼓励,但是千万别跟随!
所以这个需求是毋庸置疑的,除非你是个小而美,产品不会靠灵感驱动的、稳定的要死的app,譬如Quora,每次更新日志就说提高了稳定性,万年不知道改了什么地方。
看下现在业内的几个动态化方案:fb的 react native、阿里的 weex 、阿里的 luaview、甚至腾讯的iOS热修复jspatch作者也表示在考虑提供一个动态化方案。当然了还有很多我不知道死活的各种hybrid方案(PhoneGap死了吗?)。至于这些方案或者将来一段时间里将涌现的其他方案,大家可以根据自己的需求关注。
但是对于开发者、一个有眼光的开发者而言,你要知道这是一个很有发展潜力的领域。现在就开始准备起来吧。
相信不久以后,iOS面试题可能会出现这题:JavaScript语言精粹的封面是什么动物。
哎,和前端必有一战啊。
不可取代的native
如果过几年手机浏览器内核渲染效率极高,JavaScriptCore也没有任何性能问题,还需要native的代码吗?如果有不可取代的部分那是哪部分?
我能想到的是极致的交互和当前平台独有的功能比如today extension这种。
比如facebook为做出流畅动画的开源神库pop,根据cadisplaylink渲染,我不觉得会有人用js写这种代码。如果你写了这份代码安卓也用不了。因为总有些是针对当前平台的代码。
我也预见,随着靠功能获取用户的洪荒时代已过,app开始追求极致的用户体验,对于app的交互也有着更高的要求。然而CoreAnimation,UIBesizerPath能写好的人有几个?这也是一个应该关注的方向。
代码以外
coding是不是一个工程师的全部工作?
如果你觉得是我只能说你级别太低。
假设你不做管理,是一个纯研发组里的最强工程师,除了coding你依然有其他工作要做:你要review同事的代码,保证他们的代码达到你的标准。或者制定规范、架构执行,维护项目代码质量。
然而大部分人都不是有着天才天赋的人。跳出coding外,在公司里还可以怎样立身?邵震的演讲《mobile growth 的方法和实践》给出了一种新的可能:如果有一个团队负责优化app体验,提高用户留存转化率,这个人是工程师的优势最大。因为他最了解这个要被优化的app。
Objective-C的光明未来
欢迎关注我的微博:@没故事的卓同学
网友评论
我也是“民谣”,大学学点计算机,研究生做点小项目写了点C,然后就没然后了,我就化身成为民谣了。
然而在步入行业的那一刻到现在不算有竞争力,但是也不是随便一波浪就可以打死在沙滩上的。
不过,还是很喜欢你的文章。