×

iOS开发笔记 - 就业指导

96
jackfrued
2016.09.12 00:10* 字数 3455

2015年初的时候,我在CSDN博客上发表了一篇名为《Java就业指导》的文章,分享了自己作为一个Java开发者给准备成为Java开发者的年轻人的一些经验。这篇文章很快被热心的网友捧上了CSDN头条,于是�用�各大搜索引擎输入“Java就业指导”几乎都能在第一条看到我的这篇文章(当然这是不考虑竞价排名的搜索结果)。其实在写这篇文章的时候我已经离开了Java开发者的阵营,开始在iOS上�做App开发,也就是在那个时候我决心要花几个月的时间把iOS从学习到就业过程的方方面面做一个系统的梳理,然而这件事却一再被搁浅,直到今天我终于开始动手做这件事情。

目前,iOS开发原生的语言有两种选择:Objective-C和Swift,除了原生的方案还有基于H5和React Native的解决方案。在这篇文章中,我们假设你选择使用原生的开发语言,那么要成为一名优秀的iOS开发者应该学习哪些东西以及储备哪些相关知识,要找到一份iOS工程师的工作应该做什么样的准备,这就是我想分享的一些东西。

学习编程语言

  1. C/C++
    要开发iOS的App,C和C++其实并不是必须的,但是如果你有一些C和C++的基础,不管是学习Objective-C还是Swift都会更加得心应手;另一方面,懂C/C++更容易�把握macOS和iOS开发中�那些所谓的low-level的东西。学习C语言我们推荐C语言之父Dennis M. Ritchie的神作The C Programming Language(中文名《C语言程序设计》)以及K. N. King的C Programming: A Modern Approach(中文名《C语言程序设计现代方法》),当然大名鼎鼎的C Primer Plus也是不错的选择。这些书不是每本都要看,而是要选择适合自己的书进行学习。学习C++的话,我们推荐比较容易上手的C++ Primer Plus以及用于提升水平的Thinking in C++(中文名《C++编程思想》)以及Effective C++More Effective C++

  2. Objective-C
    很多惯于使用Java或C#的程序员在刚接触到Objective-C的时候可能会觉得它的语法很别扭,那是因为很多面向对象的编程语言都使用了点语法来给对象发消息,但是考虑到Objective-C诞生的年代以及Smalltalk的影响力,它的中缀符语法也就不足为奇了。学习Objective-C的资料也是多如牛毛,Apress出版的水果系列的书就是不错的选择,但是水果系列的中文译本翻译质量都比较糟糕,因此不推荐阅读中文版。当然,也可以选择书虫系列的Objective-C Programming(中文名《Objective-C编程》)或者是更为经典的Programming in Objective-C(中文名《Objective-C程序设计》)。Objective-C的进阶读物是《Objective-C高级编程》和Effective Objective-C 2.0,后者是我强烈推荐的一本书,因为面试时有一定深度的Objective-C的问题这本书上几乎都能找到答案。

  3. Swift
    Swift是苹果公司在2014年发布的新编程语言,Swift的出现是要取代Objective-C成为iOS开发的首选语言,而且在不远的将来,Swift还可以�应用于很多的领域,就像Craig Federighi在WWDC上说的那样,Swift会成为软件开发领域具有主宰地位的语言。目前学习Swift最好的资料肯定是苹果官方的The Swift Programming Language以及Using Swift with Cocoa and Objective-C,书虫和水果系列也有讲解Swift的书籍。对于没有Objective-C基础的,我个人比较推荐Swift for Beginners(中文名《Swift基础教程》),对于有Objective-C基础的,“喵神”王巍原创的《Swifter: 100个Swift 2开发必备Tip》以及翻译的《函数式Swift》还是非常不错的。

结论:要从事iOS开发,有C语言的基础当然是更容易上手的,但确不是必须的,当然C++就更加不是必须的啦。Objective-C和Swift也不需要都要精通,可以选择一种语言进行学习,掌握一门语言后再�花一点时间去了解另一个语言�才是事半功倍的做法。我们推荐大家直接学习Swift,必定它是为了取代Objective-C而诞生的,但是由于Objective-C毕竟用了那么多年而且已经形成了一个很好很强大的生态系统,短时间内这个语言是不会消亡的,因此即使学习Swift来做iOS开发,仍然需要对Objective-C有一定程度的认识和了解,更重要的是掌握如何在Swift中如何调用Objective-C的东西。

