如果你想成为一名 iOS 开发者,需要注意什么

如果你想成为一名 iOS 开发者,需要注意什么

从 iOS 的外部来看,开发似乎是一个封闭的俱乐部。为了工作,你肯定需要一台苹果电脑;生态系统由一家公司严格控制。从内部来看,有时你也能听到矛盾——有人说 Objective-C 语言古老而笨拙,有人说新的 Swift 语言太粗糙。

尽管如此,开发商还是进入了这个领域,一旦进入,他们就会感到满意。

这次,马拉特·努尔加利耶夫(Marat Nurgaliev)和鲍里斯·巴甫洛夫(Boris Pavlov)向我们讲述了他们的经历——他们如何学习这个职业,如何通过第一次面试,为什么遭到拒绝。院长安德烈·安特罗波夫 (Andrey Antropov) 担任专家 iOS开发学院 在极客大脑。

2016 年,来自阿斯特拉罕地区的 Marat Nurgaliev 来到当地一家电视公司找到了一份移动开发人员的工作。这是他第一次接受采访。他刚从部队回来,没有实践和经验,连理论都忘记了,他已经对理论产生了疑问。 Marat 在移动开发方面的唯一经验是他关于分析 Android 应用程序信息泄漏流的论文。采访中,马拉特被问及自己的学习、面向对象编程等理论,但马拉特无法掩饰自己知识上的差距。

不过,他并没有被拒绝,而是给了他一个实际的任务——在两周内实现使用API​​​​显示新闻列表。适用于 iOS 和 Android。 “如果我在 Android 上有过任何经验,那么甚至没有一个工具可以创建 iOS 版本。 iOS应用程序开发环境仅适用于Mac。但两周后我回来展示了我可以在 Android 上做什么。对于 iOS,我必须即时弄清楚。最后他们带走了我。然后我住在阿斯特拉罕。任何工资在二十以上的 IT 工作都适合我。”

iOS 开发者是谁?

移动开发人员为任何便携式设备开发应用程序。智能手机、平板电脑、智能手表以及所有其他支持 Android 或 iOS 的平台。移动开发的基本原理与常规开发没有什么不同,但由于特定的工具,它被分成了一个单独的方向。它使用自己的工具、编程语言和框架。

“要使用 iOS,你需要一台 MacBook,因为只有它才有必要的 Xcode 开发环境。它是免费的,并通过 AppStore 分发。要安装,您需要有您的 Apple ID,仅此而已。在 Xcode 中,您可以为任何东西开发应用程序 - 手机、平板电脑、手表。 GeekBrains iOS 开发部主任 Andrey Antropov 表示:“一切都有一个内置的模拟器和编辑器。”

“但是如果你使用 Hackintosh,开发环境可以安装在 Windows 上。这是一个有效但迂回的选择——没有一个认真的开发人员会这样做。初学者买一台旧MacBook。经验丰富的人通常买得起最新型号。”

语言 - Swift 或 Objective-C

几乎所有 iOS 开发都是使用 Swift 编程语言完成的。它出现于五年前,现在正在逐渐取代旧的 Objective-C 语言,Apple 已在其所有应用程序中使用该语言 30 多年。

“Objective-C 已经积累了巨大的代码库,因此仍然需要两种语言的开发人员,具体取决于公司、其任务和应用程序。许多年前编写的应用程序都是基于 Objective-C 的。所有新项目都默认使用 Swift 开发。现在,Apple 正在做很多事情,以尽可能方便地同时开发手机、平板电脑、手表和 MacBook。相同的代码可以在任何地方编译和运行。这以前没有发生过。对于 iOS,我们使用 Swift 进行开发,对于 MacOS,我们使用 Objective-C。”

Andrey 表示,Swift 是一种非常简单的语言,对于初学者来说很友好。它是严格类型化的,这使您可以在项目编译阶段捕获许多错误,并且错误的代码根本无法工作。

“Objective-C 是一门相当古老的语言——与 C++ 语言同龄。在开发的时候,对语言的要求是完全不同的。当 Swift 出现时,它有很多 bug,功能有限,语法也很粗糙。人们忙于研究 Objective-C。它已经改进了很多年,所有错误都已得到纠正。但现在我认为 Swift 和 Objective-C 一样好。尽管苹果仍然在其项目中使用这两种方法。这些语言在很大程度上可以互换并且相互补充。一种语言的结构和对象可以转换为另一种语言的对象和结构。了解这两个选项固然很好,但对于初学者来说,Objective-C 常常显得令人生畏和困惑。”

训练

