只会画界面写业务的 iOS 开发真的没人要了! | 程序员有话说

百家 作者:程序人生 2019-02-16 07:09:41

作者 | Castie1

责编 | 伍杏玲

本文经授权转自知识小集(ID:iOS-Tips)

如果你是一个 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仅仅是运营粉丝就能够赚的可观的收益,而那些明星级别的顶级流量自不必说。

所以一个优秀的开发者也需要学习运营和产品方面的相关知识,需要了解用户画像,需要了解人性,这样在怼产品的时候就会更有底气。

幸运的是,你成为产品简单,产品成为你难。可以试着做一些新媒体及产品,并用技术实现,你会发现实现自我的同时,收获了更多的快乐。当然对于不熟悉的东西,每走一步都异常艰难。


提升视野


现今世界最厉害的两个武器:一个是技术,一个是传播。每个时代都是相似的,例如以前一边是王权,一边是宗教。

作为开发者,技术是赖以生存的本能,而你需要提升的是你的传播能力。那些人做公众号、微博、抖音、技术博客的本质就是为了传播,而我写这篇文章很大一部分原因是为了锻炼我的文笔,更好地运营新媒体,创造属于自己品牌的价值。

和技术储备一样,需要提升知识储备,当知识储备到了一定的阶段,输出倒逼输入。你就会有发表自己观点的欲求,也会从看博客到写博客的阶段。而现实是你可以靠技术进行变现。

当然变现并没有那么简单,需要学习的东西很多。首先你需要了解了解技术,各种前沿技术和未来的趋势,看看大佬们的想法,比如得到里的万维钢和王煜全的专栏,对提升你的视野很有帮助,但如果你想要从中学习到知识,还是别天真了,老老实实的系统学习,动手去做。记住,没有数据支撑,纯靠思辨的产物不是知识。

 热 文 推 荐 

程序员年后离职跳槽指南

35 岁程序员,年后第一天被辞退

程序员如何用“撞针“拯救 35 亿地球人?

手机辐射排行榜:小米、一加远超 iPhone;阿里开工彩票最高奖金 1000 万;苹果再遭集体诉讼 | 极客头条

讲讲亿级PV的负载均衡架构!

深圳一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 "点个好看吧!"

喜欢就点击“好看”吧!

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接