为什么最近iOS开发岗位那么多(第一篇)
嗨,这里是逻辑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开发网友说自己买宝马的信息,但是找不到微博了,然后想问问有没有人有截图。
结果网友亲自出来回应。
最后有网友找到了截图。
不只是车,还有房子。
文章开头说过,准备用N篇文章来聊聊“iOS开发没人要了”的话题,既然是第一篇,那肯定就还有相关后续,今天咱们就先聊到这里啦。欲知后事如何,且待下回分解~
作者:everettjf
来源:客户端技术评论
为什么最近iOS开发岗位那么多(第一篇)相关推荐
- IOS开发学习之路--第一篇--TOM猫
当初刚出ipad的时候,tom猫是非常流行的,而如今比这个应用绚丽的软件比比皆是,但是这个是ios编程的基础,所以通过自身的学习来完成一个TOM也是挺有意义的. 项目目的: 1)更好的理解UIButt ...
- unity怪物攻击玩家减血_像素地牢开发(unity) 第一篇(并不是第一天)
像素地牢开发(unity) 第一篇(并不是第一天) 大二的时候就特别想制作独立游戏,每次逛b站刷到独立游戏制作的视频就十分羡慕,然鹅我却一直鸽着(别问,问就是刷视频,打王者),但我还是利用了一些空闲时 ...
- <Android开发> Android vold - 第一篇 vold前言简介
本系列主要介绍 Android vold,分为以下篇章 <Android开发> Android vold - 第一篇 vold前言简介 <Android开发> Android ...
- 2017秋季校园招聘iOS开发岗位面试题集锦
笔者参加了2017秋季不少的校招iOS岗位面试,下面我把这些面试题都贴出来和大家共勉: 一.搜狐快站 1.谈谈你做过的项目: 2.项目中最有成就感的部分: 3.倒计时如何实现?(NSTimer,还有其 ...
- 校园招聘iOS开发岗位面试题集锦(2017)
转发自: http://blog.csdn.net/chenyufeng1991/article/details/53472284#comments 一.搜狐快站 1.谈谈你做过的项目: 2.项目中 ...
- 记Booking.com iOS开发岗位线上笔试
今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为 ...
- iOS开发进阶教程【第一季小试牛刀】
2019独角兽企业重金招聘Python工程师标准>>> 一套关于iOS开发视频教程的进阶教程,主要讲解了iOS开发的基础内容:基本界面的创建.基本控件以及一个手把手的完成一个iOS小 ...
- iOS开发——网络使用技术OC篇网络爬虫-使用正则表达式抓取网络数据
网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...
- IOS开发高手课第三篇 App Auto Layout 是怎么进行自动布局的,性能如何?
03 | Auto Layout 是怎么进行自动布局的,性能如何? Auto Layout ,是苹果公司提供的一个基于约束布局,动态计算视图大小和位置的库,并且已经集成到了 Xcode 开发环境里. ...
- 软件腐化的七个特征之僵化性和脆弱性(设计模式原则的反面) (《敏捷软件开发》读书总结第一篇)
文章目录 前言 僵化性(Rigidity) 原文 我的理解 脆弱性(Fragility) 原文 我的理解 前言 最近读Robert C. Martin(Bob大叔)的书<敏捷软件开发>,准 ...
最新文章
- LeetCode简单题之作为子字符串出现在单词中的字符串数目
- 加载BeanFactory
- 生成器与迭代器的区别
- 编译程序加不加 -lpthread 的区别【转】
- js中while死循环语句_Java系列教程day06——循环语句
- == 和 is 的区别
- LeetCode 431. 将 N 叉树编码为二叉树(递归/层序)
- 一个vue请求接口渲染页面的例子
- 计算机分级无法度量视频,雨林木风win7旗舰版电脑评分时出现无法度量视频播放性能...
- 面试题56 - I. 数组中数字出现的次数
- android的oomkiller_[Android Memory] Linux下malloc函数和OOM Killer
- 蓝屏dump分析教程,附分析工具WinDbg(x86 x64)6.12.0002.633下载
- 解决There is no getter for property named ‘organization_id‘ in的报错
- 智慧天气系统 - 可视化大屏(Echarts)管理系统(HTTP(S)协议)物联网平台(MQTT协议)
- 科技爱好者周刊(第 216 期):极简主义的胜利
- 深入解析网页防篡改技术
- 微信小程序开发实战(网络请求设置)
- Attention-GAN
- html如何让图片不失真,图片放大不失真的几种方法
- 第12集 副词及其他
热门文章
- C语言3sum,leetcode题目
- 计算机C盘怎么转到D盘,电脑c盘格式化会怎样_电脑c盘怎么移到d盘
- 行政组织理论-阶段测评4
- SpringBoot入门(四)Service、Dao
- 4.(css3布局)使用flex布局携程网首页案例
- 用HTML加css做成的新年特效,使用css3和html给网站添加上春节灯笼特效的源码分享...
- 【离散数学】单射、满射与双射
- java获取时分秒毫秒_Calendar获取年月日时分秒毫秒
- 计算机用word做海报,【2人回答】电脑Word怎么做海报?-3D溜溜网
- 恶意软件家族分类 单模型方案总结