如果您想成为一名iOS开发人员,该期待什么



在iOS方面,开发似乎像一个封闭的俱乐部。 要正常工作,您肯定需要一台Apple的计算机,该生态系统由一家公司密切监视。 有时还会从内部听到矛盾-有人说Objective-C语言很陈旧笨拙,有人说新的Swift语言太原始了。

尽管如此,开发人员进入该领域并感到满意。

这次,Marat Nurgaliev和Boris Pavlov向我们介绍了他们的经历-他们如何研究专业,第一次面试是如何进行的,为什么被拒绝。 专家是GeekBrains iOS开发部主任Andrei Antropov。

2016年,来自阿斯特拉罕地区的Marat Nurgaliev成为当地一家电视公司的移动开发人员。 这是他的第一次采访。 他刚从军队回来,却没有实践和经验,甚至忘记了仍然存在问题的理论。 Marat在移动开发方面的唯一经验是一篇有关分析Android应用程序中信息泄漏流的论文。 在采访中,他被问及有关学习,面向对象操作和其他理论的知识,但是马拉特无法掩盖知识上的空白。

尽管如此,他并没有被拒绝,而是被赋予了一项实际任务-在两周内使用API​​实现新闻列表的显示。 在iOS和Android下。 “如果我有使用Android的经验,那么甚至没有创建iOS版本的工具。 ios开发环境仅在Mac上可用。 但是两周后我回来了,表明我可以在Android上使用。 使用iOS,我不得不忙个不停。 结果,他们带走了我。 然后我住在阿斯特拉罕。 任何IT领域的薪水超过20的职位都适合我。”

谁是iOS开发人员


移动开发人员可以为任何便携式设备创建应用程序。 智能手机,平板电脑,智能手表和所有其他支持Android或iOS的平台。 移动开发的基本基础与通常的没有什么不同,但是由于特定的工具,它已在一个单独的方向上被选出来。 它使用自己的工具,编程语言和框架。

“要使用iOS,您需要一台macbook,因为只有它才具有必要的Xcode开发环境。 它是免费的,可以通过AppStore应用商店进行分发。 要安装,您必须拥有Apple ID,并且没有其他任何东西。 在Xcode中,您可以为任何东西(电话,平板电脑,手表)开发应用程序。 GeekBrains iOS开发部主任Andrei Antropov说:“所有功能都有内置的模拟器和编辑器。”

“但是,如果使用Hackintosh,开发环境也可以放在Windows上。 这是一个可行的方法,但是是回旋方案-认真的开发人员都没有这样做。 初学者购买旧的MacBook。 而且经验丰富的人通常可以负担得起最新模型。”


语言-Swift或Objective-C


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

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

根据Andrey所说,Swift是一种非常简单的语言,对初学者很友好。 它是强类型的,它使您可以在项目的编译阶段捕获许多错误,并且不正确的代码将不起作用。

“ Objective-C是一种相当古老的语言-与C ++年龄相同。 在开发之时,对语言的要求完全不同。 Swift出现时,其中存在很多错误,功能受到限制,语法很粗糙。 在Objective-C上,人们全力以赴。 他改善了很多年,那里的所有错误都得到纠正。 但是现在,我认为Swift不逊于Objective-C。 尽管甚至苹果公司在其项目中仍同时使用这两种软件。 语言在很大程度上是可以互换的,并且是相互补充的。 一种语言的结构和对象可以变成另一种语言的对象和结构。 很高兴知道这两种选择,但是对于初学者来说,Objective-C似乎常常令人生畏和难以理解。”


培训课程


“在我的第一份工作中,项目负责人训练了我,为项目的实施和设置提供了帮助,” Marat说,“但同时在Android和iOS上进行开发非常困难。 重建,从项目到项目,从语言到语言的转换都需要时间。 最后,我决定需要选择一个方向并进行研究。 我被Xcode界面和简单的Swift语法所贿赂。”

Marat进入GeekBrains的iOS开发部门。 起初这很容易,因为他从他的工作经验中了解很多事情。 年利率分为四个季度。 据安德烈(Andrei)讲,第一个基础仅给出基础:“ Swift语言的基础,基本框架的知识,网络交互,数据存储,应用程序的生命周期,控制器,基本架构,每个人都使用的主要库,应用程序中的多线程和并发。”