学习iOS App开发

要学习iOS App开发,可以从构建用户界面开始,先掌握UIView、UIViewController、UIApplication等核心API的用法,掌握UIControl的事件处理以及手势识别等内容,在能够熟练的使用Storyboard�或手写代码的方式构建出用户界面以后,然后再研究网络、多线程、音视频、地图、定位、蓝牙、加速计、陀螺仪、动画、图文混排等内容来丰富App的内容并改善用户体验。

这个阶段推荐的参考书有书虫系列的iOS Programming(中文名《iOS编程》)和水果系列的Beginning �iOS Development(中文名《精通iOS开发》),这两本书目前都能找到Objective-C和Swift的版本,都比较适合入门。如果要提升开发水平,推荐阅读的The Core iOS Developer's Cookbook(中文名《iOS核心开发手册》)、More iPhone Development with Objective-C / More iPhone Development with SwiftPro Objective-C Design Patterns for iOS / Pro Design Patterns in SwiftProfessional iOS Programming(中文名《iOS高级编程》)以及iOS 7 Programming Pushing the Limits(中文名《iOS编程实战》)。

上面推荐的这些书在类似于亚马逊这样的电商网站上基本都能找到,还有一些比较优秀的参考书或者视频资源需要在国外的网站上在线购买。我个人比较喜欢AppCoda的Beginning iOS 9 Programming with Swift以及它的进阶读物Intermediate iOS 9 Programming with Swift,这套书的实战性非常强,属于项目驱动式的知识点讲解,而且内容非常成体系,但是如果你的英语不够好的话可以暂时不考虑它。

说明:目前国内外的网站上都能找到很多好的学习资源,选择这些学习资源的一个原则是一定要成体系,否则的话零碎的知识点对于初学者来说是很难自己把它们串联起来的。所以我个人强烈推荐AppCodaiOS Apprentice系列的教程。当然,要提升开发水平或者获取好的开发经验《iOS核心开发手册》和《iOS编程实战》也是我强烈推荐的,这两本书的中文翻译都非常棒,后者更是由美团移动翻译并推荐的。

精通App上架流程

作为一个iOS开发者,你要做的不仅仅是App的开发,真机测试和App上架应该是标配技能,关于这些内容不在这里赘述,有兴趣的可以参考我的另一篇文章《iOS开发笔记 - 上线流程》

掌握常用第三方库

我们这个行业有一句谚语叫“不要重复的发明轮子”,简单的说就是在开发的过程中不要做别人已经做过的重复劳动,直接站在巨人的肩膀人写自己的代码。我想所有的开发者都知道GitHub这个社会化编程的代码集散地,不管你用哪种语言做开发,在GitHub上总能找到很多别人做好的但是在你的项目中可以使用的资源,这就是所谓的第三方库,它是对原生API一个强有力的补充。在之前的文章《iOS开发中常用第三方库的整理》中,我曾经对iOS开发中常用的第三方库进行了简单的总结,再次我想做一个简单的补遗,主要是新涌现的基于Swift的第三方库。

  1. Alamofire - 相当于是Objective-C的第三方库AFNetworking对应的Swift版本,它和AFNetworking是同一个作者开发的,是一个非常优雅的基于HTTP协议的网络连接框架。
  2. Kingfisher - 相当于是Objective-C的第三方库SDWebImage对应的Swift版本,“喵神”王巍的作品,用于处理异步图片加载和缓存。
  3. SwiftyJSON - Swift中处理JSON数据的工具,相比Objective-C中YYModel之类的第三方库,SwiftyJSON只算得上是一个半自动化的JSON数据处理工具。
  4. Spring - 简化iOS动画效果开发的第三方库。
  5. SnapKit - 简化自动布局的第三方库,类似于Objective-C的第三方库Masonry。

想要了解更多的内容可以查看GitHub上的awesome-ios项目,该项目对Swift的各种资源做了一个详细的整理。

玩转开发相关工具

