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