发现 iOS 这两年的供应量尤其校招直接下降到等同于没有,培训机构的风向也转向了后端等,供应量直线下滑,市场不断降低标准死活没有几个简历,同时需求量也进一步萎缩,以及大量的客户端开发人员出走转行,造成了供给和需求都下滑的情况。
iOS行情现状
开发需求现状
目前需求集中在 BAT、字节、抖音、快手等大厂,中小企业相关需求进一步萎缩,大厂依旧需求强劲待遇也很好。
供给现状
校招以及培训供给大幅度下滑,社招大量转行,端开发更多的还是在大厂中间流转,这也造成了社招找不来人,校招 0 基础要求。
校招状况
高校宣讲现场,问过去都没想做iOS的,张口都是意向推荐算法/后台/web开发,最后导致大厂只能找0基础的计算机基础(网络、数据结构、算法、操作系统等)好的应届生来做iOS开发。
社招状况
早些年培训机构火过一段时间,后续iOS就更没什么供应量了,但是市场却不断增大(pdd、头条、美团、滴滴等公司崛起带来了大量的移动端需求量)。因此社招出现明显的断层,3~4年的高级iOS开发极度难招,薪酬只能不断往上提,就前段终端岗位而言,同职级的高级iOS议价权较Android、Web更高一些。(目前开价头条最高)
导致的主要原因:
需求:
Android用户量大,iOS个体用户价值较高,因此很多产品都会两手抓,常规情况下大企业的核心产品不会出现仅上Android不上iOS的情况。Android人力充裕的情况下,企业为了尽快对齐两端开发,保持Feature同步,就只能用一些办法(提升岗位单价/降低要求等)快速完成团队编制。
学习门槛:
iOS开发需要开发者具备有MacOS+iOS系统的设备,大学生想要构置这套设备还是有不小的门槛的。并且面对是否能够成为iOS开发的未知数,以及正常打游戏的需求,许多大学生都对iOS开发望而却步,进而转向较好学习的Android/Web开发。正常计算机专业学生里,放眼望去iOS开发应该是所有CS专业毕业生开发选择方向中的最低占比。
找工作难度
如果学历、履历尚可,那么可以比较轻松的在中大厂找到一份不错的工作,招聘的内卷程度也远远不如诸神黄昏的算法和后端,反之就不那么好混了。
温馨提示:
应届/实习求职的学生,但凡有些iOS编码能力(熟悉Runtime原理、看过一些开源库实现、有一定项目经验等),在大厂的招聘市场上都会很有竞争力。如果期望应届毕业去大厂镀金的,建议可以考虑走iOS这条路线。如果是在不喜欢这条路,入职之后再转方向也是可以,至少你的起点是大厂了。
上限与跳槽难度情况
移动端开发的上限不如后端和算法,但例如算法这种属于极少数人可以做到顶级,大部分人达不到,而移动端属于很多人可以做到一个还不错的程度,所以认为自己资质等还不错,可以往算法等高精尖走,跳槽前面说了在大厂流转难度不大,但未来如果想国企上岸等就不如后端了。
重要缺点如下:
上升通道很窄。
大公司还有一部分移动端高级职位,在中小公司很少,干了不到三年你会发现升职不好升,跳到别的公司也是大头兵,35岁之后现在又这么流行,你有想过35之后怎么办吗?
领导重视度不够,长远看待遇偏低。
由第一条可以知道中小公司技术领导移动端技术的少,那后果就是整个公司对iOS岗位与待遇重视不够。明显的现象就是各种RN,Flutter框架的流行,大公司可能是为了KPI,小公司绝对是看中了开发成本低(其实也没低多少,开发两小时,调bug能调一天)。这类公司的领导还会停留在认为前端就是写写UI的水平,更别说对iOS会有多大误解了。
有经验的iOS程序员如何提升自己?
打造你的工具箱
工欲善其事,必先利其器。每个开发者都应该有一把自己的瑞士军刀,在将来漫长的职业生涯中,这些工具可以为你省下宝贵的时间,并帮助你更好的组织个人知识库。举两个例子
- 一套高效的开发环境
- 一个信息采集器和一本笔记本
高效的开发环境
我们可以从编缉器谈起,这里有IDE vs Text Editor,有Vim vs Emacs,有Sublime vs Atom,那该如何选择呢?在做选择之前,我们先想想自己的目标。我们希望这是一个长期的投资,这款编缉器能被长期使用,在这个过程不断的打磨,使其能完全适合自己的习惯,最大化编缉效率。如果程序员是侠客,编缉器则是他手中的剑。
信息采集器和笔记本
前者是用来收集别人产生的信息,后者则是收集自己产生的信息。前者一个简单的例子就是浏览器的Bookmark。你需要能随时将一组有用的信息归档,并在未来的某个时刻快速找到它。后者最直观的例子则是Mac OS或是iOS自带的笔记本,这里的目的是能随时随地记录你自己的想法。
开阔你的视野,构建你的技术体系
首先你要给自己设定一个目标,就如同一个公司会设定它的Vision。
- 目标要够大,这样你才能看到更多的风景。
- 目标应该设定在解决哪一类问题,而不是精通哪一类技术。技术只是手段,不是目的。
重视沟通重能力的培养
当被问到“你学得Junior Developer和Senior Developer最大的差别是什么”时,我最自然的反应是沟通与文档。沟通包括程序员团队内部的沟通,与其他团队的沟通,与Manager的沟通等等。我不认为自己有能力把这些问题非常概括地说清楚,不过我可以给一条建议,那就是先学会和你的Manager沟通,让他来教你其余的部分。
累积你的人脉
每个人都明白人脉的重要性,但实际做起来却不容易。参加一些线下的会议或是活动,可能是最直接的扩展人脉的方式之一。可惜大部分人似乎只是去听了一场技术讲座就回家了。
而实际上,结识一两个同道中人远比听技术讲座有价值。下次去参加这类会议,不妨给你自己设个目标,比如至少加两个同行的微信。之后维系你的人脉可能需要花更多的时间,下了班或是周末找你的朋友们喝个咖啡吧!
另外我觉得每个人都需要一个职场导师,他可以是你第一份工作的导师或是Manager,也可以是你认识的其他前辈。你们需要维系一个非常长期的关系,不止于一家公司,最好贯穿你的整个职业生涯。每当你遇到疑惑时,都可以询求他的建议,我觉得这将是你最宝贵的一笔人脉财富。
寻找发挥你才华的平台
最后也是最重要的一步,找到适合你的公司。做为求职者评估一家公司可以看三个方面
- 公司的发展前景(大公司的话,看所在部门的发展前景)
- 你将要加入的团队
- 薪资福利
所以在面试一家公司的时候,你要意识到面试是双向的,公司在面试你的同时,你也在面试这家公司。面试前你应该对这家公司做足功课,准备好一些有质量的问题,比如指出产品中的问题,询问开发流程或是如何做绩效评估。到时你也可以检验一下你的面试官是否合格。
对一个刚毕业,初入职场的同学,一个近几年被问了无数次的问题“我的第一份工作是去创业公司还是大公司?”我的回答仍旧是“加入一个优秀的团队最为重要”。
每个行业都有瓶颈 得想办法解决 不然会恶性循环一直持续下去 最后说一句:遇到困难得迎难而上,而不是退缩,逃避永远不能解决问题,不要拿逃避做退缩的挡箭牌。