大家好,这是正在努力进阶iOS的某程序员博客!目前目标30K,希望可以和大家一起进步和成功!
本文所有观点,仅代表个人哦~
还是希望大家能耐心看完!
查漏补缺是作为一个程序员应该具备的素质,这也是分享本篇文章的初衷!
什么是iOS开发?
iOS开发的标准语言是objective-c。是c的一种超集, 它是对c的扩展,支持面向对象编程。像后来的一些高级语言java,c#等都借鉴了该语言的面向对象特性。 当然在iOS开发过程中,也支持c/c++语言与原生的objective-c混编。
容易上手,难以进阶!这其实是大部分开发语言的通性,这也是导致入行人多,转行人也多的重要原因,毕竟红利风口,都想分到这杯羹!
瞎吹吹
个人认为iOS开发这个职业,远比目前从别人口中得知的更持久、而且坚固!
早在去年,库克就已经将“苹果倒闭”这几个字眼解释的很清楚,一个储备资金2600亿美元的公司可没有想象中那么脆弱!
至于每天把“要完了!”这几个字挂在嘴边的开发者,除了技术菜,也没有更好的解释了,毕竟坚持iOS开发的前辈大佬们都过的挺好的~
井底之蛙的轻易否定,只是来源于他们没有见过彩色的世界而已!
(毕竟只是嘴嗨劝退别的开发者的人也不在少数)
所以,无视掉这种人这么荒谬的观点,那些真正有技术,懂得学习的iOS高级开发工程师,现在正在各大企业(腾讯百度阿里等),一句话,不要有比上不足比下有余的态度.努力学习.
真正努力的人,即便到了完蛋的那一天,他也会有另一个吃饭的“手艺”!嘴嗨不是他们的特点~
怎么学习!
攻克难关,是每个真正做研发的开发者所具备的品质,也是技术成长最快的方式!
信念:iOS本身就不是一个很难学习的技术,坚持下去就能胜利!
独立:从别人口中得知的,永远是别人脑子里的东西,你的脑子里装了些什么?
一直保持学习的心:当前互联网技术更新迭代技术大家都有目共睹,也许睡醒之后就是下一个技术红利期,怎样让自己领先于别的开发者,保持学习的习惯!
目标:目标和责任是支撑你走下去的重要支柱!实现你的目标也是你增加自信的根源!
模仿:取其精华,去其糟粕!这是缩短你学习时间,增加技术层面的重要动作!优秀的第三方或者APP往往倾注了作者最优秀的代码思想,所以尝试把它装到你的脑子里吧~
你的职业规划是什么?
从iOS这个行业来说,找不到工作只能从自身找原因!
因为简历写的不好?因为现在大部分公司不要iOS开发?因为没有学历?
不,都是因为你菜
iOS本身薪资待遇就优于其他大部分语言,不对你要求高,对谁要求高?
程序员本来就是一个需要努力,需要技术的行业!文凭和经验技术,两者分开哪个都可以给你带来好的结果,文凭高是因为别人前20年的努力,技术好事因为别人后5-10年的努力,所以不需要抱怨!想要好的回报,就需要付出你的时间、精力和头发!
种一棵树最好的时间,是十年前或者今天!
不管是想转行还是坚持,现在就开始做吧!
外包&产品
其本质的区别就是,模式不一样!
说明白点,搬运和创造!
先说外包公司的模式吧,一个好的外包公司,可能福利会好很多,阶级斗争不是很明显,大家就像打工的一样,拿着工资和项目提成,项目比较紧,成熟的外包公司拥有统一化的管理,和优秀的代码规范;
但如果是比较差的外包公司,那就不一样了,整体项目以完成为目的,不需要维护,往往只需要做出来一个雏形,不会到处崩溃,交货之后,此app将再也没有关系,如果需要维护,就再交钱。不论好与坏的外包公司,他的盈利模式就像是流水线,只需要出货量,不要求质量。这对于刚刚步入程序员行列的人会很不利,会养成不用维护,不用注重用户体验,不用做流畅度,耗电量,并发量的测试的坏习惯,得过且过。
总之不用考虑太多。这也是市面上大公司有些会看你之前的工作经历的原因,如果是外包,对不起,我们不要。
产品公司的模式,就是升职加薪,干得越久福利越好,万一你比较幸运,有幸成为未来几年要火的产品的开发者,那就是offer不断啊。产品公司往往分为有成品项目和创业两种。
成品项目人员变动一般较少,阶级斗争比较严重,为了职位更上一层楼,勾心斗角。不过在开发团队还是比较罕见的,大家大部分都是想跳槽的。
创业公司往往需要人才,全面性的人才,就单单说iOS,一个创业公司可能会要求你会 直播,支付,蓝牙,聊天,这也都是老功能了,现在都是什么 AR啊 人脸识别啊。你不学习新知识,注定被淘汰。外包公司也有一点好处就是,涉及的应用多,那功能也就自然而然比较多(如果全部接的那种简单的应用当我没说)。
iOS开发进阶学习路线!
底层:
- Runtime
- 对象
- 类
- 属性
- 方法
- 协议
- 应用加载流程
- Clang&LLVM
- KVC&KVO
- 多线程
- Block
- AOP切面编程
- 性能优化
- Socket
- 自动打包
- 持续集成
- 单元测试
算法:
- 线性表
- 栈
- 队列
- 串
- 数组
- 树和二叉树
目前来说,底层和算法基本是面试官最喜欢的方向,所以在下次面试前,打好基础是必须要完成的路线!
至于更多的技术,比如目前很火的音视频,视觉、flutter、swift这些!可以根据个人精力来学习,优先掌握本应该掌握的技术,再横向发展是我目前在做的!
视觉方向:如果是为了满足部分招聘需求的话,建议OpenGL ES和metal都需要掌握,虽然metal是苹果说要替代的框架!但是目前大部分公司还是优先于OpenGL的!
flutter方面:如果只是为了让自己面试或者简历中带有亮点,入门完成项目就行,毕竟深入探索需要花费大量的人力和时间成本,把这花在更快捷的技术上比较好!
swift方向:除非是专门做swift的公司,不然OC与swift的项目分化还是比较清楚的,同样,其实OC底层和swift底层有着比较大的相同原理,优先OC底层学习!毕竟这是你熟悉的语言!
至于其他的更多的技术内容,Python、JS等!根据个人精力来分配,在自己本职工作薪资待遇没有达到自己的目标时,显然吃饭更重要!
最后:
最近有从朋友那里拿到一些iOS面试题总结的pdf文档!因为平台不能发送文件,需要的朋友可以添加QQ群:679884541,群里面都是iOS开发者,有什么问题和牢骚大家一起交流吧!
原文地址:https://blog.51cto.com/14121524/2476011