“在我的第一份工作中,我的老板对我进行了培训,帮助我实施和建立项目,”Marat 说,“但同时在 Android 和 iOS 上工作很困难。重建、从一个项目切换到另一个项目、从一种语言切换到另一种语言都需要时间。最后我决定,我需要选择一个方向并学习它。我被 Xcode 的界面和 Swift 的简单语法所吸引。”

Marat 进入 GeekBrains 的 iOS 开发部门。起初很容易,因为他从工作经验中知道了很多东西。年度课程分为四个季度。根据 Andrey 的说法,第一个只给出了非常基础的知识:“Swift 语言的基础知识、基本框架、网络、数据存储、应用程序生命周期、控制器、基本架构、每个人都使用的主要库、多线程和并行性的知识。应用程序”。

第二季度添加了 Objective-C。课程是关于架构和基本编程模式的。在第三季度,他们教授正确的代码编写风格。它解释了什么是工厂,如何正确编写测试,创建项目,什么是 Git-Flow,通过快速通道进行持续集成。第四个也是最后一个季度致力于团队合作、实践作业和实习。

“第一季度很简单,”Marat 说,“但后来我开始学习 Objective-C 编程,研究设计模式、Solid 原理、Git-Flow、项目架构、应用程序的单元和 UI 测试、设置自定义动画——然后我的学习就变得有趣了。”

“我在 GeekBrains 的起步并不顺利,”鲍里斯·巴甫洛夫 (Boris Pavlov) 说道,而且他的 iOS 开发之路总体来说并不是最直接的。这个男孩是由他的祖母抚养长大的。她是一名建筑师、数学家和设计师,向鲍里斯灌输了对设计的热爱,教他手绘和绘画。他的叔叔是一名系统管理员,他的侄子对计算机很感兴趣。

鲍里斯是一名优秀的学生,但九年级后失去了学习兴趣并离开了学校。大学毕业后,他开始骑自行车,电脑逐渐淡出人们的视线。但有一天鲍里斯脊椎受伤,这使他无法继续他的体育生涯。

他开始跟随伊尔库茨克日地物理研究所的一位老师学习 C++。然后我对游戏开发产生了兴趣并尝试转向C#。最后,像 Marat 一样,他被 Swift 语言迷住了。

“我决定参加 GeekBrains 的免费入门课程。说实话,他很无聊、迟钝、难以理解,”鲍里斯回忆道,“老师只讲了语言的特点,但从一个话题到另一个话题,却没有透露本质。当课程结束时,我还是什么都不懂。”

因此,在入门课程结束后,鲍里斯没有参加为期一年的培训,而是参加了为期三个月的短期课程,教授该职业的基础知识。 “我在那里找到了非常好的老师,他们把一切都解释得非常清楚。”

“我们经常受到批评,据称我们的培训手册并不完全是最新的,存在不准确之处。但课程不断更新,老师也总是讲创新。在我领导的团队中,许多人在第一季度后找到了工作。当然,通常这些人都是有编程经验的人,”Andrey 说,“另一方面,不可能在一门课程中传达所有知识。生活中的网络客户互动不可能用十个两小时的讲座来概括。而如果你只去上课而不做其他事情,那么你的知识就不够。如果你全年每天都在学习,那么按照这个速度,只有懒惰的人才找不到工作。因为这个行业的需求量非常大。”

如果你想成为一名 iOS 开发者,需要注意什么

你能看到最多的 最新职位空缺 适用于 iOS 开发人员并订阅新的。

工作

但马拉和鲍里斯都没有那么容易找到工作。

“一些大公司长期使用 Objective-C 开发 iOS 应用程序,并继续维护旧的代码库。不幸的是,我没有令人信服的论据来强迫他们只使用 Swift。尤其是那些使用“不要碰有效的东西”规则的人,Marat 说,“Geekbrains 很少关注 Objective-C 方向。它更多的是一种信息性质。但我面试过的每家公司都询问过 Objective-C。由于我的研究重点是 Swift,就像我之前的工作一样,我在面试中遭到了拒绝。”

鲍里斯说:“学习之后,我自己只了解了最肤浅的基础知识,在这些基础知识的帮助下,我可以创建最简单的应用程序。”“对于工作来说,这当然是不够的,但我对此感到很高兴。在伊尔库茨克很难找到工作。更准确地说——完全不是。我决定去其他城市看看。就职位空缺数量而言,克拉斯诺达尔、莫斯科和圣彼得堡最为相关。我决定去圣彼得堡——离欧洲更近。

但事实证明一切并不那么美好。即使是小辈,他不知道的事情也会被原谅。我还没有找到工作。我正在为“谢谢”而工作,积累经验。我知道这不是我想要的,但我很感兴趣,这激励着我。我想获得知识。”

