前言前端
若是你是一个 iOS 开发的新手,我能够告诉你,这个职业的红利期早已过去。随着 APPL 的股价大跌以及内忧外患不断,iOS 这个职业的恐慌指数在不断的增高,已经对新手不太友好了。面试
若是你是一个 2-3 年的 iOS 从业人员,天天的工做内容就是画画界面、写写业务、调调接口,那你是时候改变一下本身的视角重新审视下将来的职业规划。算法
若是你是一个3-5年的老鸟,掌握了必定的技术及资源,可能这篇文章的内容已经早已在你脑海中有段时日,只是缺少良好的契机。后端
因为 iOS 开发,国内并无相关对口的专业,因此基本上大多数开发者都是经过自学进入市场的,有的因为是科班出身、重点大学,幸运的进入大厂深造,一帆风顺顺水,使得其余的开发者只能望其项背。网络
做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个个人iOS交流群:638302184,无论你是小白仍是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 你们一块儿交流学习成长!架构
但多数普通的开发者都是经过培训机构进入市场的,并无很深的技术基础,没有系统的学习过计算机原理的课程,只是从培训机构快速学习了API的调用,对其本质不是很了解,也形成了进阶的困难,因此如今市面上出现了不少在线技术教育,学习是很好的行为,咱们这里谈的是如何精准的学习。工具
1、自我接纳组件化
如何进行精准的学习?学习
首先咱们须要学会自我接纳。作产品的对目标用户会有用户画像, 用户画像存在的意义是不管你作的是什么说的是什么,并不能取悦全部人。这就是定位的意义,对自身也是同样,你须要了解本身的定位才能进行进一步的规划。区块链
相同的环境造就相同的价值观,因为每一个人的价值观不一样,造就了这个五彩缤纷的世界。当咱们做为 iOS 开发刚进入市场的时候,那时候只须要会画一个 TableView 就能赚取可观薪水的日子早已离咱们远去。
随着市场成熟后门槛也逐渐的提高,因此若是你只会用 Objective-C,画界面、写业务、调接口,如今须要加把劲了,由于这个时代正在淘汰这些低级工做。
有了改变本身认知的契机,咱们就来问问本身三个问题:
你所拥有的技术储备真的是市场上须要的吗?
面对层出不穷的新兴技术,如何才能作好技术选型?
你真的有把握可以在技术这条路上走到底吗?
2、市场数据
先不急着回答上述的问题,咱们先看一下市场所呈现的数据,而不是人云亦云,否则就很容易被如今的某些知识付费收智商税,鼓吹碎片化学习。
没有数据支撑纯靠思辨的产物不是知识,你仅仅得到的是获取知识的感受。知识是须要全面系统的学习并进行场景验证的,因此在如何规划以前先看看数据。
上图是艾瑞指数的数据,不用去管媒体如何煽动,数据代表 iOS 的占有量仍是比较稳定的,因此 iOS 没有人要了可能真的只是一句玩笑,由于有市场就会有需求。
咱们再来看 iOS 设备的分布图, 能够发现目前主要群体仍是使用的 iPhone6/6s 的设备,能够看到 iPhone8/8P/XR,并无卖的很好,换机频率降低是不争的事实。
但整个行业都是如此,因此也不用太悲观。因此仍是以提高自身技术为先。
3、技术储备
技术储备是说明一个开发者具体的能力体现的,因此不断学习是每一个技术人天天须要完成的课题。以 iOS 举例,iOS 基本技术无外乎UI、网络、业务三个方面,也就是画界面、写业务、调接口。
这是基础能力,但你纵览整个大前端技术栈,本质都是这三个方面,因此不少的开发者会想要深刻学习,会看一些官方或者是三方的一些源码,并写一些分析放在博客上,自觉得理解了做者的想法,沾沾自喜。就若有些人会看 Runtime,但不多人知道 Facebook 的 Fishhook,毕竟掌握后者的技术储备和 Runtime 不是一个量级的。
这里假设你已经熟悉了 Runtime 源码中的底层实现,了解了 OC 的实现机制,但你并不知道这些东西的使用场景在哪里,为何大厂能够用这些作一些 APM 的东西,而你并不知道如何入手。这是由于你的技术储备不足,再有就是你的视角产生了误差。
C/C++/Linux/ASM, 这些基础是必须了解,学完前者后,再看 Runtime 源码,就会感受很是轻松,没有任何的困难。
若是你只有技术的视角,觉得技术可以解决任何问题。事实是技术只是一个工具。工具就是可替换的,而工具只会变得愈来愈简单,愈来愈顺手。你的若是只被技术限制住,你的竞争力会逐年下降。
4、聊聊面试
网上只要发随便发一篇面经,就会有不少人关注,笔者有幸面试过不少大厂,如饿了么、京东、美团、携程、头条、招行等,面试题无外乎就是,OC原理、UIKit、网络、线程、组件化、算法、架构等。目前对 Swift 和跨平台插件化也会有一些涉及,这个部分取决于你所面试的业务线。可是,算法必考,架构必谈。
其实若是你是一个有技术储备的合格的开发者,经过面试对你来讲并非一个很是困难的事情,由于这些东西真的并不难,都是一些平常涉及的东西,常规操做而已。
5、谈谈全栈
对于技术提高会分为两条线:深度和广度。
算法有叫“深度优先”和“广度优先”的,这两条线并无孰优孰劣,看你所在的场景。在知识付费领域的概念就是,T 字型人才,80%人才,100%人才,具体选择那条线没有什么实际的意义。
在先进互联网技术栈被笼统的分为:前端、后端、移动端、数据端。个人观点是全栈颇有必要,首先你须要了解你的价值不取决于你的能力,而是市场的稀缺性。成为 100% 的专才,的确能够拿到头部市场,但成本大风险高,而作一个 80% 的通才,是一个对普通人比较友好的选择,而若是你已是一个有技术储备合格的开发者,T 字型发展也是一个合理的选择。
6、如何选型
如今新兴技术层出不穷,光 iOS 方向就有 ReactiveCocoa、ReactNative、Flutter等,还有人工智能、区块链等新兴技术,因此吾生也有涯,而知也无涯,以有涯随无涯,殆已!
技术不可以脱离产品而独立实现,产品不能脱离运营而独立存活, 运营脱离了用户也没有了意义。你要理解互联网的本质实际上是人的链接,理解了这层逻辑, 反推来看你的视野就会清晰不少,由用户产生了需求,运营用户而产生了群体,分析群体而打造产品,实现产品才须要技术,因此在没有很大基数的用户的前提下,对技术的追求是没有任何意义的。而当有了用户,就会知道你该如何技术选型,最经济的方法就是选择那些稳定且成效快的,这也是为何三方库存在的本质。
7、技术以外
技术本质只是工具,互联网是人与人的链接,是思想的碰撞。这是为何一些大V仅仅是运营粉丝就可以赚的可观的收益,而那些明星级别的顶级流量自没必要说。
因此一个优秀的开发者也须要学习运营和产品方面的相关知识,须要了解用户画像,须要了解人性,这样在怼产品的时候就会更有底气。
幸运的是,你成为产品简单,产品成为你难。能够试着作一些新媒体及产品,并用技术实现,你会发现实现自个人同时,收获了更多的快乐。固然对于不熟悉的东西,每走一步都异常艰难。
8、提高视野
现今世界最厉害的两个武器:一个是技术,一个是传播。每一个时代都是类似的,例如之前一边是王权,一边是宗教。
做为开发者,技术是赖以生存的本能,而你须要提高的是你的传播能力。那些人作公众号、微博、抖音、技术博客的本质就是为了传播,而我写这篇文章很大一部分缘由是为了锻炼个人文笔,更好地运营新媒体,创造属于本身品牌的价值。
和技术储备同样,须要提高知识储备,当知识储备到了必定的阶段,输出倒逼输入。你就会有发表本身观点的欲求,也会从看博客到写博客的阶段。而现实是你能够靠技术进行变现。
固然变现并无那么简单,须要学习的东西不少。首先你须要了解了解技术,各类前沿技术和将来的趋势,看看大佬们的想法,好比获得里的万维钢和王煜全的专栏,对提高你的视野颇有帮助,但若是你想要从中学习到知识,仍是别天真了,老老实实的系统学习,动手去作。记住,没有数据支撑,纯靠思辨的产物不是知识。