上周,我民意调查在Twitter上,他要求为iOS工程师分享最好的学习资料,结果被众多的回复所淹没。这篇文章很有见地,我认为把结果汇编成一篇文章会很好,我在这里做了这件事,并添加了一些我自己的建议。 最受推荐有几个异常值得到了大量的推荐。 初学者,免费 斯坦福大学的课程CS193p是迄今为止最受推荐的资源。我自己浏览了最初的几段视频,被这些视频中充斥着的信息惊呆了。 本课程有几点需要注意: - 它专注于迅捷。我们仍处于过渡期,大多数公司仍在使用UIKit,但在SwiftUI上投入时间已经是值得的。在这门课上你学到的不仅仅是迅捷。
- 本课程的主要目标受众是学生,并假设他们熟悉编程基础知识。如果您正在从头开始学习编程,您可能需要考虑先阅读其他资源。尽管如此,学习编程的最好方法就是构建东西。
初学者,免费 第二推荐的课程是Swift 100天. 它不是唯一的资源用Swift进行黑客攻击通过保罗·赫德逊. 斯威夫图也有类似的课程鈥 百日速腾,还有很多其他的文章和视频。 不像斯坦福德的课程,Swift 100天关注的不是应用程序开发,而是Swift本身。如果你刚刚开始学习编程,这门课是为你准备的。 初学者,付费 这似乎是一个罕见的短名单,但这是一个例外。我自己也没能查出来,但如果你看一下课程内容,它的确是这样完成. 如果你现在把注意力集中在193年的话,我会认为这是最好的选择现在的技术,如UIKit 初级/中级,免费/付费 这个网站不需要介绍。我发现自己经常在日常工作中使用它。Ray Wanderlich是查找特定主题教程的最佳去处。但它不止这些。它也有课程 ,视频 ,文章,甚至书. 如果你对某个iOS主题感兴趣,你很可能会在这个网站上找到它。 第一方资源我很惊讶没有人把苹果的官方文档放在帖子里。如果我在6-8年前做过这个调查,我相信很多人都会加入推荐行列。如今,有大量的第三方资源往往比苹果提供的更好。但尽管如此,苹果文档始终是我获取苹果技术所有信息的主要来源。 - 苹果WWDC视频-可能是我的主要来源。你经常可以找到其他地方没有的信息。这有点不幸,因为在视频中找到你要找的东西可能很耗时。
- 苹果开发者文档–虽然不如以前那么好,但仍然是一种宝贵的资源
- 苹果教程:为iOS开发应用程序——苹果公司最近在教程创作业务上进行了创业。我看过这些教程,它们制作精良,内容丰富,但有点枯燥。
- Swift编程语言——读这本书是我学习斯威夫特的方法。这是一本简明扼要、写得很好的书,是一本必读的书。你可以用课程来学习。
- 快速进化–编程指南并不涵盖所有内容,有时有关最新Swift功能的最佳信息来源可能是Swift演进建议
- 人机界面指南(HIG)–设计是iOS开发的主要部分,通常依赖工程师提供他们的输入。这是任何苹果工程师的必读资源。
- 苹果开发者新闻和更新–将其添加到您的RSS阅读器中,以了解平台上的最新更新。例如,关于切换到新Xcode vResion或SDK的截止日期。
- Swift论坛–如果您想随时了解最新的提案或参与讨论
太多了技术在苹果的平台上,你不能先发制人地学习一切。当你有一个项目和你有需要的时候最好。当你有需要的时候,你就有了学习的动力。写一篇文章也是一个很好的激励因素。 其他建议我收到了大量的推荐信投票. 在这里我将列出那些没有进入候选名单的,没有特别的顺序。提醒一句:苹果平台在不断发展,请确保你阅读的内容是最新的。 我想自己添加几个链接:iOS开发周刊 ,N希普斯特 ,动动脑子 ,爱的可可 ,一小口可可 , 克里斯托夫·扎布罗夫斯基 , 奥勒贝格曼 ,增量 . 软件工程软件工程不仅仅是学习一门编程语言和一个你正在工作的平台。如果你想在其他工程师中获得竞争优势,特别是如果你没有CS学位,那就花时间学习基础知识。好消息是学位被高估了——你可以自己学习他们所做的一切,甚至更多。你又不需要什么特殊的设备什么的。 你不应该把所有的东西都列在不完整的清单上: - 吉特. Git上有很多资源,但是我发现Pro Git公司最有洞察力
- 发布和分支策略. 我想基于主干的开发是最好的分支策略,尤其是对于较大的团队。
- 算法和数据结构. 学习它们有很多方法。我喜欢算法设计手册,史蒂文·斯基纳和算法概论,托马斯·H·科尔曼。前者比较平易近人。
- 终端和Bash. 对我来说,Swift很大程度上取代了Bash作为脚本语言的选择,但我发现自己仍然经常使用Bash。不管你的选择,它也总是值得学习的正则表达式 .
- 并发和反应式编程. 并发性是UI开发中最具挑战性的一个方面,有很多东西需要学习:快速结构化并发 ,联合收割机并行编程,同步机制,线程。这很难,但需要练习。
- 数据库. 学习关系数据库的基础知识,核心数据,尝试使用 数据库直接地说,你基本上已经做好了移动开发的准备。
- 持续集成和交付. 不仅仅是工具,还有实践。你可以从马丁·福勒的书中学到很多文章. 如果你想潜得更深,有一些好的书也可以。但它也是工具。在iOS上,这在很大程度上意味着学习 法斯特兰以及您选择的CI/CD工具。首先,可以在GitHub上创建一个示例项目,然后使用 GitHub操作 .
- 函数式程序设计. 它终于成为主流了。如果您使用Swift,那么您已经在使用函数式编程了。但是Swift并不是一种纯粹的函数式语言,它可以是一种非常有趣的学习语言。我建议计算机程序的结构与解释(Lisp版本)或Haskell(可能是最成熟和最有文档记录的纯函数式语言)。
- 软件联网. 几乎每个应用都使用网络。你一般不会需要除了了解基本的HTTP和JSON之外,还需要了解它在幕后的工作原理。我建议学习网络协议的基础知识:TCP/IP、DNS、HTTP规范。像这样的工具查尔斯允许您检查网络流量金丝鲨可以帮助你学习网络协议。邮递员是探索和测试API的最佳工具。 开放应用程序接口是如何记录API的
- 最佳实践. 我认为“最佳实践”往往弊大于利,尤其是走极端。但它们仍然是有价值的。我建议通过代码已完成史蒂夫·麦康奈尔写的,跳过了其他一切。
- 过程. 阿特拉斯有一个很好的向导敏捷的 .
- 软技能. 这可能比清单上的一半更重要。我不认为学习它们有捷径。你必须练习,并且时刻注意你正在做的事情。阅读下面的书可以让你对工程的这方面有一些有价值的见解:务实的程序员,神话中的人月,放养猫,团队的五大障碍。
这份名单还远未完成。软件工程专业有很多种。只要你用心去做,你就能学到任何东西。我认为增加新的视角是有价值的。例如,如果你是一个移动工程师,这并不意味着你不能探索一些后端开发来扩展你的视角(尤其是现在可以用Swift来完成)。 访谈所以你学会了iOS和软件工程的一切,现在你完成了,对吗?不完全是。有软件工程,也有软件工程面试。这两者之间有一些交叉点,但在面试中完成编码挑战与你通常在工作中所做的非常不同。 主要区别在于速度。你不仅需要快速地在规定的时间内完成一项任务,还需要向面试官解释你的想法,使之更加复杂。所以,当你准备和优化速度时,设定一个计时器是至关重要的,并练习解释你在做什么。 幸运的是,有很多工具可以帮助你准备面试。黄金标准是破解编码面试,这是最好的资源,可以帮助你准备。我也建议 leetcode. 另一个很好的资源是技术面试手册. 除非你想错过一些特殊的面试机会,否则你会错过一些机会。 最后的想法每个人在软件工程中的道路是不同的。技术含量高,需要大量的时间投入。但它也可以是非常有益和有趣的。我希望你能从这篇文章中发现一些有用的资源,它们会激励你学习新的东西! 如果您对列表有任何建议,请随时打开公关在GitHub或上伸出援手在Twitter上对我说。我打算让这篇文章保持最新。
|