2007年1月9日,乔布斯发布了第一代iPhone手机,他重新定义了人们对于手机的认知,那一天,也是移动互联网时代的开端。
次年7月,在 WWDC 苹果全球开发者大会上,苹果宣布 App Store 正式对外开放,这也意味着属于开发者的移动互联网时代真正开始,iOS 开发应运而生。一转眼,十多年过去了,移动 App 基本成为了大众互联网产品的标配。移动技术的飞速发展,成就了一批人,但红利期过后,必然遇到挑战,有人说 iOS 市场不行了,有人说不需要原生技术了,有人说不好找工作了。
事实果真如此吗?
有些人工作年限很长,还是被淘汰掉了,我发现他们身上都有这样的共性:
1、做iOS开发多年,基本都在做着重复性的工作,忙于应付各种业务需求的讨论、开发、测试、发布、维护升级,有新的需求继续迭代开发。
2、通过频繁跳槽积累项目经验和工资,但真正经历大公司严谨的技术面试后才发现自己的基础知识没打好,很少研究Objective-C 和 Swift 的底层原理。
3、开发技能零散,没有深入研究过第三方源码,学习技术的自驱力太差。有业务需要用到哪里的知识,就去谷歌一下拿来用,实现完功能就完了。
更有甚者,工作5年,连基本的内存管理问题都答不上来,对指针懵懵懂懂,对系统内核一窍不通。随着移动领域的成熟和发展,iOS 开发者势必是从小型团队到大型,从草台班子到专业团队。
实际上,在这个互联网时代,几乎每一家公司都拥有自己的APP,每一家互联网公司都需要自己的iOS开发人员。在真实的市场环境中,iOS 中高级开发工程师的就业形势是非常可观的。
这些年移动开发领域相继诞生了组件化、热修复、动态化、大前端、小程序等热门技术,大多数开发人员,通常是上一个热点技术没搞懂,又有新的技术流行,比如React Native 和Weex 还没用热乎,又开始流行Flutter 了。其实这些技术看似“纷繁杂乱”,实则是殊途同归,它们背后都是一些通用的底层技术和创新的设计思想。
再比如,热修复、动态化和大前端的底层技术,都是 JavaScriptCore 这样的 JavaScript 虚拟机技术;再比如,大前端和 Flutter 的渲染,使用的都是 WebCore 中 Skai 这样的渲染引擎。
归根究底,与其关心下一个热点是什么,还不如静下心来好好消化掉这几年浪潮留下的关键技术,理解编程的本质,建立完备的知识体系,在这个基础上再去理解各种“新技术”,必然会驾轻就熟。
因此,我给大家推荐几个学习晋升的方向:
1:底层探索能力
很多人会讽刺:面试造航母,上班拧螺丝! 其实不然,面试的高要求对于一家优秀的iOS需求单位来说是必须的!
-
iOS开发实现的确有很多的方式,但是一个真正懂得原理的开发人员在日后的开发工作中是非常重要。我见过一些开发人员:遇到BUG都是直接面向百度,不知道为什么直接
command + c
/command + V
OK,解决了,打版走人,下次又遇到了还是要面向百度,其中浪费的时间和小伙伴之间的沟通成本可想而知! -
底层原理只是你在工作开发中偷懒而逃避选择使用而已(或者全然不太了解)
-
技术不断更新,底层原理是永恒根基
-
底层原理是非常重要的,只有真正掌握原理才能迎接未来无限可能。
下面是我推荐大家学习的内容:
OC 底层探索篇也是大家熟悉而又陌生的地方,平时处处用,就是不知道为什么!
2.性能优化以及架构能力
只要你面试要求 20-30K
必然要求性能优化能力!
-
怎么优化启动速度,应用包的瘦身!
-
界面优化(卡顿检测以及分析解决)
-
内存管理方面也是面试以及平时开发的重灾区!
-
架构并不属于性能优化,但是我要求每一个
3以上开发
都要有一定的架构思维!
3.数据结构算法
数据结构算法应该是每一个程序员必备的根据。我记得我的导师跟我说过:一个程序员需要两样东西:智商和勤奋
-
英文能力衬托你的勤奋度
-
数据结构算法反馈你的智商等级
数据结构与算法并不只是抽象的概念,掌握好的话可以写出更高效、运行得更快的代码,这对于如今盛行的网页和移动应用开发来说尤为重要。如果你最近一次使用算法是在大学课堂上或求职面试时,那你应该还没见识到它的真正威力!
这个主题的大多数资料都有一种通病——晦涩难懂。满纸的数学术语,我觉得一种有趣的学习方式也是非常重要的!
跨平台能力
跨平台的方案有很多:
如上表所示,RN
、Weex
采用的技术方案大体相同,它们都使用JavaScript
作为编程语言,然后通过中间层转换为原生的组件后再利用Native
渲染引擎执行渲染操作。而 Flutter
直接使用 skia
来渲染视图,而Flutter Widget
则使用现代响应式框架来构建,和平台没有直接的关系。
从性能方面来说,Flutter
的性能理论上是最好的,RN
和Weex
次之,并且都好于传统的 WebView方案
而从社群和社区的活跃来看,RN和Flutter无疑是最活跃的
总结:我个人针对现在的行情比较推荐大家学习:Flutter
-
同时现在很多人也开始着手学习了
-
如何衬托你的优势,我个人还要推荐在平时入门到项目的过程,不妨花点时间探索了一下背后的原理:渲染的流程,
Flutter
和原生的共存通讯优化 -
下面这张思维导图大家可以参考学习
加分项
现在的iOS开发为什么会遇到瓶颈是因为:前面储备过少,坐吃山空! 技术不断更新的时代,我希望你沉下心来与时俱进,不断储备技能为自己加分
其实这里并没有非常具体的推荐学习方向,总的如下几点!
5G时代,小视屏/直播技术都是现在当红,并且掌握人群非常少的技术,OpenGL ES、Metal、FFmpeg等等!
而应用逆向安全,是大部分大厂都一直重视的,只是在小公司突显不出来,如果对于大厂有想法的,可以尝试学习!
当然除了跟iOS有关系的,比如被炒火的Python,谣传比iOS好找工作的前端等等都是可以学习的!
技术储备和亮点,这些都得根据个人兴趣或者公司需求来进行学习,当然越多的储备就会使你后面的路走的越容易!
后记
现在很多大公司招人已经明确限制需要 211、985 的学历,而对于我们大多人这种双非二本学历,连敲门砖都木有。但是,能否拿到 offer,除了真的很幸运,也和本身的努力分不开。
持续更新--请iOS的小伙伴关注! 喜欢的话给一个赞吧!
推荐👇:
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:789143298 ,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
申请即送:
-
BAT大厂面试题、独家面试工具包,
-
资料免费领取,包括 数据结构、底层进阶、图形视觉、音视频、架构设计、逆向安防、RxSwift、flutter,
网友评论