在第二季度,添加了Objective-C。 关于体系结构,基本编程模式的课程。 第三节课教了编写代码的正确方法。 它告诉工厂是什么,如何正确编写测试,形成项目,通过快速通道进行什么Git-Flow,持续集成。 第四个也是最后一个季度专门用于团队合作,实际任务和实习。

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


鲍里斯·帕夫洛夫(Boris Pavlov)表示:“ GeekBrains的一切进展都不尽人意,”他进入iOS开发的道路并不是最直接的。 这家伙是由他的祖母抚养长大的。 她是一位建筑师,数学家和设计师,并在鲍里斯(Boris)中灌输了对设计的热爱,并学会了手工绘画。 他的叔叔是一名系统管理员,他的侄子对计算机很感兴趣。

鲍里斯(Boris)是一名出色的学生,但对学习失去兴趣,并在九节课后离开了学校。 大学毕业后,他骑自行车去了,计算机走了过去。 但是一旦鲍里斯(Boris)遭受了脊椎损伤,就无法继续他的体育事业。

他开始与伊尔库茨克太阳地面物理研究所的老师一起学习C ++。 然后,他对游戏开发产生了兴趣,并尝试切换到C#。 最后,像马拉特一样,他也被斯威夫特贿赂。

“我决定在GeekBrains参加免费的入门课程。 老实说,他非常无聊,昏昏欲睡和难以理解,“鲍里斯回忆说,”老师谈到了这种语言的特征,但在没有揭示本质的情况下从一个话题飞到另一个话题。 课程结束后,我还是一无所知。”

因此,在入门课程之后,鲍里斯(Boris)进入的不是一年课程,而是一门为期三个月的短期课程,其中教授了该行业的基本知识。 “在那儿,我遇到了非常优秀的老师,并且对所有内容进行了清晰的解释。”


“我们经常受到批评,据说我们没有足够相关的培训手册,存在不准确之处。 但是课程会不断更新,并且老师总是谈论创新。 在我领导的小组中,第一季度之后已经有许多人被雇用。 当然,这些通常是具有编程经验的人,”安德烈说,“另一方面,所有知识都不能在一门课程中传达。 生活中的网络客户端交互无法容纳两个小时的十次讲座。 而且,如果您只参加课程而什么也不做,则将没有足够的知识。 如果您一年四季都在练习,那么按照这种速度,只有懒惰不会起作用。 因为该行业的需求很大。”

图片

您可以查看iOS开发人员的最新职位空缺并注册新职位空缺


工作时间


但是,无论是马拉特还是鲍里斯,都找不到工作容易。

“一些大公司长期以来一直在Objective-C上开发iOS应用程序,并继续支持旧的代码库。 不幸的是,我没有强硬的论据来强迫他们只使用Swift。 马拉特说,尤其是那些使用“不碰有效的”规则的人,极客们很少关注Objective-C在Geekbrains的发展方向。 它更像是一个发现事实的角色。 但是我采访过的每家公司都问有关Objective-C的问题。 而且由于我的研究集中在Swift上,就像我以前的工作一样,我在面试中遭到拒绝。”

鲍里斯说:“学习之后,我一个人只知道可以创建最简单应用程序的最肤浅的基础知识。当然,这还不足以完成工作,但我对此感到满意。 在伊尔库茨克很难找到工作。 更确切地说,什么都没有。 我决定在其他城市搜索。 按职位空缺数量,最相关的是克拉斯诺达尔,莫斯科和圣彼得堡。 我决定去圣彼得堡-靠近欧洲。

但事实证明一切并不那么乐观。 甚至连大三学生都被问到他不知道的事情。 我还没有找到工作。 我为“谢谢”而工作,积累了经验。 我知道这不是我想要的,但是我很感兴趣,它推动了我。 我想获得知识。”

安德烈(Andrei)认为,新移民不应找工作,而应找实习。 如果知识很少,那么当不支付实习费用时这是正常的。 Andrei建议在已经建立工作流程的大公司空缺职位。

