如果你想知道如何成为一个专业的iOS开发者,这个清单就是我建议你要做的。我会从我作为5年的iOS顾问、8年的软件开发者以及一个HR——我在最近3年内雇佣了几个iOS开发者来处理我无暇顾及的工作——的经验来说明。这些是当我雇佣一个iOS开发者时会考虑的。这里的清单很重要,是一步一步递进的,在某些情况下,前一步甚至是后一步的必备条件(即必须的)。

1.学习软件技术

有很多描述软件构建方式的术语。我说的是技术,与术语是不相干的。你应该知道如何很好地构建软件——如何很好地开发它、测试它、调试它以及如何在最低限度上进行版本控制。如果你仍然对这些实践不太熟练,那就该学习了,在开始之前,我推荐阅读一下The Pragmatic Programmer。

2.学习如何使用版本控制

版本控制非常重要,所以我提了两次。对,它是软件技术的一部分,同时它也足够重要到单独说明。如果你计划和其他iOS开发者一起工作(即使你不打算),你绝对需要知道如何使用版本控制。它让你可以打点,回到以前的某个代码版本,并解释为什么你要做出更改。很有可能你会使用git,现在很多公司都是用的它,但你也可以检查一下他们使用的是什么。对于git,你应该知道:

  • 如何创建一个仓库(repo)
  • 如何克隆(clone)一个仓库
  • 如何提交(commit)和推送(push)到远端
  • 如何从远端拉取(pull)与合并(merge)更改
  • 如何检查你本地仓库的状态
  • 如何(以及什么时候)创建与合并分支(branch)
  • 如何创建标签(tag)(至少你应该在每次提交到App Store的时候做)

这些是基础——还有很多你可以用git做的事情,并且你可以(也应该)学习更多的东西。如果你还不知道git,可以从学习try.github.io开始

3.学习Swift或者Objective-C

如果你想要做一个专业的iOS开发,就需要了解Swift或者Objective-C(两个都了解最好)。对于一个初级职位,你应该至少要知道语法和大量的基础框架(对象、集合、数据类型、网络、JSON)。此外,你需要了解基础的面相对象概念,比如对象是什么、类是什么以及如何写一个方法。

你可以在参考the Beginning Swift course构建你的第一个Swift app时学习网络、JSON等等。或者你可以通过How to build a hybrid iOS app开始学习Objective-C。

而且你可以在iOS Boot Camp中学习任何你需要知道的关于Swift的内容。

4.学习iOS

如果你想要成为一个专业的iOS开发者,你就不得不了解iOS。这表示你需要对如何做下面的事情有一个好的理解:

  • 构建视图(使用Storyboard、xib或者纯代码——三者都了解会加分)
  • 通过多种控制来处理用户交互(按钮、开发、滑动条等等)
  • 在列表视图中显示数据
  • 显示警告框
  • 在视图之间处理导航和过渡
  • 显示图片、标签或者文本视图
  • 整合REST API并理解JSON

你还要知道view controller lifecycle和应用的生命周期

我在What skills would I need for a job as an iOS developer?中扩充了本节的内容,仅仅专注于你找到iOS工作需要做的。并且你可以在iOS Boot Camp中学习到大部分的技能,所以如果你还不了解iOS,我非常推荐你学习它。

5.构建一个app

如果你已经构建过一个app了,就已经证明了你知道如何构建一个app。而如果你知道如何构建一个app,对于潜在的雇主来说就比一些说了解Objective-C和iOS但却没有构建过任何内容的人更有价值。所以通过构建一个真实的app来证明你了解你要做的事情吧。

因为你这时候应该了解版本控制了,在构建你自己的app时就应该使用它。如果你在一个iOS工程上真实地使用版本控制,就会更加清楚什么文件应该忽略而什么不应该。

6.(可选,但高度推荐)提交你的app到App Store

我说这个可选是因为对一些雇主来说,你可能不需要提交一个app到Apple——可能团队中有一个高级开发者来处理或者可能只是把app发布到内部使用。但因为你可能需要发布你未来的雇主的app到App Store,你应该知道其过程。而自己做一遍是最好的学习方法。即使团队内有一个高级开发者负责提交app到Apple,也可能有时候你需要登录到iTunes Connext来处理更新的元数据、取消一次更新或者其他的事情。做这件事,就可以向你未来的雇主证明你了解App Store。

7.申请工作并展示你可以为他们做些什么

如果你想要专业地开发iOS,就需要申请一份工作。但在你做之前,思考一下:为什么一家公司想要雇佣你?为什么公司总是雇佣员工?

知道么,他们想要从你什么赚钱。他们想要销售你的工作然后获取比在你身上花费的更多的金钱。或者,如果他们准备精简开支,他们想要保留比花费在你身上的更多的金钱。无论哪种情况,他们都想要通过雇用你来增加他们的利益。

所以你的工作就是说服你未来的客户/雇主:

  • 你可以按时完成工作
  • 你可以在他们的预算内完成工作
  • 你可以帮助他们抵达他们的商业目标(即赚更多的钱)

大部分公司甚至不会问你这个。他们可能会做一个技术面试以及一个性格面试来看看你是否合适并且能帮助他们。但如果你明白他们想要从你的工作上赚钱并且清晰地沟通你可以如何做到,你就更有可能被雇佣。向他们展示你的iOS工作是你可以做的一种方式——你在向他们证明你可以完成工作。此外,如果你与一些公司员工有关系并且你可以获取一些参考或者被你认识的人雇佣,会更容易获取工作。所以在你继续提高你的技能和寻找工作时阅读一下focus on building relationships吧。


