成为 iOS 开发者 — 2023 年完整指南

看到这么多人投入 iOS 开发,我总是很兴奋。我们有一个很棒的社区,里面有很多有才华的人,而且这个社区还在不断扩大。

最近,我一直在与许多新开发人员交谈,他们与我分享的主要挑战之一是他们在起步时遇到困难,并且他们没有明确的学习路径,以便在他们的 iOS 中向前发展旅行。

在这篇文章中,我将介绍我对如何成为一名 iOS 开发人员的建议。请记住,这不是唯一的途径,而只是您成为 iOS 开发人员的可能途径之一。如果我处于他们的位置,这就是我会使用的策略。

精品教程推荐


- [《CSDN SwiftUI源码大全》](https://www.openswiftui.com/?gr_redirect=csdn-swiftui%e6%ba%90%e7%a0%81%e5%a4%a7%e5%85%a8)

- [《小专栏 SwiftUI教程》](https://www.openswiftui.com/?gr_redirect=%e5%b0%8f%e4%b8%93%e6%a0%8f-swiftui%e6%95%99%e7%a8%8b)

我需要计算机科学学位吗?

最简洁的答案是不!您不需要计算机科学学位即可成为软件开发人员。在过去 5 年多的时间里,作为编码训练营的讲师,我教过很多没有学位的学生,但他们后来都成为了优秀的开发人员。

话虽如此,如果您确实可以选择上学,没有债务,那就继续并获得学位。我只是不想让任何人背负 10 万美元的债务,认为这是成为软件开发人员的唯一途径。

如果您决定不获得学位,请记住,很少有工作需要学位。通常,这些工作来自大型非科技公司和教育机构。

人们经常问我,我在学校学到的知识有多少被用在了我的日常工作中。就我个人而言,我在实际工作中使用了我在学校学到的信息的 0.000000000000001%。我在工作中使用的大部分东西都是我自己学会的。这包括 Microsoft.NET、C# 语言、VB.NET、ASP.NET、iOS 等。

再说一次,如果你能负担得起大学并且可以 100% 无债务毕业,那就去上吧。但是不要认为上大学是成为软件开发人员的唯一途径。

编码训练营怎么样?

编码训练营是快速学习技术栈的好方法。与其在大学里花费 4 年和 10 万美元,不如花 4 个月和 1.5 万美元到 2 万美元。编码训练营节奏很快,作为一名学生,您需要每天消化这些信息。这种形式可能不适合所有人,一旦学生在作业、家庭作业等方面落后太多,就很难从中恢复过来。

再次重申,我不提倡借钱参加编码训练营。努力工作并节省 15,000 美元至 20,000 美元,然后参加训练营,完全没有债务。

请记住,编码训练营并不是什么神奇的地方,您可以在那里高枕无忧并在 12-16 周内成为一名开发人员。这就像说我需要减肥所以我获得了健身房会员资格但从未去过健身房。仅仅因为您支付了健身房会员费并不意味着您会自动减肥。为了减轻体重,您需要走上跑步机并开始燃烧这些卡路里。

每天您都会学习新概念并将其应用于构建应用程序。你将不得不非常努力地工作才能跟上节奏。如果您愿意投入时间并努力工作,那么编码训练营可能是一项巨大的投资。

免费的在线资源怎么样?

编程是那些你真的不需要学位或参加编码训练营就能找到工作的罕见职业之一。网上有无数的免费资源。这包括 YouTube 视频、书籍、文章、课程,甚至来自斯坦福等精英大学的免费讲座。

我在Kean Blog上找到了一篇很棒的帖子,其中列出了很多资源。请记住,并非帖子中讨论的所有资源都是免费的。

任何人都可以使用免费的在线资源学习编程。然而,我们在行业中并没有看到很多自学成才的开发人员。主要原因不是资源的质量,而是因为大多数人缺乏动力和一致性。一旦他们卡在某件事上,他们通常会放弃并转向不同的方向。

简单来说,大多数人都缺乏毅力。他们不会在问题上待得更久。他们不坚持,轻易放弃。

编程语言很简单

让我告诉你软件开发中最大的秘密。编程语言很容易学习。掌握一种语言后,您可以轻松过渡到任何其他语言。

在我的职业生涯中,我使用过 JavaScript、Java、C#、VB.NET、Turbo C、Python、Kotlin、Dart、Swift、Objective-C。我并没有积极地使用所有这些语言进行编程,但是由于大多数语言都是相似的,所以用不了很长时间就可以提高工作效率。

学习一门语言最重要的部分是确保你的基础扎实。这意味着,您应该知道如何创建变量、函数、条件、循环、模块等。一旦您熟悉了基础知识,您就可以开始学习任何您想要的编程语言。

Swift 官方参考书
Swift 编程:The Big Nerd Ranch

SwiftUI 或 UIKit

新开发人员面临的障碍之一是在 UIKit 与 SwiftUI 之间做出选择。这是一个有趣的问题,因为没有一个正确答案。我的建议是,新开发人员应该花 75% 的时间学习 SwiftUI,25% 的时间花在 UIKit 上。SwiftUI 是未来,所有新的开发都在 SwiftUI 中完成。

话虽如此,作为一名新开发人员,您很可能不会从事全新项目。这意味着您将处理遗留代码,这些代码可能是用 UIKit 编写的。这就是您的 25% 将派上用场的地方。如果你发现自己一直在处理遗留代码库,那么将 UIKit 的百分比增加到 50%。

绿地项目是一种不受先前工作强加的限制的项目。棕地项目是一种带有与场地当前状态相关的限制条件的项目。

我注意到新开发人员的一件事是他们希望快速看到进度。我不怪他们,如果我开始学习新东西,那么我也想尽快看到结果。与 UIKit 相比,SwiftUI 声明性语法以及 Xcode 预览允许开发人员快速构建他们的应用程序原型。

学习 SwiftUI 的另一个好处是,您可以在需要时轻松过渡到 React 或 Flutter。我并不是说你应该学习 SwiftUI 以转向 React 或 Flutter。我要指出一个事实,即 React、Flutter 和 SwiftUI 非常相似,通过学习一个框架,您将自动了解其他框架的基础知识。

你永远不知道,何时需要使用 React 来创建 Web 应用程序或使用 Flutter 来构建跨平台应用程序。

React 自 2013 年以来一直存在,与 SwiftUI 相比,它更加成熟。这使我们能够查看 React 应用程序并将 React 中的模式整合到我们的 SwiftUI 应用程序中。

源代码管理

像 Git 这样的源代码控制系统允许您跟踪代码库的更改并在团队成员之间进行协作。熟悉源代码控制系统的基本操作很重要,这样您就可以在工作中开始为您的项目做贡献。这些基本操作包括:

设置存储库
添加对暂存的更改
提交更改
推送更改以删除
创建和合并分支
Git(最流行的源代码控制系统)提供了更多的功能,但要开始,您应该学习足够多的知识以提高工作效率。

Git 可以以多种不同的方式使用。这包括终端界面和图形用户界面。如果您是一个喜欢视觉的人,那么请从图形用​​户界面开始。熟悉使用 Git 并执行上述操作。您甚至可以使用Xcode 中内置的源代码管理资源管理器。您可以在此处找到 Git GUI 客户端列表。

不要注意那些建议您必须使用终端才能使用 Git 的人。Git 可以以多种不同的方式使用,使用 Git 的图形用户界面没有任何问题。

要了解有关 Git 的更多信息,请查看以下资源:

Git YouTube 视频
Git 免费书籍
Xcode 和源代码管理——案例研究
Xcode 中的源代码管理

初级开发人员路线图

学习 iOS、Android 或任何其他技术的难点不是编程语言,而是框架。iOS 中有许多框架可用,它们都有特定的用途。这包括音频/视频 (AVFoundation)、Core Data、MapKit、SwiftUI、UIKit、AppKit 甚至第三方平台,包括 Firebase、Realm 等。

对于初级开发人员来说,从哪里开始变得混乱。我的建议是首先熟悉 Swift 语言。这意味着您应该知道如何创建变量、函数、循环和条件。你甚至可以转向高级的东西,比如闭包和泛型。

之后你的重点应该放在像 SwiftUI 这样的 UI 框架上。你应该花 75% 的时间学习 SwiftUI,25% 的时间花在 UIKit 上。随着越来越多的公司开始采用 SwiftUI,这一百分比每年都会发生变化。也许在接下来的 3-5 年内,您将只花费 5% 的时间来学习 UIKit,而您的核心重点将是 SwiftUI。

这里有一些资源可以帮助您开始使用 SwiftUI。

SwiftUI 100 天
iOS 和 Swift — 完整的 iOS 应用程序开发训练营
SwiftUI — 适用于任何 Apple 设备的声明式接口
一旦您熟悉了 Swift 和 SwiftUI,然后专注于学习如何使用 API (JSON)。这是构建 iOS 应用程序时最常见的操作。了解 GET 和 POST 请求以及如何成功解码响应并将其显示在屏幕上。除了使用 API 之外,还了解 POST 请求,以便您可以将信息发送到服务器。

在我的整个职业生涯中,我从事过数十个 iOS 项目,几乎所有项目的共同点是它们都使用某种 API。大多数时候,它是公司内部使用不同技术(如 .NET Web API、Ruby on Rails、Django 等)实现的 API。

这里有一些免费的 API,您可以使用它们在您的 iOS 应用程序中练习 JSON 解析和使用 JSON。

庞大的公共 API 列表
food2fork.ca
Platzi 假商店 API
JSON 占位符
我经常建议我的学生在编写一行代码之前确保 API 按预期工作。您可以使用POSTMAN等网络工具来执行网络请求并验证 API。

一般建议

编程不是心脏直视手术
尽管我已经在编码训练营教了很长时间,但我在每个队列中看到的一件事是学生害怕编写错误的代码。学生宁愿跳楼也不愿写错代码。我认为这深深植根于我们的教育体系,不同和独特的答案受到惩罚而不是受到赞赏。

在一次 TED 演讲中,肯·罗宾逊爵士谈到了一个被老师认为没有希望的年轻女孩。老师联系了她的父母,告诉他们认为孩子有学习障碍,上课注意力不集中。

她的父母带她去看专科医生。专家与家长讨论了他们孩子的情况。过了一会儿,医生带着孩子离开了房间。当他们离开房间时,专家打开了收音机。

令所有人惊讶的是,小女孩开始随着音乐跳舞。医生转向她的父母,告诉他们女孩没有病,她是一名舞蹈演员,你应该带她去舞蹈学校,他们也去了。

那个小女孩就是英国传奇芭蕾舞演员、舞者和编舞家吉莉安·琳恩 (Gillian Lynne)。她负责了一些历史上最成功的戏剧作品,她是一位千万富翁。

学校会扼杀创造力吗?
就像吉莉安·琳恩 (Gillian Lynne) 一样,我们体内都有创造力基因。不幸的是,随着我们进入学校和大学,这种创造力开始消失。学生因有创造性思维而受到惩罚,并被告知要走黄砖路。大学只关注学生如何获得好成绩而不是良好的教育。

我总是告诉我的学生,编写代码不像心脏直视手术。如果你犯了一个错误,没有人会死。可能发生的最坏情况是您的编辑器将给出语法错误,作为学习机会呈现。

没有人第一次写出完美的代码。每个人都会犯错误。最重要的是你从错误中吸取教训并提高自己成为更好的开发人员。

如果你害怕犯错,你就永远不会想出任何原创的东西——肯·罗宾逊爵士

好奇心对于成为一名优秀的开发人员也起着重要作用。不要遵循预定义的路径,而是尝试试验如果更改几行代码或调整行的顺序会发生什么。如果您选择的路径碰壁了,请不要气馁。你并没有在解决问题上失败,你只是了解到你的程序无法工作的其他几种方式。

作为一名新开发人员,您的主要目标是让程序正常运行。它不一定是最好和最有效的代码,它只需要正确工作即可。在你让它工作之后,你可以通过重构的过程让它变得更好。

重构是在不改变代码的整体功能的情况下,改变现有代码使其变得更好的原则。

微任务

那是 2004 年,我正在休斯顿大学学习 .NET Web 服务课程。我的任务将在几个小时内到期,但我被困住了。我只是无法理解任务的范围。每次开始实施解决方案时,我都不知所措。我感觉就像站在一座巨大的山前。山那么高,连山顶都看不到。

我决定从编码中休息一下。我知道我的方法行不通,我需要尝试不同的方法。我拿出记事本,写下完成作业所需的所有步骤。之后,我一次只专注于一个步骤。每次我完成一个步骤,我都会把它划掉。很快我就能够完成所有步骤,从而完成了作业。

我从这次经历中吸取的教训是,作为软件开发人员可以学习的最重要的技能之一就是将大任务分解为微任务。微任务代表较大任务的一个非常小的子集。完成与特定任务相关的所有微任务后,您的主要任务就完成了。由于您专注于单个问题,因此这种技术可以让您更快地移动。

新开发人员通常会看到一个编程问题,并被其庞大的范围所淹没。试着把它分解成更小的可管理的部分,然后只关注较小的部分。

将大任务分解为微任务是一项技能,随着您获得更多经验,您将获得这种技能。我的建议是始终将您的任务写在一张纸上(记住纸,它来自树木),然后在完成时将其勾选。这将直观地向您显示哪些任务已完成,更重要的是,它会让您有信心继续前进并尝试列表中的其他任务。

任务可以像在屏幕上显示几个文本框一样简单,甚至可以更改屏幕的背景颜色。主要思想是将其分解为您可以接受并能够在短时间内完成的粒度级别。

我的学生问的另一个问题是,他们应该先尝试较简单的任务还是先尝试较难的任务。我的建议是始终先从更简单的任务开始。原因是一旦你完成了更容易的任务,它会给你信心去解决困难的任务。如果您先尝试艰巨的任务并卡住了,那么即使是更简单的任务也会感到具有挑战性。您从完成简单任务中获得的信心将为您提供面对和征服艰巨任务的动力。

下次您要编写应用程序时,请写下与您的应用程序相关的所有任务。然后将每个任务进一步划分为微任务。现在你可以从每个微任务开始,只关注那个微任务。您会注意到,使用这种方法您可以更快地完成任务,并且会为您提供前进所需的鼓励。

谷歌和 StackOverFlow

成为开发人员的主要技能之一是独立。现在,信息触手可及。您遇到的每个编码问题都已得到解答,正等待被发现。您不再需要开车去当地图书馆并在杂志和书籍中搜索解决方案。您只需转到 Google 并输入您的问题,瞧!

除了在搜索引擎上搜索您的答案外,您还应该乐于寻求帮助。在需要时寻求帮助并没有错。有几个不同的论坛,您可以在其中发布您的编程问题。

我记得我还在上大学时参加过 ASP.NET 论坛。当时在学web开发所以在论坛上发了很多问题。后来,在我获得更多经验后,我开始帮助人们。我的贡献得到了认可,我在 2007 年获得了 Microsoft 最有价值专家 (MVP) 奖。

谷歌也有类似的计划(GDE),这些计划是根据开发者对社区的贡献来奖励的。如果您获得了 MVP 或 GDE,那么它肯定会在您的简历上看起来不错。

在论坛上提问时,请确保正确地将其形式化。不要只贴200行代码就问为什么不行。此类问题经常在在线论坛上被否决,如果您继续在没有任何背景的情况下发布此类问题,那么您的帐户可能会被暂停。

您需要解释您面临的确切问题以及您尝试过的解决方案。您提供的上下文越多,越有经验的开发人员会愿意帮助您。

StackOverFlow 准备了一份文档,其中说明了如何提出一个好的问题。您可以在此处阅读该文档 (https://bit.ly/3MJAVVE)。

调试

根据谷歌的说法,调试被定义为检测和消除软件代码中现有和潜在错误(也称为“错误”)的过程,这些错误可能导致软件代码出现意外行为或崩溃。

作为一名学生,你应该特别注意调试,因为你的大部分工作时间将花在维护和修复现有遗留代码库中的错误上。

在我早期的一个团队中,我正在使用 Chrome 开发人员工具教授 Web 开发调试。我强烈建议我所有的学生密切关注课堂上讨论的调试技术。有些做了,有些没有。毕业几个月后,我同届的一位学生回来感谢我教授调试。他告诉我,他在课堂上学到的调试技巧帮助他修复了很多错误,并让他能够在新工作中解决复杂的问题。

无论您使用何种编程语言或平台,它们都提供调试功能。调试可能会让人觉得无聊,甚至感觉是一个缓慢的过程,但如果应用得当,与良好的旧控制台日志相比,您可以更快地检测到错误。

我的简单规则是在前 5 分钟内使用日志定位问题或错误。如果我无法找到错误的来源,那么我会求助于调试。

宠物项目

促进学习的最好方法之一是从事你的副业/宠物项目。你的个人项目的主要目的是将你学到的所有技能整合到你自己的应用程序中。

这意味着您的业余项目应该是您热衷的事情。你的热情将推动项目的进展。我早期班级的一名学生对天文学充满热情。他使用课堂上讨论的概念来实现自定义 iOS 应用程序,以跟踪地球与各种来源的距离。在课堂上,当我们了解到如何使用 JSON API 时,他立即访问了 NASA 的网站并找到了满足他需求的相关 API。使用他在课堂上学到的概念,他能够将 API 集成到他自己的 iOS 应用程序中。

随着您学习新技能,看到您的项目不断发展总是令人鼓舞的。它还让您确信您在编码训练营中学到的知识是实用的,可以用于创建真实世界的应用程序。

因此,继续并开始你的激情项目吧。当您通过训练营学习获得新知识时,请将其应用到您的项目中。当您看到您的项目就在您眼前成长时,这种感觉很棒。

一旦项目足够成熟,您就可以将其包含在简历中。雇主总是对潜在员工的基于项目的工作感兴趣。你永远不知道,你和其他候选人之间的区别可能归结为你的宠物项目。

时事通讯

一百万年前,人们使用 Google 阅读器订阅 RSS 提要并阅读他们最喜欢的博客。我就是其中之一,喜欢在早上喝杯热咖啡阅读我的订阅。Good Reader后来被谷歌杀死,落入谷歌墓地。

请默哀片刻以示尊重……

如今,即使您可以管理自己的提要。大多数人依靠时事通讯来保持更新。我喜欢时事通讯,我已经订阅了其中的几个。时事通讯背后的主要思想是其他人负责策划关于特定主题的每周文章/视频。作为时事通讯的订阅者,您只需要提供您的电子邮件地址即可。

每周一次,在指定的一天,您将通过电子邮件收到一份精选内容列表。您需要做的就是打开电子邮件并浏览您感兴趣的文章。大多数时事通讯都会随意为文章撰写摘要。这将使您对文章内容有更好的了解,以及您是否有兴趣进一步阅读。

无论您使用什么技术栈来构建应用程序,您总能找到符合您需求的时事通讯。我个人订阅了从机器学习、React、iOS 开发甚至 Flutter 等领域的时事通讯。我强烈建议您订阅一些时事通讯以开始使用,您会惊讶地发现跟上行业所有最新动态是多么容易。

确保你每周分配时间来浏览你的时事通讯。我在周末的清晨浏览我的饲料。通过在周末查看我的时事通讯,我得到了所有更新提要的优势,因为大多数时事通讯都是在工作日发送的。

搜索时事通讯也非常简单。只需转到 Google 并搜索您最喜欢的主题,即“React Newsletter”。您将看到几个不同的选项。订阅您感兴趣的内容,然后坐下来享用一杯热咖啡。

以下是我订阅的一些 iOS 时事通讯:

iOS开发周刊
SwiftUI 周报
斯威夫特李周刊
萨伦维

推特

Twitter 是获取特定主题最新信息的绝佳媒介。我个人使用 Twitter 发布编码文章、视频和课程。除了分享我的内容外,我还关注了数百人,以便我可以向他们学习。

iOS 社区很幸运拥有许多优秀的内容创作者,他们定期以文章和视频的形式发布材料。

以下是一些要关注的内容创作者。

@twostraws
@cr_wells
@Kilo_Loco
@MengTo
@mecid
@Archetapp
@SwiftUILab
@dimsumthinking
@CodeWithChris
@azamsharp
@scottsmithdev
@rwenderlich
@stewartlynch
@twannl
@buildthatapp
@swiftandtips
@BigMtnStudio
@Sarunw
@seanallen_dev

图书

我们生活在一个阅读书籍变得过时的时代。您读的最后一本技术书籍是什么?你可能不记得了。我在同一条船上,我没有读那么多我应该读的书。作为一个初级开发者,多看书总是占优势的。

知识就是力量

如果您刚开始进行 iOS 开发,那么这里有一些关于书籍的建议。

尝试阅读关于一个主题的多本书。通过这种方式,您将从几个不同的角度学习技术。你不需要一次读完整本书。你可以每天阅读 30 分钟的大块书籍。读这本书可能需要更长的时间,但你会读完这本书。

如果您正在阅读一本编程书籍,那么练习书中教授的内容很重要。这意味着在您的编辑器中手动输入(而不是复制粘贴)代码并确保它按预期运行。

Swift Apprentice
SwiftUI Apprentice
UIKit Apprentice
SwiftUI by Tutorials
SwiftUI Projects
Swift for Complete Beginners
SwiftUI by Example

播客

我喜欢听播客。我每天散步、打扫卫​​生、整理车库甚至游泳时都会听它们。播客是消费知识的好方法,而且所有这些都是免费提供的。因此,下次您在天气好的时候外出散步时,请收听这些播客。

这里有一些您可能想要查看的 iOS 开发播客。

Swift by Sundell
Core Intuition
Kodeco Podcast
AppForce1
Empower Apps
Stacktrace
Under the Radar
Accidental Tech Podcast

下一步

成为软件开发人员的一大好处是您永远不会感到无聊。有太多东西要学了。Apple 每年都会举办 WWDC,他们会在会上宣布新框架和对现有框架的改进。WWDC 视频是让您了解最新 Apple 技术的绝佳方式。

除了只学习 iOS,我总是鼓励人们看看其他平台。例如,在熟悉 SwiftUI 之后,您可以看看 React 和 Flutter。即使您没有积极开发 React 或 Flutter 应用程序,向类似框架学习总是一个好主意。与 SwiftUI 相比,React 和 Flutter 是更成熟的框架。您可以将 React 中使用的模式和实践合并到您的 SwiftUI 应用程序中。

您还可以查看后端开发。如果你想留在 iOS 回声系统,那么Vapor是一个不错的选择。在 iOS 之外,您有很多不同的选择,包括 Node with Express、Ruby on Rails、ASP.NET Web API、Django、Go 等等。

知识永远不会被浪费。即使在今天,我几十年前学习和使用的东西仍然在巩固我的概念方面发挥着不可或缺的作用。

结论

好东西需要时间。遵循这条道路,不断学习并保持耐心。成为 iOS 开发者不是短跑,而是马拉松。做乌龟,不要做兔子。

精品教程推荐


加入我们一起学习SwiftUI

QQ:3365059189
SwiftUI技术交流QQ群:518696470

发表回复