关于iOS开发的相关工具,我曾经在《iOS开发笔记 - 工具篇》中进行了一个简单的整理,当然这篇文章仍然在完善之中。另外在使用Xcode时,一些插件会让你的工作效率得到很好的提升,如下所示。

  1. KSImageNamed:帮助输入[UIImage imageNamed:]UIImage(named:)中的图片资源名的插件,通过自动弹出的上下文菜单可以选择图片资源名称而不是自行输入,同时还可以在左侧预览该图片并了解该图片的尺寸。
  2. XVim:在Xcode的编辑窗口中开启vim模式,这对于用惯了vim的开发者来说无疑是非常方便的,因为可以通过全键盘操作实现光标移动,代码的删除、复制、粘贴等操作。当然,如果你用惯了vim这些不用多说你都懂的。
  3. FuzzyAutocomplete:模糊自动补全功能插件,Xcode自带的代码补全只能在前面的所有字母输入正确的情况提供补全功能,但是使用该插件后提示内容会变得很多,选择起来可能会更加困难。
  4. XToDo:查找项目中所有带TODO、???、!!!等标记的地方,这样可以防止遗忘掉需要做的事情或者是代码中还存在bug的地方。
  5. VVDocumenter:自动生成文档注释的工具。
  6. ClangFormat:自动调整代码格式的工具。
  7. ColorSense:UIColor颜色输入辅助工具,在编写UIColor代码时,可以实时预览设定的颜色。
  8. XcodeBoost:包含多个辅助修改代码的小功能,例如自动将.m文件中方法的定义暴露到对应的.h文件中;直接输入正则表达式进行查找等。
  9. SCXcodeSwitchExpander:自动在switch的case中填写枚举值的插件。

�利用各种资源提升自己

  1. WWDC的视频和官方文档
  2. Github上的开源项目
  3. 技术网站和大咖的博客
    下面是一个技术网站和大咖们博客的列表,希望能够帮助你发现一些有用的东西。
博客名称 网址 说明
NSHipster http://nshipster.comhttp://nshipster.cn (中文) 相当棒的技术网站,每周都在更新
Big Nerd Ranch Blog http://blog.bignerdranch.com 书虫系列的书就是他们编写的
objc.io http://www.objc.io/ 有很多不错的文章
Ray Wenderlich http://www.raywenderlich.com 学徒系列的书就是他们编写的
iOS Developer Tips http://iosdevelopertips.com
iOS Dev Weekly http://iosdevweekly.com
OneV's Den http://onevcat.com 王巍的博客
破船之家 http://beyondvincent.com 周智勋的博客
唐巧的技术博客 http://blog.devtang.com 小猿搜题的开发者
念茜的博客 http://nianxi.net 号称代码女神,就职于支付宝,但是从来无图无真相
sunnyxx的技术博客 http://blog.sunnyxx.com 百度的孙源
Lancy's Blog http://gracelancy.com 猿题库开发者
王中周的技术博客 http://wangzz.github.io 就职于高德地图
萧宸宇 http://iiiyu.com
码农人生 http://msching.github.io
玉令天下的Blog http://yulingtianxia.com 就职于腾讯
不掏蜂窝的熊 http://www.hotobear.com
猫·仁波切 https://andelf.github.io
Why's Blog http://blog.callmewhy.com
Casa Taloyum http://casatwy.com
Kenshin Cui's Blog http://www.cnblogs.com/kenshincui 崔江涛的博客,适合初学者
刘坤的技术博客 https://blog.cnbluebox.com/blog/archives/
老谭笔记 http://www.tanhao.me 就职于腾讯
coderyi http://www.coderyi.com
雷纯锋的技术博客 http://blog.leichunfeng.com

制作一份优质的简历

粗制滥造的简历肯定是没有办法获得面试机会的,如果你获得了面试机会,面试你的这家公司多半也有问题。很多人的简历都跟网上能找到的模板几乎一致,如果你的简历也是如此,那么你怎么可能脱颖而出。还有人喜欢在简历中使用大量夸张的形容词或副词来突出自己的专业技能或工作经验,这些都是让面试官反感的东西。那么,如果才能制作一份优质的简历呢,从非技术的角度你至少可以在以下几个方面下功夫:

  1. 把简历放到网上。
  2. 简历要有创意。
  3. 使用SAR法则。
  4. 要严格的校对。

简历的内容大致可以分为一下几个部分。

搞定面试的各种问题

收到Offer后要做什么

入职后如何提升自己

  1. 向公司中的前辈们学习。
  2. 通过阅读完善知识结构。
  3. 学习如何进行自我营销。
iOS开发日记
Web note ad 1