大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。
今天主要是跟大家聊聊,作为一个iOS开发者,我们应该如何去规划我们自己的职业生涯,希望能对各位读者有小小的帮助。做开发到一定程度后=我们就会面临“转职”,是转向更深的技术还是工程管理都是我们值得深思点一个问题。
收录丨原文地址
虽然近几年有大量的开发者涌入移动端,社会上的各种培训机构也越来越多,但是优秀的 iOS 开发者在行业内仍然很少,这一方面是由于创业者很多,另一方面是因为技术更新换代很快,而且开发也需要长时间的经验积累,以近几年的 WWDC 大会为例,11年发布的 iOS5 与 iOS4 相比简直就是跨越性的更新,虽然用户可能感觉不到,但是从 SDK 的变化来说,开发者的压力是很大的;12年发布的 iOS6 带来了 AutoLayout 、CoreImage这些新的技术以及像 PassKit、CollectionView、State Preservation 这些大量的新的 APIs;iOS7 的变化大家都看在眼里,UI 的调整往往意味着过去经验的结束,你要重新思考对细节的处理;iOS8 也有理由说是变化最大的版本,带来了像 Extensions、Size Classes、Metal、Watch、Swift 等等这些全新的东西。
要学习的东西很多,但是总得来说行业前景还是很好,而且你每年都有机会实现弯道超车。
能对产品进行需求分析,设计适合的架构,分解模块等,其次开发,开发中需要有产品观,毕竟要想从几十万的开发者中脱颖而出,除了技术还要有对产品本身的激情,对工作只是当成一个班去上是万万不行的。 能做好技术选型(需要用到的技能在下面的【技能列表】中),保证系统的稳定度。后者会比较麻烦,因为产品不了解代码本身的情况,对一些可能出现的问题并不清楚,而这些只有开发者最清楚,如果开发者不说的话就没人知道了,这也就是项目中的第二种需求,即非功能性需求,处理好这20%的非功能性需求才是真正体现一个开发者能力的地方。 扯了这么多,说说实际的工作内容: 前期:
中期:
后期:
不要敷衍自己开发的产品,否则就是浪费自己的生命。
直接对象:
间接对象:
如果你以为只管“打点好”和产品相关的7、8个人你就错了,讨论小组的背后可能有上百人的暗中参与,有些没有节操的产品会在你面前固执己见、冠名堂皇,在领导面前“通敌卖国”。
内存管理,不需要防御式编程,但是大脑一定要清晰的知道自己使用的对象的内存情况。 UIKit,熟练掌握,能不看文档就知道常用的控件有哪些方法以及能做什么。 Storyboard(xib) Auto Layout 和 Size Classes,前者更重要 各种手势处理 KVO\KVC GCD delegate(不要与代理设计模式混淆) Block Notification APNs,远程通知 视图状态保存 … 其实开发中大多数问题都是“临时”遇到的问题,只有平时积累的够多,才能游刃有余的解决。上面的这些技能只能算是抛砖引玉,更多地学习主要还是在自己遇到问题或者遇到不懂的知识点的时候,每一个困难都是财富,都是一个学习的机会,像 CoreData、设计模式之类的技能你难道不学吗?兴趣和遇到问题的切入点很重要,不要敷衍自己,多看书,书看的越多,越会觉得自己无知。
另外,技能这块也不要把关注点全放在 iOS 的平台技术上,做开发的一定不能偏科,有时候你觉得自己只是某一方面比较薄弱,比如说“我就是记忆力不行”,其实差距是全面的,在下面的【学习资源】里我除了列举 iOS 相关的资源以外,也会列举一些我看过的、觉得对开发提升有帮助的书籍。
怎样成为一个高手?显然高手总是通过自学产生的。
对目前的 Swift 来说,我是坚定的反对者,这种立场其实和我最开始时不一样,当然swift作为苹果官方推荐的编程语言,这肯定是一个大势,我们需要去顺应时代。
Swift 目前不稳定,连 Xcode 都对它兼容的不好,每次 Swift 有个稍大的更新就像是把项目推倒重来,而且也不可能完全只用 Swift 来开发一个项目,基于 Objective-C 和 C 的框架有很多,iOS 是开发离不开 C 的。 除此之外,我觉得 OC 比 Swift 更加灵活,前者更依赖运行时,后者几乎就是编译时,OC 能做很多 Swift 做不了的事情,如运行时的关联对象等,不过这并不是说 Swift 不重要,只是一定要排一个优先级的话,我觉得短期内 Swift 无法对 Objective-C 造成太大影响,所以先学好 OC 还是更好一些,而且技多不压身嘛
书籍下载:地址