“在了解软件开发流程的工作原理时,根据您的需求,导航和查找进一步的工作将变得更加容易。 有人从事独立开发,自己制作游戏,他自己将游戏倒入商店,并自己从中获利。 有人在有严格规定的大公司工作。 有人在按需订购软件的小型工作室中赚钱,在那里他们可以观察整个过程-从头创建项目到将其放入商店。”


薪水


与其他开发人员一样,iOS开发人员的薪水取决于问题是“莫斯科还是俄罗斯”。 但是由于行业的特殊性-大量的远程工作,搬迁机会和不在区域市场上工作的机会-这些数字越来越接近彼此。

图片

根据薪水计算器“ My Circle”的数据,iOS开发人员的平均薪水略低于140,000卢布

“水平很低的大三学生通常免费或象征性地工作-20至3万卢布。 如果小三被有意地接任,他将从中得到50至8万。 中间人收到100到150,有时甚至多达200。少于200的签名者没有。 我认为他们的薪水大约是200-300。 和蒂姆利德犬分别为300。




求职面试


“第一次采访是在Skype上进行的。 令我惊讶的是,鲍里斯回忆说,那是Google,然后我才搬到圣彼得堡,开始寻找工作。 我收到了空缺的iOS开发人员的回复。 不是初级,不是中间人,不是签名者-只是开发人员。 我很高兴,开始与经理通讯。 我被要求完成技术任务:我不得不编写有关Chuck Norris的笑话应用程序。 我写的 有人告诉我一切都很酷,并安排了一次在线面试。

我们打了电话。 一个好女孩和我说话。 但是他们并没有询问有关了解该语言的任何问题-只是不同的逻辑任务,例如“时间15:15,时针和分针之间的度数是多少?”或“支柱10米,蜗牛在下午爬升3米,在晚上下降1米。 她会爬上几天?”,还有更多类似的事情。

然后有一个非常奇怪的问题-关于我对苹果的爱以及对蒂姆·库克的感觉。 我说这对整个公司都是有利的,但对它却是不利的,因为金钱对它很重要,而不是产品。

关于Swift的问题开始时,我的知识仅够用于编程模式和OOP的基础知识。 我们说了再见,一个星期后,他们给我打了电话,说我不合适。 实际上,我从中学到了很多:需要知识,需要很多知识-理论和实践。”

安德烈说:“每个人在面试中首先要求的是控制者的生命周期。 他们喜欢问一些简单的编程模式。 请务必询问使用流行库的经验。 肯定会有一个问题,即Swift值类型与引用类型之间的差异,自动引用计数和内存管理。 他们可能会询问如何在应用程序中实现数据存储以及是否实现了网络请求。 询问REST和JSON的基础知识。 Junior不会要求特定的事物和微妙之处。 至少我不是在问。”

鲍里斯则有不同的经历:“即使我要求实习,执行技术任务并说我的薪水并不重要,只要足以租一套公寓,他们仍然拒绝我。 我读了一些文章,试图了解初学者的招聘者需求。 但是主要集中在理论上。 由于某些原因,他们向英超联赛提出了问题,这些问题与初学者无关。”

马拉特更幸运。 现在,他在一家运输公司工作,负责iOS的指导工作,并继续在学院任教。 “由于我独自负责iOS,因此我的工作仅根据实现为我设置的任务的能力来评估,而不是通过理论知识来评估。”


社区活动


安德烈(Andrei)居住在下诺夫哥罗德(Nizhny Novgorod),他说即使在那里也已经形成了一个优秀的社区。 曾几何时,他是Python的后端开发人员,但他的朋友们将他拖到了移动开发中-现在,他本人正在激昂每个人都去做。

“国际社会通常通过Twitter进行交流。 人们保留自己的博客,在Youtube上录制视频,在播客上互相呼叫。 有一天,我对HQTrivia团队负责人的演讲有疑问。 这是一次由数百万人同时进行的美国测验。 我发了推文,他回答了我,我们聊了,我很感谢。 该社区非常友好,这很棒。”

推荐阅读清单
初级水平:

中级水平:

高级级别:

Source: https://habr.com/ru/post/zh-CN461709/


All Articles