1. 提升你的英语水平
虽然知乎er的平均水平比较高,但是现实情况是很大一部分程序员的英文水平是不太过关的。那大概需要提升到什么水平呢?我觉得达到比较流畅的阅读技术文档及书籍,配合英文字幕可以比较轻松的观看wwdc的session的水平就可以了。
如果英语水平不过关,甚至没法成为一个合格的程序员。
说来惭愧,我刚实习的时候,碰到陌生的API都是复制到百度查怎么用,实际上API注释+官方文档很详细准确的说明了API如何使用。我不想看官方文档及注释就是怕看那一堆堆的英文,导致API使用过程中一知半解,浪费了不少时间。
经常在开发吹水的群里见别人发一个截图提问如何解决,实际上截图里的英文提示就已经很明确的说明了原因及解决方案。如果英语水平达标,就不会出现这种比较尴尬的提问了。
至于如何提升,下一个背单词的app吧。扇贝单词、百词斩这些都可以。不停的背4级单词就行,已经能涵盖绝大多数常用词了。
开发过程中碰到不明白意思的API,查清楚每个单词的意思,做到见名知意,而且开发中常用的单词也就那么一些,不要和我最开始的时候一样复制百度,然后只知道这一串英文大概是这样用的。实际上下次碰到了还是需要再查一遍.....
最后,尝试阅读纯英文的技术书籍,不用怕,书籍中的大部分单词都是开发中接触过的。配合查词app肯定能啃下来。当第一本纯英文书籍看完后,后面的都不是问题了。
当然,这个过程不是一蹴而就的。我毕业后基本每天都坚持在背单词的app上打卡,不要三天打鱼两天晒网,男人最重要的就是持久。
2.使用google而不是百度
查问题和文档一定一定优先使用谷歌而不是百度。大部分开发中碰到的问题你都能在stackoverflow上找到解决方案,并且还有不少优秀的回答附带了best practice。解决了问题以后试着去回答问题,这样印象会比较深刻。
3.swift入门
不要纠结先学oc还是先学swift。
目前对于iOS开发来说,swift和oc都是必备技能。当然入门肯定要二者选一,重要的是你开始学,而不是纠结在我该学哪门语言,然后一直不肯迈出第一步。
目前个人建议从swift开始入门,除非你的公司明确使用oc。
首先学习语法,推荐阅读swift-apprentice。书卖的比较贵,csdn上应该有网友分享的,记得找swift5及以上版本的。
https://www.raywenderlich.com/
记住raywenderlich这个网站,有空的时候根据自身需求把里面的书籍都阅读一遍,基本都是精品
语法学完了读UIKit-Apprentice
https://www.raywenderlich.com/books/uikit-apprentice/
读完上面两本你对iOS开发大体有一个概念了。如果你是为了找一份iOS开发相关的工作,现在回过头去学oc。 如果公司不要求OC, 做一个了解就行
4.oc入门
学oc我比较推荐看培训机构的视频,印象中几年前iOS开发培训机构一大堆,部分教学视频还是非常适合初学者入门的。这些视频最大的优势是比较系统,从c语言-oc语法-uikit等,能比较轻松的带你一步步接触到一个完整的应用是如何开发的,对初学者来说最怕的就是不知道学习方向。而这些教学视频是根据为学员找工作培训设计的,作为入门教程很不错。
5.1-3年开发经验
首先推荐两本书,必读!必读!而且推荐反复多次阅读。
Effective Objective-C 2.0m.douban.comm.douban.comObjective-C高级编程 (豆瓣)m.douban.comm.douban.com
另外需要不断完善你知识库,非iOS相关书籍的推荐:http权威指南、正则表达式必知必会、mysql必知必会这几本书。这几本书阅读起来比较轻松,而且实用比较强。
除了读书之外,还推荐把UIKit中自己常用类的API仔仔细细的看一遍。详细阅读官方注释!肯定有你没注意到的细节。
很多开发者在这个阶段有一个误区,吸收了大量知识后,就非常想把它们应用在程序中。实际开发要避免这个问题,要追求最简单最稳定的实现方式,能不hack的就不hack,遵循best practice。不要了解一点runtime就想方设法在应用中method swizzling。开发是为了实现业务,稳定性放在第一位。实际99%的业务都用不上runtime的各种黑魔法。各种设计模式和架构同理,这些都会随着你开发经验的增长在你脑海中有一个清晰的概念,等到积累够了,自然就能运用自如,而不是在一知半解的情况下各种乱用。
还有就是业务代码需要逻辑清晰,实际写代码时可以参照下面的例子,标注出序号,配合注释说明每一块的目的。这样不论是自己以后回看还是对于同事,基本一眼就能清楚业务逻辑和代码意图
// 1
let allPhotosOptions = PHFetchOptions()
allPhotosOptions.sortDescriptors = [
NSSortDescriptor(
key: "creationDate",
ascending: false)
]
// 2
allPhotos = PHAsset.fetchAssets(with: allPhotosOptions)
// 3
smartAlbums = PHAssetCollection.fetchAssetCollections(
with: .smartAlbum,
subtype: .albumRegular,
options: nil)
// 4
userCollections = PHAssetCollection.fetchAssetCollections(
with: .album,
subtype: .albumRegular,
options: nil)
这段代码摘自raywenderlich,该网站getting start系列非常合iOS开发者了解新框架,保姆式的入门教学
https://www.raywenderlich.com/11764166-getting-started-with-photokit
6. 3年以上开发经验
这个阶段一般都是公司主力,已经形成了自己的代码风格并且对自己的学习路径有了规划。根据公司的app制定学习计划,比如图像处理App和智能硬件App所需要学习的内容就不太一样,提高自己的深度。
推荐看wwdc的session,最新的技术及最佳实践都在视频里面了。developer App上可以直接下载观看,链接在下面。记得用Safari打开
https://http://apps.apple.com/cn/app/apple-developer/id640199958apps.apple.comapps.apple.com
广度方面,掌握一门脚本语言,python,shell都可以。把重复的事情都写成自动化脚本,能极大的节约时间。有精力还可以学一门后端语言,自己搭个服务器,写写接口。前后端都了解了之后就能很清晰的知道如何设计一个好的接口,相信对整个程序生涯都会有帮助的
7.总结
归纳下来,就是希望大家多去系统性的去读书学习。你可能更愿意每天逛逛论坛看看技术贴,但这实际上对开发水平提升有限。静下心来认真的看完我推荐的这些书,然后根据自身需要再选择其他书籍阅读。