本文翻译自博文How to become a professional iOS developer,也就是如何成为一个专业的iOS开发者,我觉得要求比较基础,因此去除了专业二字。从一份建议的阅读清单看到的,本想看看如何变得更加专业的,不过作者写的很有条理,也非常注重版本控制系统,比较适合新手吧。

版权所有:http://blog.csdn.net/cloudox_

如何成为一个iOS开发者相关推荐

  1. [转] 一个iOS开发者的修真之路

    在微信上有童鞋问我iOS开发者的入门标准是神马?这个问题难到我了,而且贸然给一个答案出来的话,必定会有万千高手来喷. 凡人修仙,仙人修道,道人修真.当我们还是一个在青石板上蹲马步汗水涔涔的废柴时,或许 ...

  2. 一个iOS开发者的修真之路

    凡人修仙,仙人修道,道人修真.当我们还是一个在青石板上蹲马步汗水涔涔的废柴时,或许天空中偶尔会有御剑飞行的仙人路过.金色的阳光洒在仙人随风舞动的剑穗上,此时不禁会油然而生一种冲动,希望有一天能成为这样 ...

  3. iOS学习:一个iOS开发者的修真之路

    在微信上有童鞋问我iOS开发者的入门标准是神马?这个问题难到我了,而且贸然给一个答案出来的话,必定会有万千高手来喷. 凡人修仙,仙人修道,道人修真.当我们还是一个在青石板上蹲马步汗水涔涔的废柴时,或许 ...

  4. IOS开发:一个iOS开发者的修真之路

    在微信上有童鞋问我iOS开发者的入门标准是神马?这个问题难到我了,而且贸然给一个答案出来的话,必定会有万千高手来喷. 凡人修仙,仙人修道,道人修真.当我们还是一个在青石板上蹲马步汗水涔涔的废柴时,或许 ...

  5. 一个iOS开发者对tvOS SDK的初探

    http://www.cocoachina.com/ios/20151001/13652.html 作者:Chris Wagner  原文地址:tvOS SDK: An iOS Developer's ...

  6. 作为一个iOS开发者,应该继续钻研SwiftUI还是尝试接触Flutter了呢?

    5年 iOS 开发经验,日常爱好学习各种开发语言,对移动端有一线技术持续关注,Swift 狂热粉丝,推动 手淘iOS客户端落地 Swift,SwiftUI 实践者. (关注公众号-app不内卷,可以一 ...

  7. 一个ios开发者使用Android手机后的一些感想

    先给各位领导汇报一下我的情况: 苹果开发者,明天都带着MacBook满城跑. 苹果手机从3gs开始用起 今年将主力机型替换成小米9 主要体验: 1,云时代,苹果和安卓鸿沟早已被填平.作为一个已经全面云 ...

  8. 一个iOS开发者业余开发自己APP的经验分享

    14年12月,我发布了一款名为<老罗语录>的iOS客户端,到15年4月底,更新了三四个版本了,下载量已经快突破4000,下载量不多,但是自己收获的喜悦还是不少的.其实在我发布之前已经有几个 ...

  9. 一个iOS开发者的Flutter“历险记”

    1. 官方简介 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. 官方介绍: 快速开发: 毫秒级的热重载,修改后,您的应用界面会立即更新.使用丰富的.完 ...

最新文章

  1. [转]Asp.NET生成静态页面并分页
  2. iphone 一些小游戏.
  3. python web-Python的哪个Web框架学习周期短,学习成本低?
  4. spring cloud构建互联网分布式微服务云平台-docker部署spring cloud项目
  5. optee3.14.0 qemu_v8的环境搭建篇(ubuntu20.10)--终极篇
  6. centos中如何找出系统中 load 高时处于运行队列的进程
  7. android requestFocus的使用
  8. Metric Learning度量学习:**矩阵学习和图学习
  9. 实际体验SpanT 的惊人表现
  10. 禁用mysql的sleep函数_MySQL的sleep函数的特殊特现象
  11. python软件不用买吗_Python 3.3+中的软件包不需要__init__.py吗
  12. 利用划分树求解整数区间内第K大的值
  13. 大学计算机导学,大学计算机一级--导学.ppt
  14. Vue 引入 zepto
  15. centos7 net-snmp agentx
  16. yii 高级版后台清理前台的缓存
  17. i.MXU6LL - 制作烧录SD卡详细步骤
  18. 微信小程序意见反馈的实现
  19. 基于SSM bootstrap的JSP MYSQL路路通汽车租赁系统
  20. 【非原创】PHPMywind调用

热门文章

  1. 机器学习实践系列之3 - 人脸对齐(上)
  2. ShaderGraph节点——UV
  3. C++ Singleton的实现方法
  4. 排列组合和二项式定理
  5. 计算机如何恢复桌面,如何恢复计算机桌面图标不见了
  6. linux chrome ui字体,谷歌Chrome 69浏览器标签栏字体模糊的解决方法
  7. 目标检测中anchor的概念
  8. 一个基于信息论的人生观
  9. Docker神器之迅雷远程下载(群辉 Linux)
  10. 基于STM32的TLC2543驱动程序