嗨,这里是逻辑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开发岗位那么多(第一篇)相关推荐

  1. IOS开发学习之路--第一篇--TOM猫

    当初刚出ipad的时候,tom猫是非常流行的,而如今比这个应用绚丽的软件比比皆是,但是这个是ios编程的基础,所以通过自身的学习来完成一个TOM也是挺有意义的. 项目目的: 1)更好的理解UIButt ...

  2. unity怪物攻击玩家减血_像素地牢开发(unity) 第一篇(并不是第一天)

    像素地牢开发(unity) 第一篇(并不是第一天) 大二的时候就特别想制作独立游戏,每次逛b站刷到独立游戏制作的视频就十分羡慕,然鹅我却一直鸽着(别问,问就是刷视频,打王者),但我还是利用了一些空闲时 ...

  3. <Android开发> Android vold - 第一篇 vold前言简介

    本系列主要介绍 Android vold,分为以下篇章 <Android开发> Android vold - 第一篇 vold前言简介 <Android开发> Android ...

  4. 2017秋季校园招聘iOS开发岗位面试题集锦

    笔者参加了2017秋季不少的校招iOS岗位面试,下面我把这些面试题都贴出来和大家共勉: 一.搜狐快站 1.谈谈你做过的项目: 2.项目中最有成就感的部分: 3.倒计时如何实现?(NSTimer,还有其 ...

  5. 校园招聘iOS开发岗位面试题集锦(2017)

    转发自:  http://blog.csdn.net/chenyufeng1991/article/details/53472284#comments 一.搜狐快站 1.谈谈你做过的项目: 2.项目中 ...

  6. 记Booking.com iOS开发岗位线上笔试

    今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为 ...

  7. iOS开发进阶教程【第一季小试牛刀】

    2019独角兽企业重金招聘Python工程师标准>>> 一套关于iOS开发视频教程的进阶教程,主要讲解了iOS开发的基础内容:基本界面的创建.基本控件以及一个手把手的完成一个iOS小 ...

  8. iOS开发——网络使用技术OC篇网络爬虫-使用正则表达式抓取网络数据

    网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...

  9. IOS开发高手课第三篇 App Auto Layout 是怎么进行自动布局的,性能如何?

    03 | Auto Layout 是怎么进行自动布局的,性能如何? Auto Layout ,是苹果公司提供的一个基于约束布局,动态计算视图大小和位置的库,并且已经集成到了 Xcode 开发环境里. ...

  10. 软件腐化的七个特征之僵化性和脆弱性(设计模式原则的反面) (《敏捷软件开发》读书总结第一篇)

    文章目录 前言 僵化性(Rigidity) 原文 我的理解 脆弱性(Fragility) 原文 我的理解 前言 最近读Robert C. Martin(Bob大叔)的书<敏捷软件开发>,准 ...

最新文章

  1. LeetCode简单题之作为子字符串出现在单词中的字符串数目
  2. 加载BeanFactory
  3. 生成器与迭代器的区别
  4. 编译程序加不加 -lpthread 的区别【转】
  5. js中while死循环语句_Java系列教程day06——循环语句
  6. == 和 is 的区别
  7. LeetCode 431. 将 N 叉树编码为二叉树(递归/层序)
  8. 一个vue请求接口渲染页面的例子
  9. 计算机分级无法度量视频,雨林木风win7旗舰版电脑评分时出现无法度量视频播放性能...
  10. 面试题56 - I. 数组中数字出现的次数
  11. android的oomkiller_[Android Memory] Linux下malloc函数和OOM Killer
  12. 蓝屏dump分析教程,附分析工具WinDbg(x86 x64)6.12.0002.633下载
  13. 解决There is no getter for property named ‘organization_id‘ in的报错
  14. 智慧天气系统 - 可视化大屏(Echarts)管理系统(HTTP(S)协议)物联网平台(MQTT协议)
  15. 科技爱好者周刊(第 216 期):极简主义的胜利
  16. 深入解析网页防篡改技术
  17. 微信小程序开发实战(网络请求设置)
  18. Attention-GAN
  19. html如何让图片不失真,图片放大不失真的几种方法
  20. 第12集 副词及其他

热门文章

  1. C语言3sum,leetcode题目
  2. 计算机C盘怎么转到D盘,电脑c盘格式化会怎样_电脑c盘怎么移到d盘
  3. 行政组织理论-阶段测评4
  4. SpringBoot入门(四)Service、Dao
  5. 4.(css3布局)使用flex布局携程网首页案例
  6. 用HTML加css做成的新年特效,使用css3和html给网站添加上春节灯笼特效的源码分享...
  7. 【离散数学】单射、满射与双射
  8. java获取时分秒毫秒_Calendar获取年月日时分秒毫秒
  9. 计算机用word做海报,【2人回答】电脑Word怎么做海报?-3D溜溜网
  10. 恶意软件家族分类 单模型方案总结