iOS开发请您把握现在 — 面向未来学习
iOS开发请您把握现在 — 面向未来学习
这一篇文章,如果你是一名iOS开发正好也处于开发晋升瓶颈迷茫期,不妨停下你的脚步,花五分钟看看,兴许有你需要的!文章结尾有彩蛋
群里常见的唱哀
- iOS现在到底怎么了?不行了么?
- 许多年开发经验了在金九银十拿不到几个面试邀请,`offer`也困难
- 现在要不要转行,感觉现在是`大前端时代`.
- 现在年纪大了,是不是不太合适继续做程序员!
到处都充满了对iOS行情的焦虑
一、分析iOS市场
一个成熟的IT开发人员必须要冷静的思考,学会 —— 迎接焦虑 - 变压力为动力
①:打开 BOSS直聘(毕竟现在大部分程序员跳槽找工作都是使用这个平台,具有典型性)以北京-iOS为搜索元素!下面我通过一个表格给大家分析iOS市场。
因为时间原因只展开分析了前5页,因为是一页一页数,可能会存在数字不是非常精准
| 薪资待遇 | 岗位个数 | 年限要求 | 公司规模 |
| 15K左右 | 40份 | 1-3年 | 20-99 |
| 20K左右 | 63份 | 3-5年 | 100-499 |
| 30K左右 | 93份 | 3-5年 | 100-499-1000以上 |
| 30K以上 | 33份 | 3-5-以上 | 499-1000以上 |
②:开始分析 20-30K 的岗位招聘要求

③:纵观 BOSS直聘 分析得出以下几点
- A: 现在iOS市场招聘需求落在 `20-30K`
- B: 工作年限要求 `3-5年`
- C: 公司规模落在 `100-499-1000`
- D: 能力刷选条件
- 底层原理几乎成为必备能力
- 相反UI能力慢慢在招聘要求里面没有直接板书了
- 性能优化以及架构能力相对比之前要求还是持平
- 数据结构算法能力占比也比较大
- 跨平台能力也占有比较高
二、分析自己的现状
分析基本信息
- 这个小伙伴非计科出生,专科学历。
- 干过几年业务销售,后面转行开始IT学习
- 学习iOS之后去了一家外包公司开发3年,跳槽了另一家小公司开发两年,倒闭了!
- 5年开发经验,30左右,现在北京奋斗!
- 公司倒闭之后,金九银十开始找工作,拿到了7个面试邀请,暂时没有合适的offer!
分析专业技能
下面是一份普通的简历中的技能情况,大家也可以对比一下你的简历

总结:这份简历专业技能写的还是比较中规中举的!但是很显然没有达到一个要求 20-30K - 5年 开发需要的能力!
- 太过多涉及基础内容:单利、代理、Block通讯、iOS自动布局,OC和JS交互能力
- 掌握的东西表面看来都是只知道熟练使用,并没有涉及底层原理
- 专业技能没有太多对口我们上面的分析的内容:性能优化、架构设计、底层原理
- 没有比较显眼的加分项!
分析项目经验
我这里因为考虑到个人的隐私(尽管已经授权)这里就没有贴出公司相关信息

这一项只是简单介绍了工作,并且都是落地业务层,这样的项目经验还是不够的,至少没有看到一个成熟的开发者的身影!
一个资深iOS开发到底应该掌握什么
现在2019年,iOS开发的确面临很多问题:
- 有很多开始转行了(我这里就不分析转行的利弊,大家自行定夺);
- 还有很多现在还在迷茫;
- 当然也有很多守得云开见日出!
下面跟那些还愿意留在iOS行业想拼搏一把的小伙伴,分析一下一个资深iOS开发到底应该掌握什么
1:底层探索能力
很多人会讽刺:面试造航母,上班拧螺丝! 其实不然,面试的高要求对于一家优秀的iOS需求单位来说是必须的!
- iOS开发实现的确有很多的方式,但是一个真正懂得原理的开发人员在日后的开发工作中是非常重要。我见过一些开发人员:遇到BUG都是直接面向百度,不知道为什么直接 `command + c`/`command + V` OK,解决了,打版走人,下次又遇到了还是要面向百度,其中浪费的时间和小伙伴之间的沟通成本可想而知!
- 底层原理只是你在工作开发中偷懒而逃避选择使用而已(或者全然不太了解)
- 技术不断更新,底层原理是永恒根基
- 底层原理是非常重要的,只有真正掌握原理才能迎接未来无限可能。
下面是我推荐大家学习的内容:

OC 底层探索篇也是大家熟悉而又陌生的地方,平时处处用,就是不知道为什么!
2:性能优化以及架构能力
只要你面试要求 20-30K 必然要求性能优化能力!
- 怎么优化启动速度,应用包的瘦身!
- 界面优化(卡顿检测以及分析解决)
- 内存管理方面也是面试以及平时开发的重灾区!
- 架构并不属于性能优化,但是我要求每一个 3年以上开发 都要有一定的架构思维!

3:数据结构算法

数据结构算法应该是每一个程序员必备的根据。
一个程序员需要两样东西:智商和勤奋
- 英文能力衬托你的勤奋度
- 数据结构算法反馈你的智商等级
数据结构与算法并不只是抽象的概念,掌握好的话可以写出更高效、运行得更快的代码,这对于如今盛行的网页和移动应用开发来说尤为重要。如果你最近一次使用算法是在大学课堂上或求职面试时,那你应该还没见识到它的真正威力!
这个主题的大多数资料都有一种通病——晦涩难懂。满纸的数学术语,我觉得一种有趣的学习方式也是非常重要的!
4:跨平台能力
跨平台的方案有很多:

如上表所示, RN 、 Weex 采用的技术方案大体相同,它们都使用 JavaScript 作为编程语言,然后通过中间层转换为原生的组件后再利用 Native 渲染引擎执行渲染操作。而 Flutter 直接使用 skia 来渲染视图,而 Flutter Widget 则使用现代响应式框架来构建,和平台没有直接的关系。
从性能方面来说, Flutter 的性能理论上是最好的, RN 和 Weex 次之,并且都好于传统的 WebView方案
而从社群和社区的活跃来看,RN和Flutter无疑是最活跃的
总结:针对现在的行情比较我个人推荐大家学习:Flutter

- 同时现在很多人也开始着手学习了
- 如何衬托你的优势,我个人还要推荐在平时入门到项目的过程,不妨花点时间探索了一下背后的原理:渲染的流程,`Flutter`和原生的共存通讯优化
- 下面这张思维导图大家可以参考学习

5:技术储备以及加分项
现在的iOS开发为什么会遇到瓶颈是因为 前面储备过少,坐吃山空!技术不断更新的时代,我希望你沉下心来与时俱进,不断储备技能为自己加分
这里我推荐学习:视觉方向! 无论直播还是小视频,图形图像处理成为必然的技能,在即将到来的5G时代里,这一块技术必将成为你与其他开发人员差距的赛点!

同时也推荐大家学习:应用安全攻防方向 逆向安全这些年越来越被我们熟知并且需要!一个高质量安全的应用程序必将是你薪酬翻番的谈资!
综合总结
在现在这个群雄逐鹿的iOS市场,我希望你守住自己的浮躁,扛着压力向前冲!学习的路上必然艰难,但是请你记住下面这段话。
一个优秀的人从不拒绝知识,更何况是一个优秀开发者!!!
你要想站稳自己,未来岗位、薪酬待遇持续增长,我希望你保持学习,无论是:iOS底层、数据结构算法、Flutter、架构性能优化、视觉与逆向安全攻防 学就完事了!
彩蛋
有一个iOS开发交流QQ群:1012951431,选择加入一起交流,一起学习,共享学习资料。期待你的加入!(进群可领取学习礼包)


