为什么最近iOS开发岗位那么多
准备用N篇文章随便聊一聊这个最近几年挺火的话题。
“iOS开发没人要了”,第一次看到这句话,还是从一个表情开始。
2014年年底,做了4年Windows开发的我,买Windows笔记本从来没舍得花费超过6000元的我,购买了第一个MacBookPro,花费1万多元,港版。那时虽然身居二线城市的我,都已经深刻感受到了“大众创业,万众创新”,并且付诸了行动,第二年就辞职,转入了iOS开发的行列。
2016年初,一个做了多年销售的同学(非计算机专业)联系我,说要做iOS开发,简单沟通交流后。同学就去参加了北京的一个培训机构,几个月后我们又电话了几次。据同学说,他面试了40多家公司,终于入职成为一家创业公司的iOS开发,薪水很满意,而他的leader和他是一个培训机构的。
现在看来,大概2014-2018年这几年是iOS开发最“红火”的时期,也正是“大众创新,万众创业“最红火的时期。
怎么定义客户端开发
有的公司把客户端开发和前端开发,统称为FE(前端开发)。本文不采用这种称呼。
本文的客户端开发主要是指iOS/Android,也包括macOS/Windows/Linux这些平台的软件开发。本文说的前端开发,是指使用vue/react这些来源于浏览器技术的开发。
下文也会提到“Native开发”,主要是指“非浏览器技术”开发,例如不使用JavaScript开发。通常Native开发,使用的语言主要是编译型,而不是解释型。例如iOS/macOS使用Objective C和Swift来开发,Android使用Java或Kotlin来开发。Windows使用C#来开发,Linux使用C++来开发。(当然C++所有平台都能开发)。Flutter使用Dart,也是Native开发。
关键变化
从我看来,有以下几个关键事件:
第一,2017年微信小程序发布。那一年创业公司减少的同时,业务流程为主的小公司又进一步选择了微信小程序,导致客户端需求减少。
第二,以美团、支付宝为栗子。公司内部都有自己研发的小程序框架。很多业务流程为主的功能,都直接使用了自家的小程序开发。这些巨型app为了优化包大小,也会要求一些对启动性能不敏感的、低访问量的业务,从Native代码重写为小程序代码。这也导致大公司内部的一部分业务部门的iOS/Android职位减少,一些客户端开发转去开发小程序。
第三,小程序的性能仍然赶不上Native代码。各大公司又都有自己的跨端框架,有自定义DSL的,用xml描述的,有用json描述的,有用typescript写的,最终界面使用Native代码来渲染。灵活性上赶不上小程序,但应对公司的的各种活动也足够了。这也导致一部分岗位不再需要iOS/Android开发,只需要FE即可。
第四,ReactNative和Flutter等跨端技术的流行。由于客户端的分裂(iOS和Android),多年来一直有不少人在追求跨端的路上不断的探索,并且满足了一部分场景的需求。这些场景下多数代码只需要使用跨度技术开发,少部分功能采用Native插件补充。
技术分布
然而,不管是小程序、ReactNative,还是Flutter,还是Native开发,都各有优缺点。都在某些场景下发挥各自的作用,互相补充。以下是从我理解的视角看到的技术分布情况。
第一,完全小程序实现。这些应用一般是业务为主,连接线下的应用。例如瑞幸咖啡。
第二,ReactNative或者Flutter实现为主,少量Native代码为辅助。这些应用一般是中小公司开发的业务类型为主的应用,更多是ToB产品。为了节省开发人力,大部分功能使用跨端技术开发。
第三,自定义DSL框架。简单说就是用xml或者json描述界面,Native代码来根据xml或json生成对应的界面。这些应用多数是大型的应用,多数以Feed流为主,DSL框架用来实现某一个“内容为主”的功能。例如美团首页、微博首页、支付宝首页等等。这些Feed流中的内容十分丰富,公司内部也会开发专有的运营平台,能很方便的配置下发不同的内容。例如:刷微博时经常看到的广告。这些DSL框架有很多公开发布过原理,或者开源的,例如美团的MTFlexbox发布过文章,但不开源。阿里的Tangram,开源。
第四,更高级的DSL框架。例如滴滴的变色龙 https://github.com/didi/chameleon ,或者最近阿里开源的北海 https://github.com/openkraken/kraken 。这些框架可以使用前端技术,开发出适应多平台的代码。
第五,Native为主,其他技术为辅助。这些应用的核心功能对性能有更高的要求,必须使用Native技术来开发。例如微信、淘宝、抖音等,都是Native实现核心功能。这些应用的核心功能使用Native开发,跨端技术、小程序、自定义DSL框架都在其中某个场景中发挥各自的优势。此外,多数独立开发者开发的应用也在这一类。这些小而美的应用多数具有某些平台的创新特性,很多需要使用到平台独有的能力。
岗位的需求
由此可见,iOS 的岗位需求就主要集中在的“第三四五”类型。这些巨型应用的核心功能是Native开发,每个应用都有自己独特的核心业务能力。微信的聊天、抖音的视频,只能使用Native技术开发来保证良好的性能和体验。“第三“和”第四“的DSL框架需要Native开发人员开发。”第五“的核心业务场景需要Native开发人员开发。
巨型应用伴随着巨型的公司,这些公司发展越来越大,就需要更多业务承载到应用中,更多的承载能力就需要更细致的Native框架开发工作,更细致的框架开发工作就需要更多优秀的Native开发人员。
而独立开发者就是一个更有趣的需求了。很多有趣的创新来自独立开发者。每年WWDC后的新系统的各种新特性都会被独立开发者们各种玩耍,各种新奇的应用出现一波爆发。对我看来,这里是Native开发最有趣的地方。
当然独立开发者毕竟还是少一些,或者不能提供太多岗位。我们还是聊聊大公司里的Native开发分布。
第一,业务功能开发,包括界面开发。产品经理提出了需求,设计师给出了原型,开发需要实现。这是最基础的开发工作,也是Native开发中最多的,也是最重要的。一个公司的创新想法到最终落地,赶超或甩开竞争对手的主要动力就是这里。聊到这里,有一部分人就开始出现“鄙视链”的思想了,觉得界面开发没技术含量。我对这种观点是坚决反对的。首先界面开发是很难的,各种VIPER、MVC、MVVM等模式都是为了处理界面开发的复杂度,优秀的界面是很难开发出来的。界面开发中更有动画这个方向,能准确、高性能的展示出设计师给出的动效,更是需要精心的开发。
第二,特定领域的功能开发。这个特定领域是指音视频、直播、语音通讯,也包括上面提到的DSL框架开发。这里多数是跨端的技术,多数情况下有很多C++开发的代码。
有哪些招聘
(1)首先看一些通用的招聘网站,boss直聘上有大量的iOS招聘需求。
https://www.zhipin.com/job_detail/?query=iOS&city=101010100&industry=&position=
(此处省去截图)
(2)脉脉App上几乎每天每刻都能看到各种内推iOS岗位的信息
之前遇到过一个脉脉上要转岗的,结果很多人都说有hc。
仅截图了两个屏幕,还有很多条回复~
(3)曾经网友们也汇总过一个岗位列表,可以访问 https://yourenyao.app 查看。
(此处仅截图一个职位)
能赚钱吗
当然能,我认识的太多了,今天我们先“认真而又娱乐”的看一下下面的信息。后面的文章我们再详细聊下iOS开发赚钱这个话题。
曾经记得微博刷到过一位知名iOS开发网友说自己买宝马的信息,但是找不到微博了,然后想问问有没有人有截图。
结果网友亲自出来回应。
最后有网友找到了截图。
不只是车,还有房子。