安德烈认为,新移民应该寻找实习而不是工作。如果你的知识很少,那么实习没有报酬也是很正常的。安德烈建议向已经建立工作流程的大公司申请初级职位空缺。

“当您了解软件开发流程的工作原理时,根据您的愿望导航和找到进一步的工作将变得更加容易。有些人开始独立开发,为自己制作游戏,上传到商店,然后自己获利。有些人在一家有严格规则的大公司工作。有些人在制作定制软件的小型工作室中赚钱,在那里他们可以观看整个过程 - 从从头开始创建项目到将其交付到商店。”

薪水

iOS 开发人员的薪水与其他开发者一样,取决于“莫斯科还是俄罗斯”这个问题。但由于该行业的特殊性——大量远程工作、调动机会以及不在区域市场工作——这些数字越来越接近。

如果你想成为一名 iOS 开发者,需要注意什么

根据我的圈子薪资计算器,iOS开发者的平均薪资略低 140 000卢布.

“处于非常低水平的初级人员通常是免费工作或象征性地工作——20至30万卢布。如果有目的地任命一个后辈来担任他的职务,他将获得五万到八万的报酬。中年人收到的金额从 50 到 80 不等,有时甚至高达 100。老年人收到的金额不少于 150。我认为他们的工资在200-200左右。相应地,对于团队负责人来说,这个数字超过了 200。”

如果你想成为一名 iOS 开发者,需要注意什么

采访

“第一次面试是在 Skype 上进行的。令我惊讶的是,是谷歌,”鲍里斯回忆道,“当时我刚刚搬到圣彼得堡,开始找工作。我收到了一份 iOS 开发人员职位的申请。不是初级、中级、高级——只是一名开发人员。我很高兴并开始与经理通信。我被要求完成一项技术任务:我必须编写一个关于查克·诺里斯的笑话的应用程序。我写的。他们告诉我一切都很好并安排了在线面试。

我们互相打电话。一个漂亮的女孩跟我说话。但他们并没有问任何关于语言能力的问题——只是各种逻辑问题,例如“时间是15点15分,时针和分针之间有多少度?”或者“一根柱子长10米,一根柱子长3米,一根柱子长1米,一根柱子长XNUMX米。”蜗牛白天爬XNUMX米,晚上爬XNUMX米。”她需要多少天才能爬到山顶?”,还有几个类似的。

然后还有一些非常奇怪的问题——我为什么喜欢苹果以及我对蒂姆·库克的感觉如何。我说整个公司对他来说是积极的,而不是消极的,因为对他来说重要的是钱,而不是产品。

当有关 Swift 的问题开始出现时,我的知识只够编程模式和 OOP 基础知识。我们告别了,一周后他们给我回电话说我不适合。事实上,我从中获得了丰富的经验:你需要知识,你需要大量的知识——理论和实践。”

Andrey 说,“面试时每个人被问到的第一件事就是控制器的生命周期。他们真的很喜欢要求一些简单的编程模式。他们肯定会询问你使用流行图书馆的经验。肯定会有一个关于 Swift 值类型与引用类型的差异、关于自动引用计数和内存管理的问题。他们可能会问他们如何在应用程序中实现数据存储,以及是否实现了网络请求。他们会询问 REST 和 JSON 的基础知识。初级者不会被要求提供具体的事情和微妙之处。至少我不会问。”

鲍里斯则有不同的经历:“即使当我要求实习、完成技术任务并说薪水对我来说并不重要,只要够租一套公寓时,我仍然被拒绝。我阅读文章,试图了解招聘人员对新人的需求。但他们大多在理论上失败了。出于某种原因,他们向大联盟提出了与新人无关的问题。”

马拉比较幸运。现在他在一家运输公司工作,独自负责iOS部门,同时继续在学院学习。 “由于我是 iOS 的唯一负责人,因此我的工作评估仅取决于我执行分配给我的任务的能力,而不是我的理论知识。”

社区

安德烈住在下诺夫哥罗德,他说即使在那里也已经形成了一个伟大的社区。曾几何时,他是一名Python后端开发人员,但他的朋友把他拉进了移动开发领域——现在他自己也鼓励大家这样做。

“国际社会通常通过 Twitter 进行交流。人们撰写自己的博客、在 YouTube 上录制视频、互相邀请观看播客。有一天,我对 HQTrivia 团队领导的演讲有疑问。这是一款美国问答游戏,有数百万人同时玩。我在推特上给他写信,他回复了我,我们交谈了,我感谢他。社区非常友好,这很棒。”

推荐文献清单初学者级:

平均水平:

先进的水平:

来源: habr.com

添加评论