iOS开发请您把握现在 — 面向未来学习的更多相关文章
- iOS开发|从小公司到进大厂,我的进阶学习之旅!
iOS高级进发 OC源码下载地址 苹果开发文档 如何阅读苹果开发文档 GNUstep是GNU计划的项目之一,它将Cocoa的OC库重新开源实现了一遍 源码地址:http://www.gnustep.o ...
- iOS开发学习概述及知识整理
设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了.这个界面模仿了Evernote iOS app的风格. 我以迅雷不及掩耳盗铃之势开始在Xcode上编程,用 ...
- 那些在学习iOS开发前就应该知道的事(part 1)
英文原文:Things I wish I had known before starting iOS development—Part 1 http://www.cocoachina.com/ios/ ...
- 《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营
编写Hello World应用程序通常被觉得,是学习不论什么编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,高速了解Xcode这个开发iOS应用程序的主要工具. ...
- ios开发之OC基础-ios开发学习路线图
本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...
- iOS开发——多线程
很多朋友都说iOS开发中,最难理解和学习的就是多线程,很多的原理实现都是通过log看到,也比较抽象,本人也是在多线程方面投入过很多脑细胞..无论这方面的知识掌握和应用起来是否轻松,牢固的基本功.正确的 ...
- 2016年末闲谈iOS开发的未来
移动开发市场潮流涌动,好多人都会问iOS开发的前景这样的问题,今天我就瞎扯一下我眼中的未来,纯主观非理性,爱看看. Swift怎么样 Swift很好,就像你的前女友一样好. 得益于swift的开源,以 ...
- .NET Core:面向未来的开源跨平台开发技术
作为一种全新的开源和跨平台的开发平台,.NET Core 历经两年多的开发,终于在于2016年6月27日针对所有主流服务器和桌面操作系统发布 1.0 RTM 版本..NET Core 是一种通用开发平 ...
- iOS开发网络篇—GET请求和POST请求
iOS开发网络篇—GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 // 1.设置请求路径 NSString *urlStr=[NSString stringWithFo ...
随机推荐
- 【学习笔记】python3核心技术与实践--如何逐步突破,成为python高手
众所周知,Facebook 的主流语言是 Hack(PHP 的进化版本).不过,我敢拍着胸脯说,就刚入职的工程师而言,100 个里至少有 95 个,以前都从未用过 Hack 或者 PHP.但是,这些人 ...
- C#基础知识总结(一)
1.什么是匿名函数?匿名函数,就是没有名字的函数,或者说就是一组代码块,他的参数只有在方法块内有效,可以有效的减小创建方法事所需要的系统开销 2.lambda表达式是什么?lambda表达式 就是一个 ...
- SqlServer 统计1-12月份 每个月的数据(临时表)
想做一个年度图表 效果如下,通过sqlserver来统计今年1-12月份每个月的数据,效果如下 sql语句网上找了很多都没有找到满意的 找到的其中一种写法是这样子的 这种写法对于前端来说很方便 不用进 ...
- Windows server 2008 快速搭建域环境
之前根据网上的教程搭建,然后出现了很多问题,最后摸索出了一个比较稳妥一点的方法. 对于选系统这里,虽然上一篇文章已经说过了,这里也再强调一下,我使用的是08的系统,使用其他系统的暂不做评价,使用08系 ...
- 高通电源管理qpnp-vm-bms驱动
1. compatible节点: qpnp-vm-bms.c使用来控制电池曲线的和BMS功能的,其compatible节点是"qcom,qpnp-vm-bms" 2. probe函 ...
- String StringBuffer StringBuilder的异同
1.String与StrIngBuffer StringBuilder的主要区别在于StrIng是不可变对象,每次对String对象进行修改之后,相对于重新创建一个对象. String源码解读: pr ...
- java.util.Optional学习笔记
java.util.Optional是Java 8新增的类,作为一个持有实例的容器类,可以帮我们把判空的代码写得更优雅,并且该类还提供了一些实用的api,官方文档在这里,接下来我们通过实战来学习吧: ...
- Spring BeanDefinition的加载
前面提到AbstractRefreshableApplicationContext在刷新BeanFactory时,会调用loadBeanDefinitions方法以加载系统中Bean的定义,下面将讲 ...
- SpringCloudEureka入门
说明 SpringBoot版本 2.1.7.RELEASE SpringCloud版本 Greenwich.SR2 创建eureka server工程 加入pom依赖 <dependencies ...
- Fork/Join 框架框架使用
1.介绍 Fork/Join 框架是 Java7 提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架.在多核计算机中正确使用可以很好的 ...